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 2278499376,PR_kwDOAMm_X85uhFke,8997,"Zarr: Optimize `region=""auto""` detection",2448579,open,0,,,1,2024-05-03T22:13:18Z,2024-05-04T21:47:39Z,,MEMBER,,0,pydata/xarray/pulls/8997,"1. This moves the region detection code into `ZarrStore` so we only open the store once. 2. Instead of opening the store as a dataset, construct a `pd.Index` directly to ""auto""-infer the region. The diff is large mostly because a bunch of code moved from `backends/api.py` to `backends/zarr.py`","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8997/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2273401533,PR_kwDOAMm_X85uPt_n,8991,Add argument check_dims to assert_allclose to allow transposed inputs (#5733),408363,open,0,,,1,2024-05-01T12:05:40Z,2024-05-04T21:42:26Z,,FIRST_TIME_CONTRIBUTOR,,0,pydata/xarray/pulls/8991," - [x] Closes #5733 - [x] 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/8991/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2034500760,PR_kwDOAMm_X85hnplA,8536,Speed up localize,14371165,open,0,,,2,2023-12-10T19:24:40Z,2024-05-04T20:20:01Z,,MEMBER,,1,pydata/xarray/pulls/8536," - [ ] 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/8536/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2279042264,PR_kwDOAMm_X85ui13E,8999,Port negative frequency fix for `pandas.date_range` to `cftime_range`,6628425,open,0,,,0,2024-05-04T14:48:08Z,2024-05-04T14:51:26Z,,MEMBER,,0,pydata/xarray/pulls/8999," Like `pandas.date_range`, `cftime_range` would previously return dates outside the range of the specified start and end dates if provided a negative frequency: ``` >>> start = cftime.DatetimeGregorian(2023, 10, 31) >>> end = cftime.DatetimeGregorian(2021, 11, 1) >>> xr.cftime_range(start, end, freq=""-1YE"") CFTimeIndex([2023-12-31 00:00:00, 2022-12-31 00:00:00, 2021-12-31 00:00:00], dtype='object', length=3, calendar='standard', freq='-1YE-DEC') ``` This PR ports a bug fix from pandas (https://github.com/pandas-dev/pandas/issues/56147) to prevent this from happening. The above example now produces: ``` >>> start = cftime.DatetimeGregorian(2023, 10, 31) >>> end = cftime.DatetimeGregorian(2021, 11, 1) >>> xr.cftime_range(start, end, freq=""-1YE"") CFTimeIndex([2022-12-31 00:00:00, 2021-12-31 00:00:00], dtype='object', length=2, calendar='standard', freq=None) ``` Since this is a bug fix, we do not make any attempt to preserve the old behavior if an earlier version of pandas is installed. In the testing context this means we skip some tests for pandas versions less than 3.0. - [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst` ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8999/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2194953062,PR_kwDOAMm_X85qFqp1,8854,array api-related upstream-dev failures,14808389,open,0,,,15,2024-03-19T13:17:09Z,2024-05-03T22:46:41Z,,MEMBER,,0,pydata/xarray/pulls/8854,"- [x] towards #8844 This ""fixes"" the upstream-dev failures related to the removal of `numpy.array_api`. There are a couple of open questions, though: - `array-api-strict` is not installed by default, so `namedarray` would get a new dependency. Not sure how to deal with that – as far as I can tell, `numpy.array_api` was not supposed to be used that way, so maybe we need to use `array-api-compat` instead? What do you think, @andersy005, @Illviljan? - `array-api-strict` does not define `Array.nbytes` (causing a funny exception that wrongly claims `DataArray` does not define `nbytes`) - `array-api-strict` has a different `DType` class, which makes it tricky to work with both `numpy` dtypes and said dtype class in the same code. In particular, if I understand correctly we're supposed to check dtypes using `isdtype`, but `numpy.isdtype` will only exist in `numpy>=2`, `array-api-strict`'s version does not define datetime / string / object dtypes, and `numpy.issubdtype` does not work with the non-`numpy` dtype class). So maybe we need to use `array-api-compat` internally?","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8854/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 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 2269295936,PR_kwDOAMm_X85uBwtv,8983,fixes for the `pint` tests,14808389,open,0,,,0,2024-04-29T15:09:28Z,2024-05-03T18:30:06Z,,MEMBER,,0,pydata/xarray/pulls/8983,"This removes the use of the deprecated `numpy.core._exceptions.UFuncError` (and multiplication as a way to attach units), and makes sure we run the `pint` tests in the upstream-dev CI again.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8983/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2196272235,PR_kwDOAMm_X85qKODl,8856,Migrate indexing and broadcasting logic to `xarray.namedarray` (Part 1),13301940,open,0,,,0,2024-03-19T23:51:46Z,2024-05-03T17:08:11Z,,MEMBER,,1,pydata/xarray/pulls/8856," This pull request is the first part of migrating the indexing and broadcasting logic from `xarray.core.variable` to `xarray.namedarray`. I intend to open follow-up pull requests to address additional changes related to this refactoring, as outlined in the [proposal for decoupling lazy indexing functionality from NamedArray](https://github.com/pydata/xarray/blob/main/design_notes/named_array_design_doc.md#plan-for-decoupling-lazy-indexing-functionality-from-namedarray). - [ ] 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/8856/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2275404926,PR_kwDOAMm_X85uWjVP,8993,call `np.cross` with 3D vectors only,14808389,closed,0,,,1,2024-05-02T12:21:30Z,2024-05-03T15:56:49Z,2024-05-03T15:22:26Z,MEMBER,,0,pydata/xarray/pulls/8993,"- [x] towards #8844 In the tests, we've been calling `np.cross` with vectors of 2 or 3 dimensions, `numpy>=2` will deprecate 2D vectors (*plus*, we're now raising on warnings). Thus, we 0-pad the inputs before generating the expected result (which generally should not change the outcome of the tests). For a later PR: add tests to check if `xr.cross` works if more than a single dimension is present, and pre-compute the expected result. Also, for property-based testing: the cross-product of two vectors is perpendicular to both input vectors (use the dot product to check that), and its length (l2-norm) is the product of the lengths of the input vectors.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8993/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2203689075,PR_kwDOAMm_X85qjXJq,8870,Enable explicit use of key tuples (instead of *Indexer objects) in indexing adapters and explicitly indexed arrays,13301940,closed,0,,,1,2024-03-23T04:34:18Z,2024-05-03T15:27:38Z,2024-05-03T15:27:22Z,MEMBER,,0,pydata/xarray/pulls/8870," - [ ] Towards #8856 - [ ] 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/8870/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2276732187,PR_kwDOAMm_X85ubH0P,8996,Mark `test_use_cftime_false_standard_calendar_in_range` as an expected failure,6628425,closed,0,,,0,2024-05-03T01:05:21Z,2024-05-03T15:21:48Z,2024-05-03T15:21:48Z,MEMBER,,0,pydata/xarray/pulls/8996," Per https://github.com/pydata/xarray/issues/8844#issuecomment-2089427222, for the time being this marks `test_use_cftime_false_standard_calendar_in_range` as an expected failure under NumPy 2. Hopefully we'll be able to fix the upstream issue in pandas eventually.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8996/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2266442492,PR_kwDOAMm_X85t4NhR,8976,Migration of datatree/ops.py -> datatree_ops.py,479480,closed,0,,,4,2024-04-26T20:14:11Z,2024-05-02T19:49:39Z,2024-05-02T19:49:39Z,CONTRIBUTOR,,0,pydata/xarray/pulls/8976,"I considered wedging this into core/ops.py, but it didn't look like it fit there. This is a basic lift and shift from datatree_/ops.py to core/datatree_ops.py I did fix the document addendum injection and added a couple of tests. - [x] Contributes to migration step for miscellaneous modules in Track merging datatree into xarray #8572 - [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/8976/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2204914380,PR_kwDOAMm_X85qnPSf,8872,Avoid auto creation of indexes in concat,35968931,open,0,,,15,2024-03-25T05:16:33Z,2024-05-01T19:07:01Z,,MEMBER,,0,pydata/xarray/pulls/8872,"If we create a `Coordinates` object using the concatenated `result_indexes`, and pass that to the `Dataset` constructor, we can explicitly set the correct indexes from the start, instead of auto-creating the wrong ones and then trying to overwrite them with the correct indexes later (which is what the current implementation does). - [x] Possible fix for #8871 - [x] 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/8872/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2241526039,PR_kwDOAMm_X85skMs0,8939,avoid a couple of warnings in `polyfit`,14808389,closed,0,,,14,2024-04-13T11:49:13Z,2024-05-01T16:42:06Z,2024-05-01T15:34:20Z,MEMBER,,0,pydata/xarray/pulls/8939,"- [x] towards #8844 --- - replace `numpy.core.finfo` with `numpy.finfo` - add `dtype` and `copy` parameters to all definitions of `__array__`","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8939/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2267803218,PR_kwDOAMm_X85t8pSN,8980,Complete deprecation of Dataset.dims returning dict,35968931,open,0,,,6,2024-04-28T20:32:29Z,2024-05-01T15:40:44Z,,MEMBER,,0,pydata/xarray/pulls/8980," - [x] Completes deprecation cycle described in #8496, and started in #8500 - [ ] ~~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/8980/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2270984193,PR_kwDOAMm_X85uHk70,8986,clean up the upstream-dev setup script,14808389,closed,0,,,1,2024-04-30T09:34:04Z,2024-04-30T23:26:13Z,2024-04-30T20:59:56Z,MEMBER,,0,pydata/xarray/pulls/8986,"In trying to install packages that are compatible with `numpy>=2` I added several projects that are built in CI without build isolation (so that they will be built with the nightly version of `numpy`). That was a temporary workaround, so we should start thinking about cleaning this up. As it seems `numcodecs` is now compatible (or uses less of `numpy` in compiled code, not sure), this is an attempt to see if CI works if we use the version from `conda-forge`. `bottleneck` and `cftime` now build against `numpy>=2.0.0rc1`, so we can stop building them without build isolation.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8986/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2272299822,PR_kwDOAMm_X85uL82a,8989,Skip flaky `test_open_mfdataset_manyfiles` test,5635139,closed,0,,,0,2024-04-30T19:24:41Z,2024-04-30T20:27:04Z,2024-04-30T19:46:34Z,MEMBER,,0,pydata/xarray/pulls/8989,"Don't just xfail, and not only on windows, since it can crash the worker ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8989/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2271670475,PR_kwDOAMm_X85uJ5Er,8988,Remove `.drop` warning allow,5635139,closed,0,,,0,2024-04-30T14:39:35Z,2024-04-30T19:26:17Z,2024-04-30T19:26:16Z,MEMBER,,0,pydata/xarray/pulls/8988,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8988/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2271652603,PR_kwDOAMm_X85uJ122,8987,Add notes on when to add ignores to warnings,5635139,closed,0,,,0,2024-04-30T14:34:52Z,2024-04-30T14:56:47Z,2024-04-30T14:56:46Z,MEMBER,,0,pydata/xarray/pulls/8987,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8987/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2262468762,PR_kwDOAMm_X85tqnJm,8973,Docstring and documentation improvement for the Dataset class,2005723,closed,0,,,7,2024-04-25T01:39:02Z,2024-04-30T14:40:32Z,2024-04-30T14:40:14Z,CONTRIBUTOR,,0,pydata/xarray/pulls/8973,"The example in the doc-string of the `Dataset` class prior to this commit uses an example array whose size is `2 x 2 x 3` with the first two dimensions labeled `""x""` and `""y""` and the final dimension labeled `""time""`. This was confusing due to the fact that `""x""` and `""y""` are just arbitrary names for these axes and that no reason is given for the data to be organized in a `2x2x3` array instead of a `2x2` matrix. This commit clarifies the example. Additionally, this PR contains updates to the documentation, specifically the `user-guide/data-structures.rst` file; the updates bring the documentation examples into alignment with the doc-string change. Unfortunately, I wasn't able to build the documentation, so this will need to be checked. (I followed the instructions [here](https://docs.xarray.dev/en/stable/contributing.html#contributing-to-the-documentation), but despite `cfgrib` working fine, I got an error about how it wasn't a valid engine.) See issue #8970 for more information. - [X] Closes #8970 ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8973/reactions"", ""total_count"": 1, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 1, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2212435865,PR_kwDOAMm_X85rAwYu,8885,add `.oindex` and `.vindex` to `BackendArray`,13301940,closed,0,,,8,2024-03-28T06:14:43Z,2024-04-30T12:12:50Z,2024-04-17T01:53:23Z,MEMBER,,0,pydata/xarray/pulls/8885," this PR builds towards - https://github.com/pydata/xarray/pull/8870 - https://github.com/pydata/xarray/pull/8856 the primary objective is to partially address > 2. Implement fall back `.oindex`, `.vindex` properties on `BackendArray` base class. These will simply rewrap the `key` tuple with the appropriate `*Indexer` object, and pass it on to `__getitem__` or `__setitem__`. These methods will also raise DeprecationWarning so that external backends will know to migrate to `.oindex`, and `.vindex` over the next year. ---- - [ ] 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/8885/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2231711080,PR_kwDOAMm_X85sCbN-,8921,"Revert `.oindex` and `.vindex` additions in `_ElementwiseFunctionArray`, `NativeEndiannessArray`, and `BoolTypeArray` classes",13301940,open,0,,,9,2024-04-08T17:11:08Z,2024-04-30T06:49:46Z,,MEMBER,,0,pydata/xarray/pulls/8921," As noted in https://github.com/pydata/xarray/issues/8909, the use of `.oindex` and `.vindex` properties in coding/* appears to have broken some backends (e.g. scipy). This PR reverts those changes. We plan to bundle these changes into a separate backends feature branch (see [this comment](https://github.com/pydata/xarray/pull/8885#issuecomment-2036001828), which will be merged once we are confident about its impact on downstream dependencies. - [ ] Closes #8909 - [ ] 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/8921/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2240600694,PR_kwDOAMm_X85shCWz,8933,Use array_api compliant dtype,14371165,open,0,,,0,2024-04-12T17:30:51Z,2024-04-30T03:57:57Z,,MEMBER,,1,pydata/xarray/pulls/8933," - [ ] 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` Notes: * For duckarrays, use _dtype[_generic] * For actual np.ndarrays, use np.dtype[np.generic] * np.dtype is too specific in general and it's probably not needed in most of their array_api functions. * _DTypeBase-class in np? * Mixing dtypes from np and xp is discouraged: https://github.com/data-apis/array-api/issues/582 * Using asarray seems to be the recommended way. ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8933/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2267780811,PR_kwDOAMm_X85t8kgX,8979,Warn on automatic coercion to coordinate variables in Dataset constructor,35968931,open,0,,,2,2024-04-28T19:44:20Z,2024-04-29T21:13:00Z,,MEMBER,,0,pydata/xarray/pulls/8979," - [x] Starts the deprecation cycle for #8959 - [x] Tests added - [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst` - [ ] ~~New functions/methods are listed in `api.rst`~~ - [ ] Change existing code + examples so as not to emit this new warning everywhere. ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8979/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2268058661,PR_kwDOAMm_X85t9f5f,8982,Switch all methods to `dim`,5635139,closed,0,,,0,2024-04-29T03:42:34Z,2024-04-29T18:24:56Z,2024-04-29T18:24:55Z,MEMBER,,0,pydata/xarray/pulls/8982," I _think_ this is the final set of methods - [x] Closes #6646 - [ ] 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/8982/reactions"", ""total_count"": 1, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 1, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2267810980,PR_kwDOAMm_X85t8q4s,8981,Enable ffill for datetimes,5635139,closed,0,,,5,2024-04-28T20:53:18Z,2024-04-29T18:09:48Z,2024-04-28T23:02:11Z,MEMBER,,0,pydata/xarray/pulls/8981,"Notes inline. Would fix #4587 ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8981/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 1949782787,PR_kwDOAMm_X85dJLvY,8332,Add invert option to DataArray/Dataset.stack(),92899389,open,0,,,9,2023-10-18T13:38:38Z,2024-04-29T16:29:40Z,,FIRST_TIME_CONTRIBUTOR,,0,pydata/xarray/pulls/8332,"This brings in the option to stack all dimensions *except* for one or more dimensions listed. I find this very useful for quickly iterating over all the combinations of dimensions except for one (i.e. you have a number of input parameters that are parameterized and one time dimension, and you want to calculate some time response for all the combinations of these input parameters and store them in the time-row corresponding to the appropriate combination of inputs). I played around with implementing `to_stacked_array()` for `DataArray`, but this made less sense in the end since that method was really designed for Datasets. - [x] Addresses #8278 - [ ] Tests added (added one for DataArray, just now realizing I should have one for Dataset) - [ ] 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/8332/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2261855627,PR_kwDOAMm_X85togwQ,8969,CI: python 3.12 by default.,2448579,closed,0,,,2,2024-04-24T17:49:25Z,2024-04-29T16:21:20Z,2024-04-29T16:21:08Z,MEMBER,,0,pydata/xarray/pulls/8969,"1. Now that numba supports 3.12. 2. Disabled `pint` on the main environment since it doesn't work. Pint is still installed in the `all-but-dask` env, which is still runs python 3.11 for this reason. ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8969/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2267711587,PR_kwDOAMm_X85t8VWy,8978,more engine environment tricks in preparation for `numpy>=2`,14808389,closed,0,,,7,2024-04-28T17:54:38Z,2024-04-29T14:56:22Z,2024-04-29T14:56:21Z,MEMBER,,0,pydata/xarray/pulls/8978,"Turns out `pydap` also needs to build with `numpy>=2`. Until it does, we should remove it from the upstream-dev environment. Also, `numcodecs` build-depends on `setuptools-scm`. And finally, the `h5py` nightlies might support `numpy>=2` (`h5py>=3.11` supposedly is `numpy>=2` compatible), so once again I'll try and see if CI passes. - [x] towards #8844","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8978/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2244518111,PR_kwDOAMm_X85suNEO,8946,Fix upcasting with python builtin numbers and numpy 2,1828519,open,0,,,18,2024-04-15T20:07:42Z,2024-04-29T12:38:55Z,,CONTRIBUTOR,,0,pydata/xarray/pulls/8946,"See #8402 for more discussion. Bottom line is that numpy 2 changes the rules for casting between two inputs. Due to this and xarray's preference for promoting python scalars to 0d arrays (scalar arrays), xarray objects are being upcast to higher data types when they previously didn't. I'm mainly opening this PR for further and more detailed discussion. CC @dcherian - [ ] Closes #8402 - [ ] 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/8946/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2262478932,PR_kwDOAMm_X85tqpUi,8974,Raise errors on new warnings from within xarray,5635139,closed,0,,,2,2024-04-25T01:50:48Z,2024-04-29T12:18:42Z,2024-04-29T02:50:21Z,MEMBER,,0,pydata/xarray/pulls/8974," Notes are inline. - [x] Closes https://github.com/pydata/xarray/issues/8494 - [ ] User visible changes (including notable bug fixes) are documented in `whats-new.rst` --- Done with some help from an LLM — quite good for doing tedious tasks that we otherwise wouldn't want to do — can paste in all the warnings output and get a decent start on rules for exclusions","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8974/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 1997537503,PR_kwDOAMm_X85fqp3A,8459,Check for aligned chunks when writing to existing variables,5635139,closed,0,,,5,2023-11-16T18:56:06Z,2024-04-29T03:05:36Z,2024-03-29T14:35:50Z,MEMBER,,0,pydata/xarray/pulls/8459,"While I don't feel super confident that this is designed to protect against any bugs, it does solve the immediate problem in #8371, by hoisting the encoding check above the code that runs for only new variables. The encoding check is somewhat implicit, so this was an easy thing to miss prior. - [x] Closes #8371, - [x] Closes #8882 - [x] Closes #8876 - [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/8459/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2021386895,PR_kwDOAMm_X85g7QZD,8500,Deprecate ds.dims returning dict,35968931,closed,0,,,1,2023-12-01T18:29:28Z,2024-04-28T20:04:00Z,2023-12-06T17:52:24Z,MEMBER,,0,pydata/xarray/pulls/8500,"- [x] Closes first step of #8496, would require another PR later to actually change the return type. Also really resolves the second half of #921. - [x] 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/8500/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2254350395,PR_kwDOAMm_X85tPTua,8960,Option to not auto-create index during expand_dims,35968931,closed,0,,,2,2024-04-20T03:27:23Z,2024-04-27T16:48:30Z,2024-04-27T16:48:24Z,MEMBER,,0,pydata/xarray/pulls/8960," - [x] Solves part of #8871 by pulling out part of https://github.com/pydata/xarray/pull/8872#issuecomment-2027571714 - [x] Tests added - [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst` - [ ] ~~New functions/methods are listed in `api.rst`~~ TODO: - [x] Add new kwarg to `DataArray.expand_dims` - [ ] Add examples to docstrings? - [x] Check it actually solves the problem in #8872","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8960/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 2266443797,PR_kwDOAMm_X85t4Nzs,8977,preliminary pr to examine the DataTree injected docs.,479480,open,0,,,5,2024-04-26T20:15:22Z,2024-04-26T22:36:00Z,,CONTRIBUTOR,,1,pydata/xarray/pulls/8977,"This PR should never be merged, it is opened only to run the build-the-docs with the changes from #8976 I just wanted to make sure I could point to what the final doc pages will look like when datatree is released. ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8977/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2260280862,PR_kwDOAMm_X85tjH8m,8967,Migrate datatreee assertions/extensions/formatting,7788154,closed,0,,,0,2024-04-24T04:23:03Z,2024-04-26T17:38:59Z,2024-04-26T17:29:18Z,CONTRIBUTOR,,0,pydata/xarray/pulls/8967,"This PR continues the overall work of [migrating DataTree into xarray](https://github.com/pydata/xarray/issues/8572). * `xarray/core/datatree_render.py` is the renamed version of `xarray/datatree_/datatree/render.py`. * `xarray/core/extensions.py` now contains functionality from `xarray/datatree_/datatree/extensions.py`. * `xarray/core/formatting.py` now contains functionality from `xarray/datatree_/datatree/formatting.py`. * `xarray/tests/test_datatree.py` now contains tests from `xarray/datatree_/datatree/tests/test_dataset_api.py`. * `xarray/testing/assertions.py` now contains functionality from `/xarray/datatree_/datatree/testing.py`. I had also meant to get to `common.py` and what's left of `io.py`, but I've got a hefty couple of days of meetings ahead, so I wanted to get this progress into PR before that happens. @flamingbear or I can follow up with the remaining things in a separate PR. (Also this PR is already getting a little big, so maybe it's already got enough in it) - [x] Contributes to migration step for miscellaneous modules in #8572 - [ ] ~~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/8967/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2261917442,PR_kwDOAMm_X85touYl,8971,Delete pynio backend.,2448579,closed,0,,,2,2024-04-24T18:25:26Z,2024-04-25T14:38:23Z,2024-04-25T14:23:59Z,MEMBER,,0,pydata/xarray/pulls/8971," - [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst` ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8971/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 1692909704,PR_kwDOAMm_X85PnMF6,7811,Generalize delayed,35968931,open,0,,,0,2023-05-02T18:34:26Z,2024-04-23T17:41:55Z,,MEMBER,,0,pydata/xarray/pulls/7811,"A small follow-on to #7019 to allow using non-dask implementations of `delayed`. (Builds off of #7019) - [x] Closes #7810 - [ ] 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/7811/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2234142680,PR_kwDOAMm_X85sK0g8,8923,"`""source""` encoding for datasets opened from `fsspec` objects",14808389,open,0,,,5,2024-04-09T19:12:45Z,2024-04-23T16:54:09Z,,MEMBER,,0,pydata/xarray/pulls/8923,"When opening files from path-like objects (`str`, `pathlib.Path`), the backend machinery (`_dataset_from_backend_dataset`) sets the `""source""` encoding. This is useful if we need the original path for additional processing, like writing to a similarly named file, or to extract additional metadata. This would be useful as well when using `fsspec` to open remote files. In this PR, I'm extracting the `path` attribute that most `fsspec` objects have to set that value. I've considered using `isinstance` checks instead of the `getattr`-with-default, but the list of potential classes is too big to be practical (at least 4 classes just within `fsspec` itself). If this sounds like a good idea, I'll update the documentation of the `""source""` encoding to mention this feature. - [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/8923/reactions"", ""total_count"": 2, ""+1"": 2, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2248692681,PR_kwDOAMm_X85s8dDt,8953,stop pruning datatree_ directory from distribution,479480,closed,0,,,0,2024-04-17T16:14:13Z,2024-04-23T15:39:06Z,2024-04-23T15:35:20Z,CONTRIBUTOR,,0,pydata/xarray/pulls/8953,"This PR removes the directive that strips out the datatree_ directory from the xarray distribution. It also cleans a few typing errors and removes exceptions for the datatree_ directory for mypy. It does NOT remove the exception for pre-commit config. - [X] Closes #8768 ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8953/reactions"", ""total_count"": 1, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 1, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2255339414,PR_kwDOAMm_X85tSYdD,8962,Raise exception when using `diff` with a non-existent dimension,89410512,open,0,,,1,2024-04-22T00:04:58Z,2024-04-22T17:20:20Z,,FIRST_TIMER,,0,pydata/xarray/pulls/8962,"- [X] Closes #7748 - [X] Tests added - test_dataset_diff_dim_nonexist, test_dataarray_diff_dim_nonexist - [X] User visible changes (including notable bug fixes) are documented in `whats-new.rst` ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8962/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2255271332,PR_kwDOAMm_X85tSKJs,8961,use `nan` instead of `NaN`,14808389,closed,0,,,0,2024-04-21T21:26:18Z,2024-04-21T22:01:04Z,2024-04-21T22:01:03Z,MEMBER,,0,pydata/xarray/pulls/8961,"FYI @aulemahal, `numpy.NaN` will be removed in the upcoming `numpy=2.0` release. - [x] follow-up to #8603","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8961/reactions"", ""total_count"": 1, ""+1"": 1, ""-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 2100707586,PR_kwDOAMm_X85lFQn3,8669,Fix automatic broadcasting when wrapping array api class,35968931,closed,0,,,0,2024-01-25T16:05:19Z,2024-04-20T05:58:05Z,2024-01-26T16:41:30Z,MEMBER,,0,pydata/xarray/pulls/8669,"- [x] Closes #8665 - [x] 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/8669/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2238099300,PR_kwDOAMm_X85sYXC0,8930,Migrate formatting_html.py into xarray core,51421921,closed,0,,,7,2024-04-11T16:15:28Z,2024-04-18T21:59:47Z,2024-04-18T21:59:44Z,CONTRIBUTOR,,0,pydata/xarray/pulls/8930,"This PR migrates the `formatting_html.py` module into `xarray/core/formatting_html.py` as part of the on-going effort to merge `xarray-datatree` into `xarray`. One thing of note is that importing and setting the `OPTIONS` to `""default""` in `datatree/formatting_html.py` ([lines](https://github.com/xarray-contrib/datatree/blob/main/datatree/formatting_html.py#L13%23L15)) were moved into `xarray/core/options.py` on [#L23](https://github.com/pydata/xarray/blob/main/xarray/core/options.py#L23) and [#L49](https://github.com/pydata/xarray/blob/main/xarray/core/options.py#L49). So, I did not add them back to `xarray/core/formatting_html.py`. - [x] Completes migration step for `datatree/formating_htmls.py` https://github.com/pydata/xarray/issues/8572 - [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/8930/reactions"", ""total_count"": 3, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 2, ""rocket"": 1, ""eyes"": 0}",,,13221727,pull 2125478394,PR_kwDOAMm_X85mZIzr,8723,(feat): Support for `pandas` `ExtensionArray`,43999641,closed,0,,,23,2024-02-08T15:38:18Z,2024-04-18T12:52:06Z,2024-04-18T12:52:03Z,CONTRIBUTOR,,0,pydata/xarray/pulls/8723," Some outstanding points/decisions brought up by this PR: - [ ] Confirm type promotion rules and write them out. As it stands now, if everything is of the same extension array type, it is passed onwards and otherwise is converted to numpy. (related: https://github.com/pydata/xarray/pull/8714) ~- [ ] Acceptance of `plum` as a dispatch method. Without it, the behavior should be fallen back on from before (cast to `numpy` types). I am a big fan of dispatching and think it could serve as a model going forward for making support of other data types/arrays more feasible. The other option, I think, would be to just use the underlying `array` of the `ExtensionDuckArray` class to decide and then have some central registry that serves as the basis for a decorator (like the api for accessors via `_CachedAccessor`). That being said, the current defaults are quite good so this is a marginal feature, in all likelihood.~ - [ ] Do we allow just pandas `ExtensionArray` directly or can we also allow `Series`? Possible missing something else! Let me know! Checklist: - [x] Closes #8463 and Closes #5287 - [x] 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/8723/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2246986030,PR_kwDOAMm_X85s2plY,8948,Migrate datatree mapping.py,7788154,closed,0,,,1,2024-04-16T22:36:48Z,2024-04-17T20:44:29Z,2024-04-17T19:59:34Z,CONTRIBUTOR,,0,pydata/xarray/pulls/8948,"This PR continues the overall work of [migrating DataTree into xarray](https://github.com/pydata/xarray/issues/8572). `datatree_mapping.py` is the renamed version of `mapping.py` from the `datatree` repository. - [x] Closes migration step for `mapping.py` #8572 - [ ] ~~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/8948/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2227413822,PR_kwDOAMm_X85rz7ZX,8911,Refactor swap dims,4160723,open,0,,,5,2024-04-05T08:45:49Z,2024-04-17T16:46:34Z,,MEMBER,,1,pydata/xarray/pulls/8911," - [ ] Attempt at fixing #8646 - [ ] Tests added - [ ] User visible changes (including notable bug fixes) are documented in `whats-new.rst` - [ ] New functions/methods are listed in `api.rst` I've tried here re-implementing `swap_dims` using `rename_dims`, `drop_indexes` and `set_xindex`. This fixes the example in #8646 but unfortunately this fails at handling the pandas multi-index special case (i.e., a single non-dimension coordinate wrapping a `pd.MultiIndex` that is promoted to a dimension coordinate in `swap-dims` auto-magically results in a `PandasMultiIndex` with both dimension and level coordinates). ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8911/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2244681150,PR_kwDOAMm_X85suxIl,8947,Add mypy to dev dependencies,5635139,closed,0,,,0,2024-04-15T21:39:19Z,2024-04-17T16:39:23Z,2024-04-17T16:39:22Z,MEMBER,,0,pydata/xarray/pulls/8947,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8947/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2075019328,PR_kwDOAMm_X85juCQ-,8603,Convert 360_day calendars by choosing random dates to drop or add,20629530,closed,0,,,3,2024-01-10T19:13:31Z,2024-04-16T14:53:42Z,2024-04-16T14:53:42Z,CONTRIBUTOR,,0,pydata/xarray/pulls/8603," - [x] Tests added - [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst` Small PR to add a new ""method"" to convert to and from 360_day calendars. The current two methods (chosen with the `align_on` keyword) will always remove or add the same day-of-year for all years of the same length. This new option will randomly chose the days, one for each fifth of the year (72-days period). It emulates the method of the LOCA datasets (see [web page](https://loca.ucsd.edu/loca-calendar/) and [article](https://journals.ametsoc.org/view/journals/hydr/15/6/jhm-d-14-0082_1.xml) ). February 29th is always removed/added when the source/target is a leap year. I copied the implementation from xclim (which I wrote), [see code here](https://github.com/Ouranosinc/xclim/blob/fb29b8a8e400c7d8aaf4e1233a6b37a300126257/xclim/core/calendar.py#L112-L134) . ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8603/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2239835092,PR_kwDOAMm_X85seXWW,8932,FIX: use str dtype without size information,5821660,closed,0,,,11,2024-04-12T10:59:45Z,2024-04-15T19:43:22Z,2024-04-13T12:25:48Z,MEMBER,,0,pydata/xarray/pulls/8932,"Aims to resolve parts of #8844. ```python xarray/tests/test_accessor_str.py::test_case_str: AssertionError: assert dtype(' - [ ] Closes #xxxx - [ ] Tests added - [ ] User visible changes (including notable bug fixes) are documented in `whats-new.rst` ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8932/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2242781767,PR_kwDOAMm_X85soOln,8943,Bump codecov/codecov-action from 4.2.0 to 4.3.0 in the actions group,49699333,closed,0,,,0,2024-04-15T06:04:28Z,2024-04-15T19:16:38Z,2024-04-15T19:16:38Z,CONTRIBUTOR,,0,pydata/xarray/pulls/8943,"Bumps the actions group with 1 update: [codecov/codecov-action](https://github.com/codecov/codecov-action). Updates `codecov/codecov-action` from 4.2.0 to 4.3.0
Release notes

Sourced from codecov/codecov-action's releases.

v4.3.0

What's Changed

Full Changelog: https://github.com/codecov/codecov-action/compare/v4.2.0...v4.3.0

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=codecov/codecov-action&package-manager=github_actions&previous-version=4.2.0&new-version=4.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8943/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2208982027,PR_kwDOAMm_X85q1Lns,8879,Migrate iterators.py for datatree.,7788154,closed,0,,,2,2024-03-26T18:14:53Z,2024-04-15T16:23:56Z,2024-04-11T15:28:25Z,CONTRIBUTOR,,0,pydata/xarray/pulls/8879,"This PR continues the overall work of [migrating DataTree into xarray](https://github.com/pydata/xarray/issues/8572). `iterators.py` does not have direct tests. In discussions with @TomNicholas and @flamingbear, we concurred that other unit tests utilise this functionality. - [x] Closes migration step for `iterators.py` #8572 - [ ] ~~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/8879/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2241492018,PR_kwDOAMm_X85skF_A,8937,drop support for `python=3.9`,14808389,open,0,,,3,2024-04-13T10:18:04Z,2024-04-15T15:07:39Z,,MEMBER,,0,pydata/xarray/pulls/8937,"According to our policy (and NEP-29) we can drop support for `python=3.9` since about a week ago. Interestingly, SPEC0 says we could have started doing this about half a year ago (Q4 2023). We could delay this until we have a release that is compatible with `numpy>=2.0`, though (`numpy>=2.1` will drop support for `python=3.9`). - [ ] User visible changes (including notable bug fixes) are documented in `whats-new.rst`","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8937/reactions"", ""total_count"": 3, ""+1"": 3, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2240895281,PR_kwDOAMm_X85siDno,8934,Correct save_mfdataset docstring,35968931,closed,0,,,0,2024-04-12T20:51:35Z,2024-04-14T19:58:46Z,2024-04-14T11:14:42Z,MEMBER,,0,pydata/xarray/pulls/8934,"Noticed the `**kwargs` part of the docstring was mangled - [see here](https://docs.xarray.dev/en/latest/generated/xarray.save_mfdataset.html) - [ ] ~~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/8934/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2236408438,PR_kwDOAMm_X85sSjdN,8926,no untyped tests,14371165,closed,0,,,2,2024-04-10T20:52:29Z,2024-04-14T16:15:45Z,2024-04-14T16:15:45Z,MEMBER,,1,pydata/xarray/pulls/8926," - [ ] 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/8926/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2242197433,PR_kwDOAMm_X85smT4G,8942,WIP: Support calendar-specific `cftime.datetime` instances,6628425,open,0,,,0,2024-04-14T14:33:06Z,2024-04-14T15:41:08Z,,MEMBER,,1,pydata/xarray/pulls/8942," Since cftime version 1.3.0, the base `cftime.datetime` object can be calendar-aware, obviating the need for calendar-specific subclasses like `cftime.DatetimeNoLeap`. This PR aims to finally enable the use of these objects in xarray. We can also use this moment to remove cruft around accommodating inexact cftime datetime arithmetic, since that has been fixed since cftime version 1.2.0. The idea will be to support both for a period of time and eventually drop support for the calendar-specific subclasses. I do not think too much should need to change within xarray—the main challenge will be to see if we can maintain adequate test coverage without multiplying the number of cftime tests by two. This draft PR is at least a start towards that. - [ ] Closes #4336 - [ ] Closes #4853 - [ ] Closes #5551 - [ ] Closes #8298 - [ ] Closes #8941 - [ ] 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/8942/reactions"", ""total_count"": 1, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 1, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2241528898,PR_kwDOAMm_X85skNON,8940,adapt more tests to the copy-on-write behavior of pandas,14808389,closed,0,,,1,2024-04-13T11:57:10Z,2024-04-13T19:36:30Z,2024-04-13T14:44:50Z,MEMBER,,0,pydata/xarray/pulls/8940,- [x] follow-up to #8846,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8940/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2241499231,PR_kwDOAMm_X85skHW9,8938,use `pd.to_timedelta` instead of `TimedeltaIndex`,14808389,closed,0,,,0,2024-04-13T10:38:12Z,2024-04-13T12:32:14Z,2024-04-13T12:32:13Z,MEMBER,,0,pydata/xarray/pulls/8938,"`pandas` recently removed the deprecated `unit` kwarg to `TimedeltaIndex`. - [x] towards #8844","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8938/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2241095068,PR_kwDOAMm_X85sixE5,8935,Use Variable.stack instead of np.ravel,14371165,open,0,,,1,2024-04-12T23:04:35Z,2024-04-13T08:27:13Z,,MEMBER,,1,pydata/xarray/pulls/8935," - [ ] 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/8935/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2241228882,PR_kwDOAMm_X85sjOh9,8936,MAINT: use sphinxext-rediraffe conda install,17162724,closed,0,,,1,2024-04-13T02:11:07Z,2024-04-13T02:53:53Z,2024-04-13T02:53:48Z,CONTRIBUTOR,,0,pydata/xarray/pulls/8936," - [ ] 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/8936/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2235746028,PR_kwDOAMm_X85sQRSg,8924,"Keep attributes for ""bounds"" variables",28786187,open,0,,,0,2024-04-10T14:29:58Z,2024-04-11T14:09:48Z,,CONTRIBUTOR,,0,pydata/xarray/pulls/8924,"Issue #2921 is about mismatching time units between a time variable and its ""bounds"" companion. However, #2965 does more than fixing #2921, it removes all double attributes from ""bounds"" variables which has the undesired side effect that there is currently no way to save them to netcdf with xarray. Since the mentioned link is a recommendation and not a hard requirement for CF compliance, these attributes should be left to the caller to prepare the dataset variables appropriately if required. Reduces the amount of surprise that attributes are not written to disk and fixes #8368. - [x] Closes #8368 - [ ] Tests added (simple round trip test would be in issue #8368) - [ ] User visible changes (including notable bug fixes) are documented in `whats-new.rst` (not sure about ""user visibility"" here) ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8924/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2231409978,PR_kwDOAMm_X85sBYyR,8920,Enhance the ugly error in constructor when no data passed,2598924,closed,0,,,6,2024-04-08T14:42:57Z,2024-04-10T22:46:57Z,2024-04-10T22:46:53Z,CONTRIBUTOR,,0,pydata/xarray/pulls/8920,"This fix enhances the issue [8860](https://github.com/pydata/xarray/issues/8860). I did not add any test since I believe it is not needed for this case since we did not add any functionality. - [X] Closes #8860 - [ ] 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/8920/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2232134629,PR_kwDOAMm_X85sD5gg,8922,Add typing to some functions in indexing.py,14371165,closed,0,,,0,2024-04-08T21:45:30Z,2024-04-10T18:05:52Z,2024-04-10T18:05:52Z,MEMBER,,0,pydata/xarray/pulls/8922,"A drive-by PR as I was trying to figure out how these functions works. ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8922/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2215762637,PR_kwDOAMm_X85rMHpN,8893,Avoid extra read from disk when creating Pandas Index.,2448579,open,0,,,1,2024-03-29T17:44:52Z,2024-04-08T18:55:09Z,,MEMBER,,0,pydata/xarray/pulls/8893," ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8893/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2230357492,PR_kwDOAMm_X85r9wiV,8918,Bump codecov/codecov-action from 4.1.1 to 4.2.0 in the actions group,49699333,closed,0,,,0,2024-04-08T06:21:47Z,2024-04-08T16:31:12Z,2024-04-08T16:31:11Z,CONTRIBUTOR,,0,pydata/xarray/pulls/8918,"Bumps the actions group with 1 update: [codecov/codecov-action](https://github.com/codecov/codecov-action). Updates `codecov/codecov-action` from 4.1.1 to 4.2.0
Release notes

Sourced from codecov/codecov-action's releases.

v4.2.0

What's Changed

Full Changelog: https://github.com/codecov/codecov-action/compare/v4.1.1...v4.2.0

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=codecov/codecov-action&package-manager=github_actions&previous-version=4.1.1&new-version=4.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8918/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 1410608825,PR_kwDOAMm_X85A4RjC,7173,Add LineCollection plot,14371165,open,0,,,1,2022-10-16T20:16:28Z,2024-04-07T20:26:44Z,,MEMBER,,1,pydata/xarray/pulls/7173,"This adds a line plotter based on `LineCollections`, called `.lines` at the moment. I wanted to replace `darray.plot()` with using LineCollection instead. But unfortunately due to how many cases are supported (and tested in xarray) `darray.plot()` will continue using `plt.plot`. xref: #4820 #5622","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7173/reactions"", ""total_count"": 1, ""+1"": 1, ""-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 2215113392,PR_kwDOAMm_X85rJ3wR,8889,Add typing to test_plot.py,14371165,closed,0,,,0,2024-03-29T10:49:39Z,2024-04-05T16:42:27Z,2024-04-05T16:42:27Z,MEMBER,,0,pydata/xarray/pulls/8889,Enforce typing on all tests in `test_plot.py` and add the remaining type hints.,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8889/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2224297504,PR_kwDOAMm_X85rpGUH,8906,Add invariant check for IndexVariable.name,2448579,open,0,,,1,2024-04-04T02:13:33Z,2024-04-05T07:12:54Z,,MEMBER,,1,pydata/xarray/pulls/8906," @benbovy this seems to be the root cause of #8646, the variable name in `Dataset._variables` does not match `IndexVariable.name`. A good number of tests seem to fail though, so not sure if this is a good chck. - [ ] 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/8906/reactions"", ""total_count"": 2, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 2, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2057651682,PR_kwDOAMm_X85i2Byx,8573,ddof vs correction kwargs in std/var,35968931,closed,0,,,0,2023-12-27T18:10:52Z,2024-04-04T16:46:55Z,2024-04-04T16:46:55Z,MEMBER,,0,pydata/xarray/pulls/8573," - [x] Attempt to closes issue described in https://github.com/pydata/xarray/issues/8566#issuecomment-1870472827 - [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/8573/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2136724736,PR_kwDOAMm_X85m_MtN,8754,Don't access data when creating DataArray from Variable.,2448579,closed,0,,,2,2024-02-15T14:48:32Z,2024-04-04T16:46:54Z,2024-04-04T16:46:53Z,MEMBER,,0,pydata/xarray/pulls/8754," - [x] Closes #8753 This seems to have been around since 2016-ish, so presumably our backend code path is passing arrays around, not Variables. cc @ilan-gold","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8754/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 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 2098659175,PR_kwDOAMm_X85k-T6b,8658,Stateful tests with Dataset,2448579,closed,0,,,8,2024-01-24T16:34:59Z,2024-04-03T21:29:38Z,2024-04-03T21:29:36Z,MEMBER,,0,pydata/xarray/pulls/8658,"I was curious to see if the hypothesis [stateful testing](https://hypothesis.readthedocs.io/en/latest/stateful.html) would catch an inconsistent sequence of index manipulation operations like #8646. Turns out `rename_vars` is basically broken? (filed #8659) :P PS: this [blog post](https://hypothesis.works/articles/how-not-to-die-hard-with-hypothesis/) is amazing. ``` E state = DatasetStateMachine() E state.assert_invariants() E > === E E E Dimensions: () E Data variables: E *empty* E === E E E > vars: ('1', '1_') E state.add_dim_coord(var= E array([0], dtype=uint32)) E state.assert_invariants() E > === E E E Dimensions: (1: 1) E Coordinates: E * 1 (1) uint32 0 E Data variables: E 1_ (1) uint32 0 E === E E E > renaming 1 to 0 E state.rename_vars(newname='0') E state.assert_invariants() E > === E E E Dimensions: (1: 1) E Coordinates: E * 0 (1) uint32 0 E Dimensions without coordinates: 1 E Data variables: E 1_ (1) uint32 0 E === E E E state.teardown() ```","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8658/reactions"", ""total_count"": 1, ""+1"": 1, ""-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 2064698904,PR_kwDOAMm_X85jLHsQ,8584,Silence a bunch of CachingFileManager warnings,2448579,closed,0,,,1,2024-01-03T21:57:07Z,2024-04-03T21:08:27Z,2024-01-03T22:52:58Z,MEMBER,,0,pydata/xarray/pulls/8584,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8584/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""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 2220689594,PR_kwDOAMm_X85rcmw1,8904,Handle extra indexes for zarr region writes,39069044,open,0,,,8,2024-04-02T14:34:00Z,2024-04-03T19:20:37Z,,CONTRIBUTOR,,0,pydata/xarray/pulls/8904," - [x] Tests added - [ ] User visible changes (including notable bug fixes) are documented in `whats-new.rst` Small follow up to #8877. If we're going to drop the indices anyways for region writes, we may as well not raise if they are still in the dataset. This makes the user experience of region writes simpler: ```python ds = xr.tutorial.open_dataset(""air_temperature"") ds.to_zarr(""test.zarr"") region = {""time"": slice(0, 10)} # This fails unless we remember to ds.drop_vars([""lat"", ""lon""]) ds.isel(**region).to_zarr(""test.zarr"", region=region) ``` I find this annoying because I often have a dataset with a bunch of unrelated indexes and have to remember which ones to drop, or use some verbose `set` logic. I thought #8877 might have already done this, but not quite. By just reordering the point at which we drop indices, we can now skip this. We still raise if data vars are passed that don't overlap with the region. cc @dcherian ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8904/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2180447578,PR_kwDOAMm_X85pUKwG,8821,Add small test exposing issue from #7794 and suggestion for `_wrap_numpy_scalars` fix,81219,open,0,,,1,2024-03-11T23:40:17Z,2024-04-03T18:53:28Z,,CONTRIBUTOR,,0,pydata/xarray/pulls/8821,"`_wrap_numpy_scalars` relies on `np.isscalar`, which incorrectly labels a single cftime object as not a scalar. ```python import cftime import numpy as np c = cftime.datetime(2000, 1, 1, calendar='360_day') np.isscalar(c) # False ``` The PR adds logic to handle non-numpy objects using the `np.ndim` function. The logic for built-ins and numpy objects should remain the same. The function logic could possibly be rewritten more clearly as ```python if hasattr(array, ""dtype""): if np.isscalar(array): return np.array(array) else: return array if np.ndim(array) == 0: return np.array(array) return array ``` - [x] Closes #7794 - [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/8821/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2171912634,PR_kwDOAMm_X85o3Ify,8809,Pass variable name to `encode_zarr_variable`,39069044,closed,0,,,6,2024-03-06T16:21:53Z,2024-04-03T14:26:49Z,2024-04-03T14:26:48Z,CONTRIBUTOR,,0,pydata/xarray/pulls/8809," - [x] Closes https://github.com/xarray-contrib/xeofs/issues/148 - [x] Tests added - [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst` The change from https://github.com/pydata/xarray/pull/8672 mostly fixed the issue of serializing a reset multiindex in the backends, but there was an additional niche issue that turned up in xeofs that was causing serialization to still fail on the zarr backend. The issue is that zarr is the only backend that uses a custom version of `encode_cf_variable` called `encode_zarr_variable`, and the way this gets called we don't pass through the `name` of the variable before running `ensure_not_multiindex`. As a minimal fix, this PR just passes `name` through as an additional arg to the general `encode_variable` function. See @benbovy's [comment](https://github.com/pydata/xarray/pull/8672#issuecomment-1929837384) that maybe we should actually unwrap the level coordinate in `reset_index` and clean up the checks in `ensure_not_multiindex`, but I wasn't able to get that working easily. The exact workflow this turned up in involves DataTree and looks like this: ```python import numpy as np import xarray as xr from datatree import DataTree # ND DataArray that gets stacked along a multiindex da = xr.DataArray(np.ones((3, 3)), coords={""dim1"": [1, 2, 3], ""dim2"": [4, 5, 6]}) da = da.stack(feature=[""dim1"", ""dim2""]) # Extract just the stacked coordinates for saving in a dataset ds = xr.Dataset(data_vars={""feature"": da.feature}) # Reset the multiindex, which should make things serializable ds = ds.reset_index(""feature"") dt1 = DataTree() dt2 = DataTree(name=""feature"", data=ds) dt1[""foo""] = dt2 # Somehow in this step, dt1.foo.feature.dim1.variable becomes an IndexVariable again print(type(dt1.foo.feature.dim1.variable)) # Works dt1.to_netcdf(""test.nc"", mode=""w"") # Fails dt1.to_zarr(""test.zarr"", mode=""w"") ``` But we can reproduce in xarray with the test added here. ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8809/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2220487961,PR_kwDOAMm_X85rb6ea,8903,Update docstring for compute and persist,24508496,closed,0,,,2,2024-04-02T13:10:02Z,2024-04-03T07:45:10Z,2024-04-02T23:52:32Z,CONTRIBUTOR,,0,pydata/xarray/pulls/8903,"* Updates the docstring for persist to mention that it is not altering the original object. * Adds a return value to the docstring for compute and persist on both Dataset and DataArray - [x] Closes #8901 ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8903/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 1997636679,PR_kwDOAMm_X85frAC_,8460,Add initialize_zarr,2448579,open,0,,,8,2023-11-16T19:45:05Z,2024-04-02T15:08:01Z,,MEMBER,,1,pydata/xarray/pulls/8460,"- [x] Closes #8343 - [x] Tests added - [ ] User visible changes (including notable bug fixes) are documented in `whats-new.rst` - [x] New functions/methods are listed in `api.rst` The intended pattern is: ```python after_init = initialize_zarr(store, ds, region_dims=(""x"",)) for i in range(ds.sizes[""x""]): after_init.isel(x=[i]).to_zarr(store, region={""x"": slice(i, i + 1)}) ``` cc @slevang ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8460/reactions"", ""total_count"": 5, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 3, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 2}",,,13221727,pull 2218195713,PR_kwDOAMm_X85rUCVG,8898,Update reference to 'Weighted quantile estimators',2259237,closed,0,,,3,2024-04-01T12:49:36Z,2024-04-02T12:51:28Z,2024-04-01T15:42:19Z,CONTRIBUTOR,,0,pydata/xarray/pulls/8898,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8898/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2218712684,PR_kwDOAMm_X85rV1i2,8900,[pre-commit.ci] pre-commit autoupdate,66853113,closed,0,,,0,2024-04-01T17:27:26Z,2024-04-01T18:57:43Z,2024-04-01T18:57:42Z,CONTRIBUTOR,,0,pydata/xarray/pulls/8900," updates: - [github.com/astral-sh/ruff-pre-commit: v0.2.0 → v0.3.4](https://github.com/astral-sh/ruff-pre-commit/compare/v0.2.0...v0.3.4) - [github.com/psf/black-pre-commit-mirror: 24.1.1 → 24.3.0](https://github.com/psf/black-pre-commit-mirror/compare/24.1.1...24.3.0) - [github.com/pre-commit/mirrors-mypy: v1.8.0 → v1.9.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.8.0...v1.9.0) ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8900/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2217657228,PR_kwDOAMm_X85rSLKy,8896,Bump the actions group with 1 update,49699333,closed,0,,,0,2024-04-01T06:50:24Z,2024-04-01T18:02:56Z,2024-04-01T18:02:56Z,CONTRIBUTOR,,0,pydata/xarray/pulls/8896,"Bumps the actions group with 1 update: [codecov/codecov-action](https://github.com/codecov/codecov-action). Updates `codecov/codecov-action` from 4.1.0 to 4.1.1
Release notes

Sourced from codecov/codecov-action's releases.

v4.1.1

What's Changed

New Contributors

Full Changelog: https://github.com/codecov/codecov-action/compare/v4.1.0...v4.1.1

Changelog

Sourced from codecov/codecov-action's changelog.

4.0.0-beta.2

Fixes

  • #1085 not adding -n if empty to do-upload command

4.0.0-beta.1

v4 represents a move from the universal uploader to the Codecov CLI. Although this will unlock new features for our users, the CLI is not yet at feature parity with the universal uploader.

Breaking Changes

  • No current support for aarch64 and alpine architectures.
  • Tokenless uploading is unsuported
  • Various arguments to the Action have been removed

3.1.4

Fixes

  • #967 Fix typo in README.md
  • #971 fix: add back in working dir
  • #969 fix: CLI option names for uploader

Dependencies

  • #970 build(deps-dev): bump @​types/node from 18.15.12 to 18.16.3
  • #979 build(deps-dev): bump @​types/node from 20.1.0 to 20.1.2
  • #981 build(deps-dev): bump @​types/node from 20.1.2 to 20.1.4

3.1.3

Fixes

  • #960 fix: allow for aarch64 build

Dependencies

  • #957 build(deps-dev): bump jest-junit from 15.0.0 to 16.0.0
  • #958 build(deps): bump openpgp from 5.7.0 to 5.8.0
  • #959 build(deps-dev): bump @​types/node from 18.15.10 to 18.15.12

3.1.2

Fixes

  • #718 Update README.md
  • #851 Remove unsupported path_to_write_report argument
  • #898 codeql-analysis.yml
  • #901 Update README to contain correct information - inputs and negate feature
  • #955 fix: add in all the extra arguments for uploader

Dependencies

  • #819 build(deps): bump openpgp from 5.4.0 to 5.5.0
  • #835 build(deps): bump node-fetch from 3.2.4 to 3.2.10
  • #840 build(deps): bump ossf/scorecard-action from 1.1.1 to 2.0.4
  • #841 build(deps): bump @​actions/core from 1.9.1 to 1.10.0
  • #843 build(deps): bump @​actions/github from 5.0.3 to 5.1.1
  • #869 build(deps): bump node-fetch from 3.2.10 to 3.3.0
  • #872 build(deps-dev): bump jest-junit from 13.2.0 to 15.0.0
  • #879 build(deps): bump decode-uri-component from 0.2.0 to 0.2.2

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=codecov/codecov-action&package-manager=github_actions&previous-version=4.1.0&new-version=4.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8896/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2218574880,PR_kwDOAMm_X85rVXJC,8899,New empty whatsnew entry,35968931,closed,0,,,0,2024-04-01T16:04:27Z,2024-04-01T17:49:09Z,2024-04-01T17:49:06Z,MEMBER,,0,pydata/xarray/pulls/8899,Should have been done as part of the last release https://github.com/pydata/xarray/releases/tag/v2024.03.0,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8899/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 1336119080,PR_kwDOAMm_X849CQ7A,6908,Hypothesis strategies in xarray.testing.strategies,35968931,open,0,,,15,2022-08-11T15:20:56Z,2024-04-01T16:01:21Z,,MEMBER,,0,pydata/xarray/pulls/6908,"Adds a whole suite of hypothesis strategies for generating xarray objects, inspired by and separated out from the new hypothesis strategies in #4972. They are placed into the namespace `xarray.testing.strategies`, and publicly mentioned in the API docs, but with a big warning message. There is also a new `testing` page in the user guide documenting how to use these strategies. - [x] Closes #6911 - [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` EDIT: A `variables` strategy and user-facing documentation were shipped in https://github.com/pydata/xarray/pull/8404","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6908/reactions"", ""total_count"": 2, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 2, ""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 2215324218,PR_kwDOAMm_X85rKmW7,8890,Add typing to test_groupby.py,14371165,closed,0,,,1,2024-03-29T13:13:59Z,2024-03-29T16:38:17Z,2024-03-29T16:38:16Z,MEMBER,,0,pydata/xarray/pulls/8890,Enforce typing on all tests in `test_groupby.py` and add the remaining type hints.,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8890/reactions"", ""total_count"": 1, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 1, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2215059449,PR_kwDOAMm_X85rJr7c,8888,to_base_variable: coerce multiindex data to numpy array,4160723,open,0,,,3,2024-03-29T10:10:42Z,2024-03-29T15:54:19Z,,MEMBER,,0,pydata/xarray/pulls/8888," - [x] Closes #8887, and probably supersedes #8809 - [x] Tests added - [ ] User visible changes (including notable bug fixes) are documented in `whats-new.rst` - ~~New functions/methods are listed in `api.rst`~~ @slevang this should also make work your test case added in #8809. I haven't added it here, instead I added a basic check that should be enough. I don't really understand why the serialization backends (zarr?) do not seem to work with the `PandasMultiIndexingAdapter.__array__()` implementation, which should normally coerce the multi-index levels into numpy arrays as needed. Anyway, I guess that coercing it early like in this PR doesn't hurt and may avoid the confusion of a non-indexed, isolated coordinate variable that still wraps a pandas.MultiIndex. ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8888/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2203250238,PR_kwDOAMm_X85qh2s8,8867,Avoid in-place multiplication of a large value to an array with small integer dtype,14371165,closed,0,,,3,2024-03-22T20:22:22Z,2024-03-29T15:26:38Z,2024-03-29T15:26:38Z,MEMBER,,0,pydata/xarray/pulls/8867,"Upstream numpy has become a bit more particular with which types you can use for inplace operations. This PR fixes ``` _______________ TestImshow.test_imshow_rgb_values_in_valid_range _______________ self = def test_imshow_rgb_values_in_valid_range(self) -> None: da = DataArray(np.arange(75, dtype=""uint8"").reshape((5, 5, 3))) _, ax = plt.subplots() > out = da.plot.imshow(ax=ax).get_array() /home/runner/work/xarray/xarray/xarray/tests/test_plot.py:2034: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/runner/work/xarray/xarray/xarray/plot/accessor.py:421: in imshow return dataarray_plot.imshow(self._da, *args, **kwargs) /home/runner/work/xarray/xarray/xarray/plot/dataarray_plot.py:1601: in newplotfunc primitive = plotfunc( /home/runner/work/xarray/xarray/xarray/plot/dataarray_plot.py:1853: in imshow alpha *= 255 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = masked_array( data=[[[1], [1], [1], [1], [1]], [[1], [1], ..., [1], [1], [1], [1]]], mask=False, fill_value=np.int64(999999), dtype=uint8) other = 255 def __imul__(self, other): """""" Multiply self by other in-place. """""" m = getmask(other) if self._mask is nomask: if m is not nomask and m.any(): self._mask = make_mask_none(self.shape, self.dtype) self._mask += m elif m is not nomask: self._mask += m other_data = getdata(other) other_data = np.where(self._mask, other_data.dtype.type(1), other_data) > self._data.__imul__(other_data) E numpy._core._exceptions._UFuncOutputCastingError: Cannot cast ufunc 'multiply' output from dtype('int64') to dtype('uint8') with casting rule 'same_kind' /home/runner/micromamba/envs/xarray-tests/lib/python3.12/site-packages/numpy/ma/core.py:4415: UFuncTypeError ``` Some curious behaviors seen while debugging: ```python alpha = np.array([1], dtype=np.int8) alpha *= 255 repr(alpha) # 'array([-1], dtype=int8)' alpha = np.array([1], dtype=np.int16) alpha *= 255 repr(alpha) # 'array([255], dtype=int16)' ``` xref: #8844","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8867/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2205239889,PR_kwDOAMm_X85qoWZT,8873,Add dt.date to plottable types,24508496,closed,0,,,6,2024-03-25T09:07:33Z,2024-03-29T14:35:44Z,2024-03-29T14:35:41Z,CONTRIBUTOR,,0,pydata/xarray/pulls/8873,"Simply adds `datetime.date` to plottable types in `_ensure_plottable` in *plot/utils.py*L675 to enable the plotting of dates. Matplotlib handles `date` types automatically, so I think there is no other change needed. Do I need to add a test for this? Any pointers on where I would put it that? - [x] Closes #8866 - [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/8873/reactions"", ""total_count"": 1, ""+1"": 1, ""-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 2120340151,PR_kwDOAMm_X85mHqI0,8714,Avoid coercing to numpy in `as_shared_dtypes`,35968931,open,0,,,3,2024-02-06T09:35:22Z,2024-03-28T18:31:50Z,,MEMBER,,0,pydata/xarray/pulls/8714,"- [x] Solves the problem in https://github.com/pydata/xarray/pull/8712#issuecomment-1929037299 - [ ] 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/8714/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 2213406564,PR_kwDOAMm_X85rEF-X,8886,Allow multidimensional variable with same name as dim when constructing dataset via coords,35968931,closed,0,,,2,2024-03-28T14:37:27Z,2024-03-28T17:07:10Z,2024-03-28T16:28:09Z,MEMBER,,0,pydata/xarray/pulls/8886,"Supercedes #8884 as a way to close #8883, in light of me having learnt that this is now allowed! https://github.com/pydata/xarray/issues/8883#issuecomment-2024645815. So this is really a follow-up to #7989. - [x] Closes #8883 - [x] 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/8886/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull