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
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
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
1680031454,I_kwDOAMm_X85kIz7e,7780,mypy does not understand output of binary operations,14371165,open,0,,,8,2023-04-23T13:38:55Z,2024-04-28T20:07:04Z,,MEMBER,,,,"### What happened?
When doing operations on numpy arrays and xarray variables mypy does not understand that the output is always a xarray variable regardless of the order. See example.
### What did you expect to happen?
mypy to pass for the example code.
### Minimal Complete Verifiable Example
```Python
import numpy as np
import xarray as xr
x = np.array([1, 2, 4])
v = xr.Variable([""x""], x)
# numpy first:
xv = x * v
xv.values # error: ""ndarray[Any, dtype[bool_]]"" has no attribute ""values"" [attr-defined]
if isinstance(xv, xr.Variable):
xv.values
# variable first:
vx = v * x
vx.values
if isinstance(vx, xr.Variable):
vx.values
```
### MVCE confirmation
- [X] Minimal example — the example is as focused as reasonably possible to demonstrate the underlying issue in xarray.
- [X] Complete example — the example is self-contained, including all data and the text of any traceback.
- [X] Verifiable example — the example copy & pastes into an IPython prompt or [Binder notebook](https://mybinder.org/v2/gh/pydata/xarray/main?urlpath=lab/tree/doc/examples/blank_template.ipynb), returning the result.
- [X] New issue — a search of GitHub Issues suggests this is not a duplicate.
### Relevant log output
_No response_
### Anything else we need to know?
Seen in #7741
### Environment
xr.show_versions()
INSTALLED VERSIONS
------------------
commit: None
python: 3.9.16 (main, Mar 8 2023, 10:39:24) [MSC v.1916 64 bit (AMD64)]
python-bits: 64
OS: Windows
OS-release: 10
machine: AMD64
processor: Intel64 Family 6 Model 58 Stepping 9, GenuineIntel
byteorder: little
LC_ALL: None
LANG: en
libhdf5: 1.10.6
libnetcdf: None
xarray: 2023.4.2
pandas: 2.0.0
numpy: 1.23.5
scipy: 1.10.1
netCDF4: None
pydap: None
h5netcdf: None
h5py: 2.10.0
Nio: None
zarr: None
cftime: None
nc_time_axis: None
PseudoNetCDF: None
iris: None
bottleneck: None
dask: 2023.4.0
distributed: 2023.4.0
matplotlib: 3.5.3
cartopy: None
seaborn: 0.12.2
numbagg: None
fsspec: 2023.4.0
cupy: None
pint: None
sparse: None
flox: None
numpy_groupies: None
setuptools: 67.7.1
pip: 23.1.1
conda: 23.3.1
pytest: 7.3.1
mypy: 1.2.0
IPython: 8.12.0
sphinx: 6.1.3
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7780/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue
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
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
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
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
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
2215603817,I_kwDOAMm_X86ED25p,8892,ffill's tolerance argument can be strings,14371165,open,0,,,1,2024-03-29T15:49:40Z,2024-04-02T01:50:34Z,,MEMBER,,,,"### What happened?
`ffill`, `bfill` `reindex` etc. have tolerance arguments that also supports strings. And we test for it here:
https://github.com/pydata/xarray/blob/2120808bbe45f3d4f0b6a01cd43bac4df4039092/xarray/tests/test_groupby.py#L2016-L2025
But our typing assumes it's floats only:
https://github.com/pydata/xarray/blob/2120808bbe45f3d4f0b6a01cd43bac4df4039092/xarray/core/resample.py#L69-L94
### What did you expect to happen?
Since our pytests pass, mypy should pass as well.
### Minimal Complete Verifiable Example
```python
import numpy as np
import pandas as pd
import xarray as xr
# https://github.com/pydata/xarray/blob/2120808bbe45f3d4f0b6a01cd43bac4df4039092/xarray/tests/test_groupby.py#L2016
# Test tolerance keyword for upsample methods bfill, pad, nearest
times = pd.date_range(""2000-01-01"", freq=""1D"", periods=2)
times_upsampled = pd.date_range(""2000-01-01"", freq=""6h"", periods=5)
array = xr.DataArray(np.arange(2), [(""time"", times)])
# Forward fill
actual = array.resample(time=""6h"").ffill(tolerance=""12h"")
expected = xr.DataArray([0.0, 0.0, 0.0, np.nan, 1.0], [(""time"", times_upsampled)])
xr.testing.assert_identical(expected, actual)
```
### Environment
master
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8892/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue
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
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
1718410975,I_kwDOAMm_X85mbN7f,7856,Unrecognized chunk manager dask - must be one of: [],14371165,closed,0,,,11,2023-05-21T08:07:57Z,2024-03-27T19:09:18Z,2023-05-24T16:26:20Z,MEMBER,,,,"### What happened?
I have just updated my development branch of xarray to latest main. No other changes.
When using `.chunk()` on a Variable xarray crashes.
### What did you expect to happen?
No crash
### Minimal Complete Verifiable Example
```Python
import numpy as np
import pandas as pd
import xarray as xr
t_size = 8000
t = np.arange(t_size)
var = xr.Variable(dims=(""T"",), data=np.random.randn(t_size)).chunk()
```
### MVCE confirmation
- [X] Minimal example — the example is as focused as reasonably possible to demonstrate the underlying issue in xarray.
- [X] Complete example — the example is self-contained, including all data and the text of any traceback.
- [X] Verifiable example — the example copy & pastes into an IPython prompt or [Binder notebook](https://mybinder.org/v2/gh/pydata/xarray/main?urlpath=lab/tree/doc/examples/blank_template.ipynb), returning the result.
- [X] New issue — a search of GitHub Issues suggests this is not a duplicate.
### Relevant log output
```Python
Traceback (most recent call last):
File ""C:\Users\J.W\AppData\Local\Temp\ipykernel_6480\4053253683.py"", line 8, in
var = xr.Variable(dims=(""T"",), data=np.random.randn(t_size)).chunk()
File ""C:\Users\J.W\Documents\GitHub\xarray\xarray\core\variable.py"", line 1249, in chunk
chunkmanager = guess_chunkmanager(chunked_array_type)
File ""C:\Users\J.W\Documents\GitHub\xarray\xarray\core\parallelcompat.py"", line 87, in guess_chunkmanager
raise ValueError(
ValueError: unrecognized chunk manager dask - must be one of: []
```
### Anything else we need to know?
Likely from #7019.
### Environment
xr.show_versions()
C:\Users\J.W\anaconda3\envs\xarray-tests\lib\site-packages\_distutils_hack\__init__.py:33: UserWarning: Setuptools is replacing distutils.
warnings.warn(""Setuptools is replacing distutils."")
INSTALLED VERSIONS
------------------
commit: None
python: 3.10.6 | packaged by conda-forge | (main, Aug 22 2022, 20:30:19) [MSC v.1929 64 bit (AMD64)]
python-bits: 64
OS: Windows
OS-release: 10
machine: AMD64
processor: Intel64 Family 6 Model 58 Stepping 9, GenuineIntel
byteorder: little
LC_ALL: None
LANG: en
LOCALE: ('Swedish_Sweden', '1252')
libhdf5: 1.12.2
libnetcdf: 4.8.1
xarray: 2022.9.1.dev266+gbd01f9cc.d20221006
pandas: 1.5.2
numpy: 1.23.5
scipy: 1.9.3
netCDF4: 1.6.0
pydap: installed
h5netcdf: 1.0.2
h5py: 3.7.0
Nio: None
zarr: 2.13.2
cftime: 1.6.2
nc_time_axis: 1.4.1
PseudoNetCDF: 3.2.2
iris: 3.3.0
bottleneck: 1.3.5
dask: 2022.9.2
distributed: 2022.9.2
matplotlib: 3.6.2
cartopy: 0.21.0
seaborn: 0.13.0.dev0
numbagg: 0.2.1
fsspec: 2022.10.0
cupy: None
pint: 0.19.2
sparse: 0.13.0
flox: 999
numpy_groupies: 0.9.14+22.g19c7601
setuptools: 65.5.1
pip: 22.3.1
conda: None
pytest: 7.2.0
mypy: 1.2.0
IPython: 7.33.0
sphinx: 5.3.0
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7856/reactions"", ""total_count"": 2, ""+1"": 2, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
2184947713,PR_kwDOAMm_X85pjnvS,8831,Fix datetime in colorbar,14371165,open,0,,,0,2024-03-13T21:48:44Z,2024-03-27T06:39:13Z,,MEMBER,,1,pydata/xarray/pulls/8831,"
- [ ] 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`
```python
import xarray as xr
airtemps = xr.tutorial.open_dataset(""air_temperature"")
airtemps.air[:200].isel(lat=10, lon=10).plot.scatter(x=""time"", hue=""time"")
```
Before:

","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8831/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2203493958,PR_kwDOAMm_X85qiskT,8868,Try ruff lint for numpy 2.0,14371165,closed,0,,,1,2024-03-22T23:31:04Z,2024-03-22T23:34:11Z,2024-03-22T23:33:03Z,MEMBER,,1,pydata/xarray/pulls/8868,From https://numpy.org/devdocs/numpy_2_0_migration_guide.html#numpy-2-migration-guide,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8868/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
962647570,MDExOlB1bGxSZXF1ZXN0NzA1NDA2NDY0,5678,Add typing to the OPTIONS dict,14371165,closed,0,,,11,2021-08-06T11:21:02Z,2024-03-13T21:45:54Z,2021-08-19T22:15:23Z,MEMBER,,0,pydata/xarray/pulls/5678,"This adds typing to the dict values. Using variables as keys is apparently not permitted by mypy so that part has been removed.
Attempts to fix issues found in #5662.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/5678/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1684281101,PR_kwDOAMm_X85PKWFR,7787,Allow the label run-upstream to run upstream CI,14371165,closed,0,,,6,2023-04-26T05:07:44Z,2024-03-13T21:44:50Z,2023-05-01T19:12:26Z,MEMBER,,0,pydata/xarray/pulls/7787,"This PR makes it easier to trigger the upstream CI and creates a mypy test for upstream as well, but only when adding this label so that it doesn't mess with the scheduled runs and those results.
Noticed the need in #7786.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7787/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1418830429,PR_kwDOAMm_X85BT_a6,7194,Align naming convention with plt.subplots,14371165,closed,0,,,1,2022-10-21T20:31:34Z,2024-03-13T21:44:17Z,2022-10-23T11:58:12Z,MEMBER,,0,pydata/xarray/pulls/7194,"I noticed that the normal notation for `fig, axs = plt.subplots(2, 1)` wasn't used in facetgrid so did a quick find replace to change that.
This feels better for my pedantic brain at least but I'm not sure it's worth the effort?","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7194/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
807939559,MDExOlB1bGxSZXF1ZXN0NTczMDc1Mzkw,4909,Add dataarray scatter with 3d support,14371165,closed,0,,,12,2021-02-14T11:15:50Z,2024-03-13T21:43:14Z,2021-07-17T21:07:31Z,MEMBER,,0,pydata/xarray/pulls/4909,"
- [x] Closes #xxxx
- [x] Tests added
- [x] Passes `pre-commit run --all-files`
- [ ] User visible changes (including notable bug fixes) are documented in `whats-new.rst`
- [ ] New functions/methods are listed in `api.rst`
Add scatter plots for dataarrays. Then later remove the dataset version and replace it with a thin wrapper in a similar fashion to #4820.
New stuff:
- [x] Legend now displays colors and sizes in a similar fashion to Seaborn.
- [x] New parameter `z` which allows 3d scatter plots.
Example:
Using `ds = xr.tutorial.scatter_example_dataset()`:

","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/4909/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1474717029,PR_kwDOAMm_X85EPeqM,7353,Add python 3.11 to CI,14371165,closed,0,,,9,2022-12-04T11:12:01Z,2024-03-13T21:43:10Z,2023-05-28T09:58:40Z,MEMBER,,1,pydata/xarray/pulls/7353,"Waiting on:
- https://github.com/numba/numba/issues/8304
- https://github.com/numba/numba/issues/8841
- https://github.com/zarr-developers/numcodecs/issues/377
- https://github.com/Unidata/netcdf4-python/issues/1204
- https://github.com/h5py/h5py/issues/2146
- [ ] Closes #7316
- [ ] Tests added
- [ ] User visible changes (including notable bug fixes) are documented in `whats-new.rst`
- [ ] New functions/methods are listed in `api.rst`
Feel free to push to this PR if you want.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7353/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1803788143,PR_kwDOAMm_X85VdjgR,7986,Add new what's new section,14371165,closed,0,,,0,2023-07-13T21:29:01Z,2024-03-13T21:43:09Z,2023-07-13T21:30:07Z,MEMBER,,0,pydata/xarray/pulls/7986,Add a new what's new section,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7986/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1991435225,PR_kwDOAMm_X85fV3DW,8449,Use concise date format when plotting,14371165,closed,0,,,2,2023-11-13T20:32:22Z,2024-03-13T21:41:34Z,2023-11-21T19:26:24Z,MEMBER,,0,pydata/xarray/pulls/8449,"
- [x] Tests added
- [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst`
```python
import matplotlib.pyplot as plt
import xarray as xr
airtemps = xr.tutorial.open_dataset(""air_temperature"")
air = airtemps.air - 273.15
air1d = air.isel(lat=10, lon=10)
plt.figure()
air1d.plot()
```
Before:

After:

","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8449/reactions"", ""total_count"": 2, ""+1"": 2, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1761952309,PR_kwDOAMm_X85TQlL1,7925,Remove hue_style from plot1d docstring,14371165,closed,0,,,9,2023-06-17T18:33:11Z,2024-03-13T21:40:43Z,2023-07-13T23:17:48Z,MEMBER,,0,pydata/xarray/pulls/7925,"
- [x] Closes #7907
- [x] Closes #7908
- [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst`
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7925/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1797233538,I_kwDOAMm_X85rH5uC,7971,Pint errors on python 3.11 and windows,14371165,closed,0,,,2,2023-07-10T17:44:51Z,2024-02-26T17:52:50Z,2024-02-26T17:52:50Z,MEMBER,,,,"### What happened?
The CI seems to consistently crash on `test_units.py` now:
```
=========================== short test summary info ===========================
FAILED xarray/tests/test_units.py::TestVariable::test_aggregation[int32-method_max] - TypeError: no implementation found for 'numpy.max' on types that implement __array_function__: []
FAILED xarray/tests/test_units.py::TestVariable::test_aggregation[int32-method_min] - TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: []
FAILED xarray/tests/test_units.py::TestDataArray::test_aggregation[float64-function_max] - TypeError: no implementation found for 'numpy.max' on types that implement __array_function__: []
FAILED xarray/tests/test_units.py::TestDataArray::test_aggregation[float64-function_min] - TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: []
FAILED xarray/tests/test_units.py::TestDataArray::test_aggregation[int32-function_max] - TypeError: no implementation found for 'numpy.max' on types that implement __array_function__: []
FAILED xarray/tests/test_units.py::TestDataArray::test_aggregation[int32-function_min] - TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: []
FAILED xarray/tests/test_units.py::TestDataArray::test_aggregation[int32-method_max] - TypeError: no implementation found for 'numpy.max' on types that implement __array_function__: []
FAILED xarray/tests/test_units.py::TestDataArray::test_aggregation[int32-method_min] - TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: []
FAILED xarray/tests/test_units.py::TestDataArray::test_unary_operations[float64-round] - TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: []
FAILED xarray/tests/test_units.py::TestDataArray::test_unary_operations[int32-round] - TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: []
FAILED xarray/tests/test_units.py::TestDataset::test_aggregation[int32-method_max] - TypeError: no implementation found for 'numpy.max' on types that implement __array_function__: []
FAILED xarray/tests/test_units.py::TestDataset::test_aggregation[int32-method_min] - TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: []
= 12 failed, 14880 passed, 1649 skipped, 146 xfailed, 68 xpassed, 574 warnings in 737.19s (0:12:17) =
```
For more details:
https://github.com/pydata/xarray/actions/runs/5438369625/jobs/9889561685?pr=7955
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7971/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
1948928294,PR_kwDOAMm_X85dGRAu,8330,Simplify get_axis_num,14371165,closed,0,,,2,2023-10-18T06:15:57Z,2024-02-02T18:37:32Z,2024-02-02T18:37:32Z,MEMBER,,1,pydata/xarray/pulls/8330,"
- [ ] 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/8330/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1916363233,PR_kwDOAMm_X85bYe7b,8241,Use strict type hinting for namedarray,14371165,closed,0,,,4,2023-09-27T21:32:41Z,2024-02-02T18:12:22Z,2023-10-03T17:18:41Z,MEMBER,,0,pydata/xarray/pulls/8241,Towards the strict goal in #8239.,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8241/reactions"", ""total_count"": 2, ""+1"": 2, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2038570344,PR_kwDOAMm_X85h1i2S,8547,Add overloads to get_axis_num,14371165,closed,0,,,14,2023-12-12T21:23:41Z,2024-01-30T00:08:54Z,2024-01-30T00:08:54Z,MEMBER,,0,pydata/xarray/pulls/8547,"Add overloads to `.get_axis_num` because you will get the same type out as you put in.
Seen in #8344.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8547/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1746734270,PR_kwDOAMm_X85SdWic,7902,Test array api protocol,14371165,open,0,,,2,2023-06-07T21:50:55Z,2024-01-28T10:36:37Z,,MEMBER,,1,pydata/xarray/pulls/7902,"
- [ ] 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/7902/reactions"", ""total_count"": 1, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 1}",,,13221727,pull
1953053810,PR_kwDOAMm_X85dURGi,8344,Add mean to NamedArray._array_api,14371165,open,0,,,8,2023-10-19T21:05:06Z,2023-12-19T17:49:22Z,,MEMBER,,1,pydata/xarray/pulls/8344,"
- [ ] 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/8344/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2034462507,PR_kwDOAMm_X85hniLB,8535,Filter null values before plotting,14371165,closed,0,,,3,2023-12-10T17:31:27Z,2023-12-13T15:44:55Z,2023-12-13T15:44:55Z,MEMBER,,0,pydata/xarray/pulls/8535,"I noticed that seaborn's plot was responding much faster than xarray's version with the same data.
Turn's out seaborn drops any nulls: https://github.com/mwaskom/seaborn/blob/056413d7393e3daec597d430c076e45938d53376/seaborn/relational.py#L399
- [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/8535/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2034545604,PR_kwDOAMm_X85hnyZ9,8538,Check that compat is equal to identical only once in dataset concat,14371165,closed,0,,,1,2023-12-10T21:42:20Z,2023-12-13T09:27:11Z,2023-12-13T09:27:11Z,MEMBER,,0,pydata/xarray/pulls/8538,Small change to avoid triggering several if-checks unnecessarily. ,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8538/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1975221937,PR_kwDOAMm_X85efDP6,8407,Add expand_dims,14371165,closed,0,,,5,2023-11-03T00:01:22Z,2023-12-12T20:54:45Z,2023-12-01T18:52:11Z,MEMBER,,0,pydata/xarray/pulls/8407,"This allows adding a dimension of an array. Which is relevant when for example using `keepdims` in NamedArray.reduce.
Normally you can do this with `None` but that's not really allowed in the getitem documentation currently https://data-apis.org/array-api/2022.12/API_specification/generated/array_api.array.__getitem__.html
Should follow the standard but with an additional `dim` argument, `dim` should be preferred over the `axis` argument.
https://data-apis.org/array-api/draft/API_specification/generated/array_api.expand_dims.html
xref #8344, #8406
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8407/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1975173557,PR_kwDOAMm_X85ee4vk,8406,Add getitem to array protocol,14371165,closed,0,,,0,2023-11-02T23:02:48Z,2023-12-12T20:54:00Z,2023-12-12T20:44:11Z,MEMBER,,0,pydata/xarray/pulls/8406,"Currently using getitem is not allowed for either a arrayfunction or arrayapi according to the type hints. Add support for it.
Issues found in #8344 as more and more typing was added. But getitem is used in main as well which should fail, but manages to pass due to lack of type hints:
https://github.com/pydata/xarray/blob/9acc411bc7e99e61269eadf77e96b9ddd40aec9e/xarray/namedarray/core.py#L792
Notes
* mypy will now complain for `_arrayapi[None]` or `_arrayapi([None,)]`, use `xp.expand_dims(_arrayapi)` for now instead.
https://github.com/numpy/numpy/pull/25022
https://github.com/data-apis/array-api/pull/687
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8406/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1936840711,PR_kwDOAMm_X85cdvXs,8294,Use shape and dtype as typevars in NamedArray,14371165,closed,0,,,9,2023-10-11T05:08:32Z,2023-12-12T20:41:29Z,2023-10-18T06:22:52Z,MEMBER,,0,pydata/xarray/pulls/8294,"Using a different TypeVar strategy compared to #8281. The idea here is to typevar shape and dtype instead, just like numpy does.
Previously I tried to use the _data array as the TypeVar but that causes all kinds of issues since TypeVar is usually invariant and can't be updated to a new type. Since the dtype changes very frequently when doing array operations it quickly gets difficult to pass along the correct typing.
* This PR adds a from_array function. The intention is to use that function to create NamedArrays when you are passing around ArrayLikes. The init for NamedArray will now just assume the input data is correct. At runtime at least, mypy will catch any non-supported array types. There's some precedent to this:
* numpy.array_api.Array forces to use xp.asarray.
* [Cubed](https://github.com/tomwhite/cubed/blob/main/cubed/array_api/array_object.py) assumes the inputs are correct. Has a xp.asarray and a from_array function.
* The ugly `fastpath` argument is therefore not needed.
* Adds a bunch of type hint classes, `duckarray[ShapeType, DType]` (corresponding to `np.ndarray`) or `DuckArray[ScalarType]` (corresponding to `np.typing.NDArray`) are the recommended ones.
* It's better to use these kinds of classes over creating `is_duck_array` functions with typeguards because `isinstance` also works on the `else` clause.
* This PR adds some array_api functions, the idea here is that NamedArray could also be array_api compliant.
- [x] Tests added
- [x] Closes #8291
References:
https://github.com/tomwhite/cubed/blob/ea885193dd37d27917a24878b51bb086aaef5fb1/cubed/core/ops.py#L34
https://stackoverflow.com/questions/74633074/how-to-type-hint-a-generic-numpy-array
https://numpy.org/doc/stable/reference/arrays.scalars.html#scalars
https://github.com/numpy/numpy/blob/040ed2dc9847265c581a342301dd87d2b518a3c2/numpy/__init__.pyi#L1423
https://github.com/numpy/numpy/blob/040ed2dc9847265c581a342301dd87d2b518a3c2/numpy/_typing/_array_like.py#L32
https://stackoverflow.com/questions/69186176/determine-if-subclass-has-a-base-classs-method-implemented-in-python","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8294/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1966953477,PR_kwDOAMm_X85eC9NL,8391,Add duckarray test for np.array_api,14371165,closed,0,,,0,2023-10-29T11:37:29Z,2023-12-06T22:30:04Z,2023-10-31T03:05:23Z,MEMBER,,0,pydata/xarray/pulls/8391,"Check if the Array object from numpy.array_api is a valid duckarray.
If it isn't we're likely doing something wrong.
Comments:
* array_api standard does not specify a `__array__`-method.
* Move `__array__` to _arrayfunction only
* We therefore have to use `np.asarray(namedarray.data)` when comparing ndarrays in the tests
Seen in #8344","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8391/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1971126897,PR_kwDOAMm_X85eRLVH,8396,Test masked array,14371165,closed,0,,,0,2023-10-31T19:00:35Z,2023-11-03T15:07:35Z,2023-11-03T15:07:34Z,MEMBER,,0,pydata/xarray/pulls/8396,"Add a test for masked array in order to make sure it works.
Be consistent and use the shapetype dtype generics style instead.
Starting to think it's easier to just stick to one style of typing, even though the other option might be a little shorter.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8396/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1971001432,PR_kwDOAMm_X85eQvnS,8395,Correct typing for _sparsearray,14371165,closed,0,,,0,2023-10-31T17:50:47Z,2023-10-31T19:28:49Z,2023-10-31T19:28:49Z,MEMBER,,0,pydata/xarray/pulls/8395,"Use _DType_co instead, otherwise the dtype wont be correctly passed along.
Quick follow up to #8387.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8395/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1966603230,PR_kwDOAMm_X85eB5WY,8387,Fix sparse typing,14371165,closed,0,,,0,2023-10-28T13:50:08Z,2023-10-31T17:43:58Z,2023-10-31T17:43:57Z,MEMBER,,0,pydata/xarray/pulls/8387,"Fixes the following pyright error on main:
```
C:\Users\J.W\Documents\GitHub\xarray\xarray\namedarray\core.py:846:39 - error: Argument of type ""NDArray[Any]"" cannot be assigned to parameter ""data"" of type ""duckarray[_ShapeType_co@NamedArray, _DType_co@NamedArray] | Default"" in function ""_replace""
Type ""NDArray[Any]"" cannot be assigned to type ""duckarray[_ShapeType_co@NamedArray, _DType_co@NamedArray] | Default""
""NDArray[Any]"" is incompatible with protocol ""_arrayfunction[_ShapeType_co@NamedArray, _DType_co@NamedArray]""
Type ""(dtype: None = ..., /) -> ndarray[Any, _dtype]"" cannot be assigned to type ""(dtype: _DType@__array__, /) -> ndarray[Any, _DType@__array__]""
Parameter 1: type ""_DType@__array__"" cannot be assigned to type ""None""
Type cannot be assigned to type ""None""
Type ""(dtype: None = ..., /) -> ndarray[Any, _dtype]"" cannot be assigned to type ""(dtype: _DType@__array__, /) -> ndarray[Any, _DType@__array__]""
Parameter 1: type ""_DType@__array__"" cannot be assigned to type ""None""
Type cannot be assigned to type ""None""
... (reportGeneralTypeIssues)
```","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8387/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1966902041,PR_kwDOAMm_X85eCzIK,8390,Remove duplicated navigation_with_keys in docs config,14371165,closed,0,,,0,2023-10-29T08:52:56Z,2023-10-29T11:08:33Z,2023-10-29T11:08:33Z,MEMBER,,0,pydata/xarray/pulls/8390,"Fixes:
```
Running Sphinx v6.2.1
Traceback (most recent call last):
File ""/home/docs/checkouts/readthedocs.org/user_builds/xray/conda/8387/lib/python3.10/site-packages/sphinx/config.py"", line 353, in eval_config_file
code = compile(f.read(), filename.encode(fs_encoding), 'exec')
File ""/home/docs/checkouts/readthedocs.org/user_builds/xray/checkouts/8387/doc/conf.py"", line 240
navigation_with_keys=False,
^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: keyword argument repeated: navigation_with_keys
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File ""/home/docs/checkouts/readthedocs.org/user_builds/xray/conda/8387/lib/python3.10/site-packages/sphinx/cmd/build.py"", line 280, in build_main
app = Sphinx(args.sourcedir, args.confdir, args.outputdir,
File ""/home/docs/checkouts/readthedocs.org/user_builds/xray/conda/8387/lib/python3.10/site-packages/sphinx/application.py"", line 207, in __init__
self.config = Config.read(self.confdir, confoverrides or {}, self.tags)
File ""/home/docs/checkouts/readthedocs.org/user_builds/xray/conda/8387/lib/python3.10/site-packages/sphinx/config.py"", line 177, in read
namespace = eval_config_file(filename, tags)
File ""/home/docs/checkouts/readthedocs.org/user_builds/xray/conda/8387/lib/python3.10/site-packages/sphinx/config.py"", line 357, in eval_config_file
raise ConfigError(msg % err) from err
sphinx.errors.ConfigError: There is a syntax error in your configuration file: keyword argument repeated: navigation_with_keys (conf.py, line 240)
Configuration error:
There is a syntax error in your configuration file: keyword argument repeated: navigation_with_keys (conf.py, line 240)
Command time: 0s Return: 2
```
Seen in #8387","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8390/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1966567753,PR_kwDOAMm_X85eBydo,8386,Use get_args for duckarray checks,14371165,closed,0,,,1,2023-10-28T11:58:57Z,2023-10-28T12:46:10Z,2023-10-28T12:45:32Z,MEMBER,,1,pydata/xarray/pulls/8386,"
xref: #8376
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8386/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1962432308,PR_kwDOAMm_X85dzwDL,8376,Add chunkedduckarray to _typing ,14371165,closed,0,,,0,2023-10-25T23:09:46Z,2023-10-26T19:10:41Z,2023-10-26T01:13:54Z,MEMBER,,0,pydata/xarray/pulls/8376,"Add more chunkedarray typing options.
Also clean up some ideas that didn't work out. Using TypeVar for arrays for example has turned out to not work that great because of the very common dtype changes.
If you want to check if an ArrayLike is a chunked array:
```python
if isinstance(data, _chunkedarrayfunction_or_api):
data.chunk()
```
However try to rely on mypy in private functions over isinstance checks for better performance:
```python
def _do_compute(data: chunkedduckarray[Any, _DType]) -> duckarray[Any, _DType]:
return data.compute()
```","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8376/reactions"", ""total_count"": 1, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 1, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1957838652,PR_kwDOAMm_X85dkPUb,8362,NamedArray.ndim can only be int,14371165,closed,0,,,0,2023-10-23T19:02:48Z,2023-10-23T19:04:14Z,2023-10-23T19:04:14Z,MEMBER,,0,pydata/xarray/pulls/8362,"ndim is usually defined as `len(self.shape)`, which does not care about the values in the shape-tuple.
So there's no risk when getting unknown shape sizes from for example a masked dask array.
Reference:
https://data-apis.org/array-api/latest/API_specification/generated/array_api.array.ndim.html
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8362/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1955651132,PR_kwDOAMm_X85dc-58,8355,Use namedarray repr in _array_api docstrings,14371165,closed,0,,,0,2023-10-21T20:20:31Z,2023-10-22T04:50:30Z,2023-10-22T00:52:03Z,MEMBER,,0,pydata/xarray/pulls/8355,"Use the normal repr now that NamedArray has one.
Noticed a bug as well, that sometimes the repr attempts to call `NamedArray._in_memory` which doesn't exist.
Seen in #8344.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8355/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1955654332,PR_kwDOAMm_X85dc_gm,8356,Remove unnecessary for loop when using get_axis_num,14371165,closed,0,,,0,2023-10-21T20:33:37Z,2023-10-22T04:50:16Z,2023-10-22T00:49:39Z,MEMBER,,0,pydata/xarray/pulls/8356,Noticed an unnecessary for loop when playing around with `self.get_axis_num` in #8344.,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8356/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1954723109,PR_kwDOAMm_X85dZ9lj,8352,Add better ASV test cases for open_dataset,14371165,closed,0,,,0,2023-10-20T17:12:29Z,2023-10-20T18:34:36Z,2023-10-20T18:34:35Z,MEMBER,,0,pydata/xarray/pulls/8352,With more realistic array sizes maybe the improvements in #8339 should be noticeable.,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8352/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1946069214,PR_kwDOAMm_X85c8hTY,8320,Remove redundant check in IndexVariable,14371165,closed,0,,,0,2023-10-16T20:50:19Z,2023-10-17T16:41:32Z,2023-10-17T16:41:32Z,MEMBER,,0,pydata/xarray/pulls/8320,"Reverts a few things from #8313. An IndexVariable can only have PandasIndexAdapter as self._data, which makes the for MemoryCachedArray unnecessary.
Seen in #8294.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8320/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1944068053,PR_kwDOAMm_X85c1sC5,8314,Align MemoryCachedArray and PandasIndexingAdapter more,14371165,closed,0,,,1,2023-10-15T21:42:27Z,2023-10-16T20:01:21Z,2023-10-16T20:01:20Z,MEMBER,,0,pydata/xarray/pulls/8314,"Seen in #8294.
The issue is the IndexVariable, ExplicitlyIndexedNDArrayMixin lacks `.array` which is required for IndexVariable, and therefore we need a new minimal class that are common between the two.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8314/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1944059054,PR_kwDOAMm_X85c1qR0,8312,Fix typing issues in tests,14371165,closed,0,,,1,2023-10-15T21:11:12Z,2023-10-16T15:09:57Z,2023-10-16T15:09:57Z,MEMBER,,0,pydata/xarray/pulls/8312,"Seen in #8294.
These tests implicitly made sure the type was correct in a way that type checkers wont understand. Make it explicit instead.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8312/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1944067022,PR_kwDOAMm_X85c1r1z,8313,Reverse type checks for better type inheritance,14371165,closed,0,,,0,2023-10-15T21:38:59Z,2023-10-16T06:30:55Z,2023-10-16T06:30:55Z,MEMBER,,0,pydata/xarray/pulls/8313,"Seen in #8294.
It's usually better to switch if-checks so that the wider type is defined first. Especially when relying on the implicit type casting like we do here.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8313/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1944083743,PR_kwDOAMm_X85c1vGB,8315,Handle numpy missing the array api function astype,14371165,closed,0,,,1,2023-10-15T22:32:17Z,2023-10-16T06:25:20Z,2023-10-16T06:25:19Z,MEMBER,,0,pydata/xarray/pulls/8315,"This is how our get_array_namespace works:
https://github.com/pydata/xarray/blob/dafd726c36e24ac77427513a4a149a6933353b66/xarray/core/duck_array_ops.py#L44-L48
Which usually works. But not for astype.
Using np.array_api doesn't work because you have to use np.array_api.Array instead of np.ndarray:
```python
import numpy.array_api as nxp
nxp.astype(np.array([1, 2,]), np.dtype(float))
Traceback (most recent call last):
File ""C:\Users\J.W\AppData\Local\Temp\ipykernel_8616\23329947.py"", line 1, in
nxp.astype(np.array([1, 2,]), np.dtype(float))
File ""C:\Users\J.W\anaconda3\envs\xarray-tests\lib\site-packages\numpy\array_api\_data_type_functions.py"", line 20, in astype
return Array._new(x._array.astype(dtype=dtype, copy=copy))
AttributeError: 'numpy.ndarray' object has no attribute '_array'
```
I found it simpler to just change astype here.
An alternative solution would be to use: https://github.com/data-apis/array-api-compat
https://github.com/tomwhite/cubed/pull/317
Seen in #8294.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8315/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1938790253,PR_kwDOAMm_X85ckfW9,8295,"Remove real, imag, astype methods from NamedArray",14371165,closed,0,,,1,2023-10-11T21:44:26Z,2023-10-13T15:58:07Z,2023-10-13T15:58:06Z,MEMBER,,0,pydata/xarray/pulls/8295,"These methods are not in the Array API. Instead convert the methods to functions in similar fashion as the array api.
https://data-apis.org/array-api/latest/API_specification/index.html
Not sure how to handle array compliant functions with an axis argument (max for example) but that's for a future PR.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8295/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1931329996,PR_kwDOAMm_X85cK3Or,8281,Add high level from_array function in namedarray,14371165,closed,0,,,1,2023-10-07T12:19:23Z,2023-10-10T17:10:37Z,2023-10-10T17:10:37Z,MEMBER,,1,pydata/xarray/pulls/8281,"The Idea is to avoid as much normalization in the NamedArray class as possible.
Different types are handled before initializing instead.
- [ ] 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`
References:
https://github.com/tomwhite/cubed/blob/ea885193dd37d27917a24878b51bb086aaef5fb1/cubed/core/ops.py#L34
https://stackoverflow.com/questions/74633074/how-to-type-hint-a-generic-numpy-array
https://numpy.org/doc/stable/reference/arrays.scalars.html#scalars
https://github.com/numpy/numpy/blob/040ed2dc9847265c581a342301dd87d2b518a3c2/numpy/__init__.pyi#L1423
https://github.com/numpy/numpy/blob/040ed2dc9847265c581a342301dd87d2b518a3c2/numpy/_typing/_array_like.py#L32
Mypy issues:
https://github.com/python/typing/issues/548","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8281/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1931220385,PR_kwDOAMm_X85cKhhk,8279,Add pyright type checker,14371165,closed,0,,,5,2023-10-07T06:38:14Z,2023-10-09T12:32:29Z,2023-10-09T12:32:28Z,MEMBER,,0,pydata/xarray/pulls/8279,"It can be helpful to get a second opinion from another typer checker than mypy.
The CI activates when the `run-pyright` label is added.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8279/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1931223548,PR_kwDOAMm_X85cKiKo,8280,Remove if condition to trigger mypy,14371165,closed,0,,,0,2023-10-07T06:49:18Z,2023-10-08T00:49:34Z,2023-10-08T00:49:34Z,MEMBER,,0,pydata/xarray/pulls/8280,This seems to be fixed according to #6551.,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8280/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1903465587,PR_kwDOAMm_X85atB8W,8211,Add T_DuckArray to DataArray,14371165,open,0,,,0,2023-09-19T17:48:11Z,2023-10-03T17:45:40Z,,MEMBER,,1,pydata/xarray/pulls/8211,"
- [ ] 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/8211/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1903622707,PR_kwDOAMm_X85atj9b,8214,Bind T_DuckArray to Variable,14371165,open,0,,,0,2023-09-19T19:42:34Z,2023-10-03T17:40:26Z,,MEMBER,,1,pydata/xarray/pulls/8214,"
- [ ] 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/8214/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1916447957,PR_kwDOAMm_X85bYxsO,8243,Add type hints to maybe_promote in dtypes.py,14371165,closed,0,,,0,2023-09-27T22:53:34Z,2023-09-28T19:39:56Z,2023-09-28T19:39:55Z,MEMBER,,0,pydata/xarray/pulls/8243,Reducing type errors in #8241,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8243/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1916331957,PR_kwDOAMm_X85bYX4z,8240,Bind T_DuckArray to NamedArray,14371165,closed,0,,,1,2023-09-27T21:11:58Z,2023-09-28T16:18:26Z,2023-09-28T16:18:26Z,MEMBER,,0,pydata/xarray/pulls/8240,Binding allows typing the .data property.,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8240/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1909448043,PR_kwDOAMm_X85bBQuc,8226,Add typing to functions related to data_vars,14371165,closed,0,,,0,2023-09-22T19:54:22Z,2023-09-24T14:03:55Z,2023-09-24T14:03:55Z,MEMBER,,0,pydata/xarray/pulls/8226,A smaller PR related to trying to pass T_DuckArray's along xarray's different classes.,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8226/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1901520970,PR_kwDOAMm_X85amcNE,8203,Add T_DuckArray type hint to Variable.data,14371165,closed,0,,,3,2023-09-18T18:33:50Z,2023-09-19T17:41:28Z,2023-09-19T15:23:25Z,MEMBER,,0,pydata/xarray/pulls/8203,"The typing of Variable.data has been the very wide `Variable.data: Any` because of the difficulties defining the typing of a duckarray.
This has led to confusion in downstream functions that uses `.data`. Sometimes arguments uses Any, np.typing.ArrayLike, np.ndarray or dask array typing which is unnecessarily narrow when xarray also supports for example sparse arrays or cupy arrays.
This PR is a start at cleaning this up by defining a T_DuckArray typevar that symbolizes an array api compliant array.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8203/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1691206894,I_kwDOAMm_X85kzcTu,7802,Mypy errors with matplotlib 3.8,14371165,closed,0,,,6,2023-05-01T19:03:51Z,2023-09-17T05:03:00Z,2023-09-17T05:02:59Z,MEMBER,,,,"Matplotlib has started to support typing in main (https://github.com/matplotlib/matplotlib/issues/20504) and mypy is throwing a few errors:
```
xarray/core/options.py:12: error: Cannot assign to a type [misc]
xarray/core/options.py:12: error: Incompatible types in assignment (expression has type ""Type[str]"", variable has type ""Type[Colormap]"") [assignment]
xarray/plot/utils.py:808: error: Argument 1 to ""set_xticks"" of ""_AxesBase"" has incompatible type ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]""; expected ""Iterable[float]"" [arg-type]
xarray/plot/utils.py:810: error: Argument 1 to ""set_yticks"" of ""_AxesBase"" has incompatible type ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]""; expected ""Iterable[float]"" [arg-type]
xarray/plot/utils.py:813: error: Argument 1 to ""set_xlim"" of ""_AxesBase"" has incompatible type ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]""; expected ""Union[float, Tuple[float, float], None]"" [arg-type]
xarray/plot/utils.py:815: error: Argument 1 to ""set_ylim"" of ""_AxesBase"" has incompatible type ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]""; expected ""Union[float, Tuple[float, float], None]"" [arg-type]
Generated Cobertura report: /home/runner/work/xarray/xarray/mypy_report/cobertura.xml
Installing missing stub packages:
/home/runner/micromamba-root/envs/xarray-tests/bin/python -m pip install types-Pillow types-PyYAML types-Pygments types-babel types-colorama types-paramiko types-psutil types-pytz types-pywin32 types-setuptools types-urllib3
Generated Cobertura report: /home/runner/work/xarray/xarray/mypy_report/cobertura.xml
Found 154 errors in 10 files (checked 138 source files)
xarray/plot/utils.py:1349: error: Unsupported operand types for * (""_SupportsArray[dtype[Any]]"" and ""float"") [operator]
xarray/plot/utils.py:1349: error: Unsupported operand types for * (""_NestedSequence[_SupportsArray[dtype[Any]]]"" and ""float"") [operator]
xarray/plot/utils.py:1349: error: Unsupported operand types for * (""_NestedSequence[Union[bool, int, float, complex, str, bytes]]"" and ""float"") [operator]
xarray/plot/utils.py:1349: note: Left operand is of type ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]""
xarray/plot/utils.py:1349: error: Unsupported operand types for * (""str"" and ""float"") [operator]
xarray/plot/utils.py:1349: error: Unsupported operand types for * (""bytes"" and ""float"") [operator]
xarray/plot/utils.py:1350: error: Item ""_SupportsArray[dtype[Any]]"" of ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]"" has no attribute ""mask"" [union-attr]
xarray/plot/utils.py:1350: error: Item ""_NestedSequence[_SupportsArray[dtype[Any]]]"" of ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]"" has no attribute ""mask"" [union-attr]
xarray/plot/utils.py:1350: error: Item ""int"" of ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]"" has no attribute ""mask"" [union-attr]
xarray/plot/utils.py:1350: error: Item ""float"" of ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]"" has no attribute ""mask"" [union-attr]
xarray/plot/utils.py:1350: error: Item ""complex"" of ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]"" has no attribute ""mask"" [union-attr]
xarray/plot/utils.py:1350: error: Item ""str"" of ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]"" has no attribute ""mask"" [union-attr]
xarray/plot/utils.py:1350: error: Item ""bytes"" of ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]"" has no attribute ""mask"" [union-attr]
xarray/plot/utils.py:1350: error: Item ""_NestedSequence[Union[bool, int, float, complex, str, bytes]]"" of ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]"" has no attribute ""mask"" [union-attr]
xarray/plot/utils.py:1351: error: Item ""_SupportsArray[dtype[Any]]"" of ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]"" has no attribute ""mask"" [union-attr]
xarray/plot/utils.py:1351: error: Item ""_NestedSequence[_SupportsArray[dtype[Any]]]"" of ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]"" has no attribute ""mask"" [union-attr]
xarray/plot/utils.py:1351: error: Item ""int"" of ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]"" has no attribute ""mask"" [union-attr]
xarray/plot/utils.py:1351: error: Item ""float"" of ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]"" has no attribute ""mask"" [union-attr]
xarray/plot/utils.py:1351: error: Item ""complex"" of ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]"" has no attribute ""mask"" [union-attr]
xarray/plot/utils.py:1351: error: Item ""str"" of ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]"" has no attribute ""mask"" [union-attr]
xarray/plot/utils.py:1351: error: Item ""bytes"" of ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]"" has no attribute ""mask"" [union-attr]
xarray/plot/utils.py:1351: error: Item ""_NestedSequence[Union[bool, int, float, complex, str, bytes]]"" of ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]"" has no attribute ""mask"" [union-attr]
xarray/plot/facetgrid.py:684: error: ""FigureCanvasBase"" has no attribute ""get_renderer"" [attr-defined]
xarray/plot/accessor.py:182: error: Overloaded function signatures 1 and 2 overlap with incompatible return types [misc]
xarray/plot/accessor.py:182: error: Overloaded function signatures 1 and 3 overlap with incompatible return types [misc]
xarray/plot/accessor.py:309: error: Overloaded function signatures 1 and 2 overlap with incompatible return types [misc]
xarray/plot/accessor.py:309: error: Overloaded function signatures 1 and 3 overlap with incompatible return types [misc]
xarray/plot/accessor.py:428: error: Overloaded function implementation cannot produce return type of signature 2 [misc]
xarray/plot/accessor.py:428: error: Overloaded function implementation cannot produce return type of signature 3 [misc]
xarray/plot/accessor.py:433: error: Overloaded function signatures 1 and 2 overlap with incompatible return types [misc]
xarray/plot/accessor.py:433: error: Overloaded function signatures 1 and 3 overlap with incompatible return types [misc]
xarray/plot/accessor.py:552: error: Overloaded function implementation cannot produce return type of signature 2 [misc]
xarray/plot/accessor.py:552: error: Overloaded function implementation cannot produce return type of signature 3 [misc]
xarray/plot/accessor.py:557: error: Overloaded function signatures 1 and 2 overlap with incompatible return types [misc]
xarray/plot/accessor.py:557: error: Overloaded function signatures 1 and 3 overlap with incompatible return types [misc]
xarray/plot/accessor.py:676: error: Overloaded function implementation cannot produce return type of signature 2 [misc]
xarray/plot/accessor.py:676: error: Overloaded function implementation cannot produce return type of signature 3 [misc]
xarray/plot/accessor.py:681: error: Overloaded function signatures 1 and 2 overlap with incompatible return types [misc]
xarray/plot/accessor.py:681: error: Overloaded function signatures 1 and 3 overlap with incompatible return types [misc]
xarray/plot/accessor.py:800: error: Overloaded function implementation cannot produce return type of signature 2 [misc]
xarray/plot/accessor.py:800: error: Overloaded function implementation cannot produce return type of signature 3 [misc]
xarray/plot/accessor.py:948: error: Overloaded function signatures 1 and 2 overlap with incompatible return types [misc]
xarray/plot/accessor.py:948: error: Overloaded function signatures 1 and 3 overlap with incompatible return types [misc]
xarray/plot/accessor.py:1075: error: Overloaded function signatures 1 and 2 overlap with incompatible return types [misc]
xarray/plot/accessor.py:1075: error: Overloaded function signatures 1 and 3 overlap with incompatible return types [misc]
xarray/plot/accessor.py:1190: error: Overloaded function signatures 1 and 2 overlap with incompatible return types [misc]
xarray/plot/accessor.py:1190: error: Overloaded function signatures 1 and 3 overlap with incompatible return types [misc]
xarray/plot/dataset_plot.py:324: error: Overloaded function signatures 1 and 2 overlap with incompatible return types [misc]
xarray/plot/dataset_plot.py:324: error: Overloaded function signatures 1 and 3 overlap with incompatible return types [misc]
xarray/plot/dataset_plot.py:478: error: Overloaded function signatures 1 and 2 overlap with incompatible return types [misc]
xarray/plot/dataset_plot.py:478: error: Overloaded function signatures 1 and 3 overlap with incompatible return types [misc]
xarray/plot/dataset_plot.py:649: error: Function gets multiple values for keyword argument ""x"" [misc]
xarray/plot/dataset_plot.py:649: error: Function gets multiple values for keyword argument ""y"" [misc]
xarray/plot/dataset_plot.py:649: error: Function gets multiple values for keyword argument ""u"" [misc]
xarray/plot/dataset_plot.py:649: error: Function gets multiple values for keyword argument ""v"" [misc]
xarray/plot/dataset_plot.py:649: error: Function gets multiple values for keyword argument ""density"" [misc]
xarray/plot/dataset_plot.py:649: error: Function gets multiple values for keyword argument ""linewidth"" [misc]
xarray/plot/dataset_plot.py:649: error: Function gets multiple values for keyword argument ""color"" [misc]
xarray/plot/dataset_plot.py:649: error: Function gets multiple values for keyword argument ""cmap"" [misc]
xarray/plot/dataset_plot.py:649: error: Function gets multiple values for keyword argument ""norm"" [misc]
xarray/plot/dataset_plot.py:649: error: Function gets multiple values for keyword argument ""arrowsize"" [misc]
xarray/plot/dataset_plot.py:649: error: Function gets multiple values for keyword argument ""arrowstyle"" [misc]
xarray/plot/dataset_plot.py:649: error: Function gets multiple values for keyword argument ""minlength"" [misc]
xarray/plot/dataset_plot.py:649: error: Function gets multiple values for keyword argument ""transform"" [misc]
xarray/plot/dataset_plot.py:649: error: Function gets multiple values for keyword argument ""zorder"" [misc]
xarray/plot/dataset_plot.py:649: error: Function gets multiple values for keyword argument ""start_points"" [misc]
xarray/plot/dataset_plot.py:649: error: Function gets multiple values for keyword argument ""maxlength"" [misc]
xarray/plot/dataset_plot.py:649: error: Function gets multiple values for keyword argument ""integration_direction"" [misc]
xarray/plot/dataset_plot.py:649: error: Function gets multiple values for keyword argument ""broken_streamlines"" [misc]
xarray/plot/dataset_plot.py:649: error: Argument 1 has incompatible type ""*List[ndarray[Any, Any]]""; expected ""Union[float, Tuple[float, float]]"" [arg-type]
xarray/plot/dataset_plot.py:649: error: Argument 1 has incompatible type ""*List[ndarray[Any, Any]]""; expected ""Union[str, Colormap, None]"" [arg-type]
xarray/plot/dataset_plot.py:649: error: Argument 1 has incompatible type ""*List[ndarray[Any, Any]]""; expected ""Union[str, Normalize, None]"" [arg-type]
xarray/plot/dataset_plot.py:649: error: Argument 1 has incompatible type ""*List[ndarray[Any, Any]]""; expected ""float"" [arg-type]
xarray/plot/dataset_plot.py:649: error: Argument 1 has incompatible type ""*List[ndarray[Any, Any]]""; expected ""Union[str, ArrowStyle]"" [arg-type]
xarray/plot/dataset_plot.py:649: error: Argument 1 has incompatible type ""*List[ndarray[Any, Any]]""; expected ""Optional[Transform]"" [arg-type]
xarray/plot/dataset_plot.py:649: error: Argument 1 has incompatible type ""*List[ndarray[Any, Any]]""; expected ""Optional[float]"" [arg-type]
xarray/plot/dataset_plot.py:649: error: Argument 1 has incompatible type ""*List[ndarray[Any, Any]]""; expected ""Literal['forward', 'backward', 'both']"" [arg-type]
xarray/plot/dataset_plot.py:649: error: Argument 1 has incompatible type ""*List[ndarray[Any, Any]]""; expected ""bool"" [arg-type]
xarray/plot/dataset_plot.py:751: error: Overloaded function signatures 1 and 2 overlap with incompatible return types [misc]
xarray/plot/dataset_plot.py:751: error: Overloaded function signatures 1 and 3 overlap with incompatible return types [misc]
xarray/plot/dataarray_plot.py:718: error: Incompatible return value type (got ""Tuple[Union[ndarray[Any, Any], List[ndarray[Any, Any]]], ndarray[Any, Any], Union[BarContainer, Polygon, List[Union[BarContainer, Polygon]]]]"", expected ""Tuple[ndarray[Any, Any], ndarray[Any, Any], BarContainer]"") [return-value]
xarray/plot/dataarray_plot.py:996: error: ""Axes"" has no attribute ""view_init"" [attr-defined]
xarray/plot/dataarray_plot.py:1106: error: Overloaded function signatures 1 and 2 overlap with incompatible return types [misc]
xarray/plot/dataarray_plot.py:1106: error: Overloaded function signatures 1 and 3 overlap with incompatible return types [misc]
xarray/plot/dataarray_plot.py:1261: error: Argument 1 to ""scatter"" of ""Axes"" has incompatible type ""*List[ndarray[Any, Any]]""; expected ""Union[Sequence[Union[Union[Tuple[float, float, float], str], Union[str, Tuple[float, float, float, float], Tuple[Union[Tuple[float, float, float], str], float], Tuple[Tuple[float, float, float, float], float]]]], Union[Union[Tuple[float, float, float], str], Union[str, Tuple[float, float, float, float], Tuple[Union[Tuple[float, float, float], str], float], Tuple[Tuple[float, float, float, float], float]]], None]"" [arg-type]
xarray/plot/dataarray_plot.py:1261: error: Argument 1 to ""scatter"" of ""Axes"" has incompatible type ""*List[ndarray[Any, Any]]""; expected ""Optional[Union[str, Path, MarkerStyle]]"" [arg-type]
xarray/plot/dataarray_plot.py:1261: error: Argument 1 to ""scatter"" of ""Axes"" has incompatible type ""*List[ndarray[Any, Any]]""; expected ""Union[str, Colormap, None]"" [arg-type]
xarray/plot/dataarray_plot.py:1261: error: Argument 1 to ""scatter"" of ""Axes"" has incompatible type ""*List[ndarray[Any, Any]]""; expected ""Union[str, Normalize, None]"" [arg-type]
xarray/plot/dataarray_plot.py:1261: error: Argument 1 to ""scatter"" of ""Axes"" has incompatible type ""*List[ndarray[Any, Any]]""; expected ""Optional[float]"" [arg-type]
xarray/plot/dataarray_plot.py:1261: error: Argument 1 to ""scatter"" of ""Axes"" has incompatible type ""*List[ndarray[Any, Any]]""; expected ""Union[float, Sequence[float], None]"" [arg-type]
xarray/plot/dataarray_plot.py:1615: error: ""Axes"" has no attribute ""set_zlabel"" [attr-defined]
xarray/plot/dataarray_plot.py:1655: error: Overloaded function signatures 1 and 2 overlap with incompatible return types [misc]
xarray/plot/dataarray_plot.py:1655: error: Overloaded function signatures 1 and 3 overlap with incompatible return types [misc]
xarray/plot/dataarray_plot.py:1874: error: Overloaded function signatures 1 and 2 overlap with incompatible return types [misc]
xarray/plot/dataarray_plot.py:1874: error: Overloaded function signatures 1 and 3 overlap with incompatible return types [misc]
xarray/plot/dataarray_plot.py:2010: error: Overloaded function signatures 1 and 2 overlap with incompatible return types [misc]
xarray/plot/dataarray_plot.py:2010: error: Overloaded function signatures 1 and 3 overlap with incompatible return types [misc]
xarray/plot/dataarray_plot.py:2146: error: Overloaded function signatures 1 and 2 overlap with incompatible return types [misc]
xarray/plot/dataarray_plot.py:2146: error: Overloaded function signatures 1 and 3 overlap with incompatible return types [misc]
xarray/plot/dataarray_plot.py:2464: error: ""Axes"" has no attribute ""plot_surface"" [attr-defined]
xarray/tests/test_plot.py:427: error: Value of type ""Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]"" is not indexable [index]
xarray/tests/test_plot.py:443: error: Module has no attribute ""viridis"" [attr-defined]
xarray/tests/test_plot.py:457: error: ""None"" not callable [misc]
xarray/tests/test_plot.py:462: error: ""None"" not callable [misc]
xarray/tests/test_plot.py:465: error: ""None"" not callable [misc]
xarray/tests/test_plot.py:471: error: Module has no attribute ""viridis"" [attr-defined]
xarray/tests/test_plot.py:477: error: Module has no attribute ""viridis"" [attr-defined]
xarray/tests/test_plot.py:482: error: Module has no attribute ""viridis"" [attr-defined]
xarray/tests/test_plot.py:486: error: Module has no attribute ""viridis"" [attr-defined]
xarray/tests/test_plot.py:493: error: ""None"" not callable [misc]
xarray/tests/test_plot.py:498: error: ""None"" not callable [misc]
xarray/tests/test_plot.py:501: error: ""None"" not callable [misc]
xarray/tests/test_plot.py:931: error: Module has no attribute ""magma"" [attr-defined]
xarray/tests/test_plot.py:933: error: Module has no attribute ""magma"" [attr-defined]
xarray/tests/test_plot.py:1173: error: Module has no attribute ""RdBu"" [attr-defined]
xarray/tests/test_plot.py:1746: error: Item ""Colormap"" of ""Optional[Colormap]"" has no attribute ""colors"" [union-attr]
xarray/tests/test_plot.py:1746: error: Item ""None"" of ""Optional[Colormap]"" has no attribute ""colors"" [union-attr]
xarray/tests/test_plot.py:1747: error: Item ""Colormap"" of ""Optional[Colormap]"" has no attribute ""colors"" [union-attr]
xarray/tests/test_plot.py:1747: error: Item ""None"" of ""Optional[Colormap]"" has no attribute ""colors"" [union-attr]
xarray/tests/test_plot.py:1749: error: Item ""Colormap"" of ""Optional[Colormap]"" has no attribute ""_rgba_over"" [union-attr]
xarray/tests/test_plot.py:1749: error: Item ""None"" of ""Optional[Colormap]"" has no attribute ""_rgba_over"" [union-attr]
xarray/tests/test_plot.py:1801: error: Item ""None"" of ""Optional[ndarray[Any, Any]]"" has no attribute ""size"" [union-attr]
xarray/tests/test_plot.py:1952: error: Item ""None"" of ""Optional[ndarray[Any, Any]]"" has no attribute ""min"" [union-attr]
xarray/tests/test_plot.py:1952: error: Item ""None"" of ""Optional[ndarray[Any, Any]]"" has no attribute ""max"" [union-attr]
xarray/tests/test_plot.py:1968: error: Item ""None"" of ""Optional[ndarray[Any, Any]]"" has no attribute ""dtype"" [union-attr]
xarray/tests/test_plot.py:1969: error: Value of type ""Optional[ndarray[Any, Any]]"" is not indexable [index]
xarray/tests/test_plot.py:2125: error: ""Artist"" has no attribute ""get_clim"" [attr-defined]
xarray/tests/test_plot.py:2135: error: ""Colorbar"" has no attribute ""vmin"" [attr-defined]
xarray/tests/test_plot.py:2136: error: ""Colorbar"" has no attribute ""vmax"" [attr-defined]
xarray/tests/test_plot.py:2202: error: ""Artist"" has no attribute ""get_clim"" [attr-defined]
xarray/tests/test_plot.py:2218: error: ""Artist"" has no attribute ""norm"" [attr-defined]
xarray/tests/test_plot.py:2747: error: Item ""_AxesBase"" of ""Optional[_AxesBase]"" has no attribute ""legend_"" [union-attr]
xarray/tests/test_plot.py:2747: error: Item ""None"" of ""Optional[_AxesBase]"" has no attribute ""legend_"" [union-attr]
xarray/tests/test_plot.py:2754: error: Item ""None"" of ""Optional[_AxesBase]"" has no attribute ""get_legend"" [union-attr]
xarray/tests/test_plot.py:2775: error: Item ""None"" of ""Optional[FigureBase]"" has no attribute ""axes"" [union-attr]
xarray/tests/test_plot.py:2775: error: Argument 1 to ""len"" has incompatible type ""Union[_AxesBase, None, Any]""; expected ""Sized"" [arg-type]
xarray/tests/test_plot.py:2803: error: Module has no attribute ""dates"" [attr-defined]
xarray/tests/test_plot.py:2812: error: Module has no attribute ""dates"" [attr-defined]
xarray/tests/test_plot.py:2831: error: Item ""None"" of ""Optional[_AxesBase]"" has no attribute ""xaxis"" [union-attr]
xarray/tests/test_plot.py:2831: error: Module has no attribute ""dates"" [attr-defined]
xarray/tests/test_groupby.py:715: error: Argument 1 to ""groupby"" of ""Dataset"" has incompatible type ""ndarray[Any, dtype[signedinteger[Any]]]""; expected ""Union[Hashable, DataArray, IndexVariable]"" [arg-type]
xarray/tests/test_groupby.py:715: note: Following member(s) of ""ndarray[Any, dtype[signedinteger[Any]]]"" have conflicts:
xarray/tests/test_groupby.py:715: note: __hash__: expected ""Callable[[], int]"", got ""None""
xarray/tests/test_dataset.py:6964: error: ""PlainQuantity[Any]"" not callable [operator]
xarray/tests/test_dataset.py:6965: error: ""PlainQuantity[Any]"" not callable [operator]
xarray/tests/test_dataset.py:7007: error: ""PlainQuantity[Any]"" not callable [operator]
xarray/tests/test_dataset.py:7008: error: ""PlainQuantity[Any]"" not callable [operator]
xarray/tests/test_dataarray.py:6687: error: ""PlainQuantity[Any]"" not callable [operator]
xarray/tests/test_dataarray.py:6689: error: ""PlainQuantity[Any]"" not callable [operator]
xarray/tests/test_dataarray.py:6735: error: ""PlainQuantity[Any]"" not callable [operator]
xarray/tests/test_dataarray.py:6737: error: ""PlainQuantity[Any]"" not callable [operator]
```
Some guidance how to solve these:
> - `[xy]ticks` in mpl is currently overly narrowly type hinted because I was following the docstring, but I agree that `ArrayLike` is a better type hint for that, plan on updating (including the docstring) upstream
> - `[xy]lim` originally neglected the case of passing `set_xlim((min, max))` as a tuple, but that has been updated. xarray has that type hinted as array like, but mpl has it hinted as a 2-tuple (I think it is currently still of floats, but may be expanded as we more directly address units/categoricals/etc). Willing to debate here, but my starting position is that the ""exactly 2 values"" is valuable info here, and I think `tuple` is the only way to do that.
> - `get_renderer` is not actually available on all of our backends, we should maybe see if there is a more preferred way of doing what you are doing here that will work for all backends, but haven't looked into it too closely.
> - `Module has no attribute ` is another instance of dynamically generated behavior which can't be statically type checked (elegantly, at least), can probably be replaced by `mpl.colormaps[""""]` in many cases, which is statically typecheckable
> - Anything to do with 3D Axes is not type hinted, perhaps ignore for now (or help us get that type hinted adequately, but it is relatively low priority currently)
> - `Module has no attribute ""dates""` we don't currently type hint dates/units things, but it is on my mind, not sure yet if it will be in first release or not though (may at least put a placeholder that gets rid of this error, but treats everything as ""Any"").
_Originally posted by @ksunden in https://github.com/pydata/xarray/issues/7787#issuecomment-1523743471_
> The suggestion from mpl (specifically @tacaswell) was to use [constrained layout](https://matplotlib.org/stable/tutorials/intermediate/constrainedlayout_guide.html) for the purpose that xarray currently uses `get_renderer`, this will ensure that the `facetgrid` works with all mpl backends.
_Originally posted by @ksunden in https://github.com/pydata/xarray/issues/7787#issuecomment-1528091492_
> I'm also relatively sure that if you are willing to put a floor on the version of Matplotlib you support `get_window_extent` will use it's internally cached renderer (and when we make it uniformly optional we also fixed the cache invalidation logic).
_Originally posted by @tacaswell in https://github.com/pydata/xarray/issues/7787#issuecomment-1528096647_
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7802/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
1890927857,PR_kwDOAMm_X85aC50x,8172,"Don't try to sort hashable, map to string",14371165,closed,0,,,0,2023-09-11T17:10:22Z,2023-09-11T18:09:15Z,2023-09-11T18:09:15Z,MEMBER,,0,pydata/xarray/pulls/8172,"Fixes the mypy error we're seeing in the CI at the moment:
```
xarray/core/dataset.py:5286: error: Value of type variable ""SupportsRichComparisonT"" of ""sorted"" cannot be ""Hashable"" [type-var]
```
Can't sort Hashables apparently.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8172/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1826978659,I_kwDOAMm_X85s5Xtj,8028,Setting datarrays with non-dimension coordinates errors,14371165,open,0,,,6,2023-07-28T19:20:31Z,2023-08-10T15:25:23Z,,MEMBER,,,,"### What happened?
I'm not sure if this is a bug or a feature but I was expecting this example to work since the new coord is just a slight rewrite of the original dimension coordinate:
```python
import xarray as xr
ds = xr.tutorial.open_dataset(""air_temperature"")
# Change the first time value:
ds[""air_new""] = ds.air.copy()
air_new_changed = ds.air_new[{""time"": 0}] * 3
ds.air_new.loc[air_new_changed.coords] = air_new_changed # Works! :)
# Add a another coord along time axis and change
# the first time value:
ds[""air_new""] = ds.air.copy().assign_coords(
{""time_float"": ds.time.astype(float)}
)
air_new_changed = ds.air_new[{""time"": 0}] * 4
ds.air_new.loc[air_new_changed.coords] = air_new_changed # Error! :(
Traceback (most recent call last):
Cell In[25], line 5
ds.air_new.loc[air_new_changed.coords] = air_new_changed
File ~\AppData\Local\mambaforge\envs\jw\lib\site-packages\xarray\core\dataarray.py:222 in __setitem__
dim_indexers = map_index_queries(self.data_array, key).dim_indexers
File ~\AppData\Local\mambaforge\envs\jw\lib\site-packages\xarray\core\indexing.py:182 in map_index_queries
grouped_indexers = group_indexers_by_index(obj, indexers, options)
File ~\AppData\Local\mambaforge\envs\jw\lib\site-packages\xarray\core\indexing.py:144 in group_indexers_by_index
raise KeyError(f""no index found for coordinate {key!r}"")
KeyError: ""no index found for coordinate 'time_float'""
```
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8028/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue
1549889322,PR_kwDOAMm_X85IKePm,7460,Add abstractmethods to backend classes,14371165,open,0,,,1,2023-01-19T20:19:36Z,2023-07-29T11:42:33Z,,MEMBER,,1,pydata/xarray/pulls/7460,"It's been unclear to me what methods are necessary to implement or not. I think decorating with `@abstractmethod` will help with that. It's a breaking change though and it could be disruptive.
- [ ] 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/7460/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1797533374,PR_kwDOAMm_X85VIIy4,7975,Test using asv compare,14371165,open,0,,,0,2023-07-10T20:27:31Z,2023-07-13T21:47:05Z,,MEMBER,,1,pydata/xarray/pulls/7975,"
- [ ] 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`
References:
https://github.com/cvxpy/cvxpy/pull/1810
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7975/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1797246423,PR_kwDOAMm_X85VHLJ1,7972,Skip broken tests on Python 3.11 and Windows,14371165,closed,0,,,0,2023-07-10T17:54:54Z,2023-07-10T18:54:38Z,2023-07-10T18:54:38Z,MEMBER,,0,pydata/xarray/pulls/7972,"Temporally skip tests in order to make CI pass again, the troublesome tests are reported in #7971.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7972/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1795519181,I_kwDOAMm_X85rBXLN,7969,Upstream CI is failing,14371165,closed,0,,,2,2023-07-09T18:51:41Z,2023-07-10T17:34:12Z,2023-07-10T17:33:12Z,MEMBER,,,,"### What happened?
The upstream CI has been failing for a while. Here's the latest:
https://github.com/pydata/xarray/actions/runs/5501368493/jobs/10024902009#step:7:16
```python
Traceback (most recent call last):
File """", line 1, in
File ""/home/runner/work/xarray/xarray/xarray/__init__.py"", line 1, in
from xarray import testing, tutorial
File ""/home/runner/work/xarray/xarray/xarray/testing.py"", line 7, in
import numpy as np
ModuleNotFoundError: No module named 'numpy'
```
Digging a little in the logs
```
Installing build dependencies: started
Installing build dependencies: finished with status 'error'
error: subprocess-exited-with-error
× pip subprocess to install build dependencies did not run successfully.
│ exit code: 1
╰─> [3 lines of output]
Looking in indexes: https://pypi.anaconda.org/scipy-wheels-nightly/simple
ERROR: Could not find a version that satisfies the requirement meson-python==0.13.1 (from versions: none)
ERROR: No matching distribution found for meson-python==0.13.1
[end of output]
```
Might be some numpy problem?
Should the CI be robust enough to handle these kinds of errors? Because I suppose we would like to get the automatic issue created anyway?","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7969/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
1797186226,PR_kwDOAMm_X85VG-Nj,7970,Use another repository for upstream testing,14371165,closed,0,,,2,2023-07-10T17:10:55Z,2023-07-10T17:33:11Z,2023-07-10T17:33:11Z,MEMBER,,0,pydata/xarray/pulls/7970,"Use https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/ instead.
- [x] Closes #7969
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7970/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1795424047,PR_kwDOAMm_X85VBAF6,7968,Move absolute path finder from open_mfdataset to own function,14371165,closed,0,,,2,2023-07-09T14:24:38Z,2023-07-10T14:04:06Z,2023-07-10T14:04:05Z,MEMBER,,0,pydata/xarray/pulls/7968,"A simple refactor to make it easier to retrieve the proper paths that `open_mfdataset` uses and passes on the engine.
I've been thinking how to make use of DataTree and one idea I wanted to try was:
* Open file (using` _find_absolute_path`).
* Get all groups in the file.
* For each group run `xr.open_mfdataset(..., group=group)`","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7968/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1410618081,PR_kwDOAMm_X85A4TS_,7174,Move .line to plot1d,14371165,open,0,,,0,2022-10-16T20:51:23Z,2023-06-19T20:37:30Z,,MEMBER,,1,pydata/xarray/pulls/7174,"
- [ ] 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/7174/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1699099029,PR_kwDOAMm_X85P8IoD,7824,Improve concat performance,14371165,closed,0,,,1,2023-05-07T14:54:06Z,2023-06-02T14:36:11Z,2023-06-02T14:36:11Z,MEMBER,,0,pydata/xarray/pulls/7824,"* Don't use python for loops for possibly large coords. Rather create a np array once then filter out bad data.
* DuckArrayModule is slightly slow, so cache the first import in a dict instead to speed up later calls.
* Add more typing to be more confident that inputs are valid and then remove redundant checks and conversions.
- [x] Requires #7843
- [x] Requires #7844.
- [x] Requires #7858
- [x] Closes #7833
- [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/7824/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1710752209,PR_kwDOAMm_X85QjIMH,7844,Improve to_dask_dataframe performance,14371165,closed,0,,,1,2023-05-15T20:08:24Z,2023-05-25T20:08:54Z,2023-05-25T20:08:54Z,MEMBER,,0,pydata/xarray/pulls/7844,"* ds.chunks loops all the variables, do it once.
* Faster to create a meta dataframe once than letting dask guess 2000 times.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7844/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1718427036,PR_kwDOAMm_X85Q88zP,7857,Avoid explicit loop when updating OrderedSet,14371165,closed,0,,,0,2023-05-21T09:06:58Z,2023-05-25T20:08:35Z,2023-05-25T20:08:34Z,MEMBER,,0,pydata/xarray/pulls/7857,"Following recommendation from: https://github.com/pydata/xarray/pull/7824#discussion_r1196114696
```python
# main:
a = tuple(f""dim_{i}"" for i in range(500))
%timeit OrderedSet(a)
46 µs ± 2.26 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
# This PR:
a = tuple(f""dim_{i}"" for i in range(500))
%timeit OrderedSet(a)
28.9 µs ± 476 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
```
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7857/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1718477599,PR_kwDOAMm_X85Q9G1M,7858,Add type hints to test_dtypes,14371165,closed,0,,,0,2023-05-21T12:00:26Z,2023-05-21T12:30:18Z,2023-05-21T12:30:18Z,MEMBER,,0,pydata/xarray/pulls/7858,"Split out from #7858.
Improve mypy coverage in order to understand better what the functions are actually used for.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7858/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1710742907,PR_kwDOAMm_X85QjGIu,7843,Improve interp performance,14371165,closed,0,,,0,2023-05-15T20:02:25Z,2023-05-18T18:54:15Z,2023-05-18T18:54:15Z,MEMBER,,0,pydata/xarray/pulls/7843,"* Use fastpaths
* Only transpose multi-dimensional arrays.
* Calculating chunks and shapes can be costly, prefer doing it once.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7843/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1697987899,PR_kwDOAMm_X85P4g05,7820,Pin pint to 0.20,14371165,closed,0,,,1,2023-05-05T17:59:40Z,2023-05-06T07:27:28Z,2023-05-06T07:27:28Z,MEMBER,,0,pydata/xarray/pulls/7820,"Newest pint crashes our tests for some reason, pin it for now.
- [ ] 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/7820/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1691458797,PR_kwDOAMm_X85PiT3U,7804,Test asv ci,14371165,closed,0,,,0,2023-05-01T21:54:07Z,2023-05-01T22:24:14Z,2023-05-01T22:24:14Z,MEMBER,,1,pydata/xarray/pulls/7804,"
- [ ] 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/7804/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
970245117,MDExOlB1bGxSZXF1ZXN0NzEyMjIzNzc2,5704,Allow in-memory arrays with open_mfdataset,14371165,open,0,,,8,2021-08-13T09:50:26Z,2023-04-29T06:58:26Z,,MEMBER,,0,pydata/xarray/pulls/5704,"The docstring seems to imply that it's possible to get in-memory arrays:
https://github.com/pydata/xarray/blob/4bb9d9c6df77137f05e85c7cc6508fe7a93dc0e4/xarray/backends/api.py#L732
But it doesn't seem possible because of:
https://github.com/pydata/xarray/blob/4bb9d9c6df77137f05e85c7cc6508fe7a93dc0e4/xarray/backends/api.py#L899
This PR removes that `or` check, changes the default to `chunk={}`, and fixes the failing tests.
- [x] Noticed in #5689
- [ ] Closes #7792
- [x] Tests added
- [x] Passes `pre-commit run --all-files`
- [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst`
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/5704/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1522810384,PR_kwDOAMm_X85G1P52,7424,array api - Add tests for aggregations,14371165,open,0,,,3,2023-01-06T16:10:05Z,2023-04-20T13:37:13Z,,MEMBER,,1,pydata/xarray/pulls/7424,"
- [ ] Closes #7243
- [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/7424/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1665260014,PR_kwDOAMm_X85OK8Yp,7752,Fix typing errors using mypy 1.2,14371165,closed,0,,,2,2023-04-12T21:08:31Z,2023-04-15T18:31:58Z,2023-04-15T18:31:57Z,MEMBER,,0,pydata/xarray/pulls/7752,"Fixes typing errors when using newest mypy version.
- [x] Closes #7270","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7752/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1638243008,PR_kwDOAMm_X85MxepP,7668,Pull Request Labeler - Use a released version,14371165,closed,0,,,1,2023-03-23T20:18:49Z,2023-03-23T20:29:04Z,2023-03-23T20:29:04Z,MEMBER,,0,pydata/xarray/pulls/7668,"
- [ ] 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/7668/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1638194068,PR_kwDOAMm_X85MxT6K,7667,Pull Request Labeler - Undo workaround sync-labels bug,14371165,closed,0,,,3,2023-03-23T19:45:31Z,2023-03-23T20:25:47Z,2023-03-23T20:23:03Z,MEMBER,,0,pydata/xarray/pulls/7667,"Seems https://github.com/actions/labeler/issues/112 is fixed. So using false should work.
xref: #7431","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7667/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1125040125,I_kwDOAMm_X85DDr_9,6244,Get pyupgrade to update the typing,14371165,closed,0,,,2,2022-02-05T21:56:56Z,2023-03-12T15:38:37Z,2023-03-12T15:38:37Z,MEMBER,,,,"### Is your feature request related to a problem?
Use more up-to-date typing styles on all files. Will reduce number of imports and avoids big diffs when doing relatively minor changes because pre-commit/pyupgrade has been triggered somehow.
Related to #6240
### Describe the solution you'd like
Add `from __future__ import annotations` on files with a lot of typing.
Let pyupgrade do the rest.
### Describe alternatives you've considered
_No response_
### Additional context
_No response_","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6244/reactions"", ""total_count"": 3, ""+1"": 3, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
1444440024,PR_kwDOAMm_X85CpkQO,7277,Require to explicitly defining optional dimensions such as hue and markersize,14371165,closed,0,,,5,2022-11-10T19:23:28Z,2023-02-11T20:55:16Z,2023-02-11T20:55:16Z,MEMBER,,0,pydata/xarray/pulls/7277,"- [x] Closes #7314
- [x] Closes #7268
* Matplotlib adds default colors with `plt.plot(x, y)` when `y` is a 2D array.
* Matplotlib prioritizes `c` over default colors with `plt.plot(x, y, c=""blue"")` when `y` is a 2D array.
* Seaborn prioritizes `hue` over `c`, but all plot axes has to be explicit.
The plot1d function now follows closer to seaborns example and require explicitly defining optional dimensions such as hue/markersize. Positives and negatives:
+++ Reliable performance, won't accidentally choose large and heavy arrays to plot.
\- Loss of dimension information for default values, will essentially flatten the n-dimensional arrays.
\- Other xarray plot functions guesses quite a bit as well, API is not consistent.
Required dimensions like the x-axis will still be guessed since the mpl errors weren't very intuitive.
While at it:
* Make it possible to prioritize certain mpl kwargs when hue/markersize isn't defined.
* Fix integer coords in `plot1`d and facetgrid, use `.coords` instead of `getitem`.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7277/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1462470712,PR_kwDOAMm_X85DmbNT,7318,Use plt.rc_context for default styles,14371165,closed,0,,,2,2022-11-23T22:11:23Z,2023-02-09T12:56:00Z,2023-02-09T12:56:00Z,MEMBER,,0,pydata/xarray/pulls/7318,"
- [x] Closes #7313
- [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/7318/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1554036799,PR_kwDOAMm_X85IYHUz,7472,Avoid in-memory broadcasting when converting to_dask_dataframe,14371165,closed,0,,,1,2023-01-24T00:15:01Z,2023-01-26T17:00:24Z,2023-01-26T17:00:23Z,MEMBER,,0,pydata/xarray/pulls/7472,"Turns out that there's a call to `.set_dims` that forces a broadcast on the numpy coordinates.
- [x] Closes #6811
- [x] Tests added, see #7474.
- [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst`
Debugging script:
```python
import dask.array as da
import xarray as xr
import numpy as np
chunks = 5000
# I have to restart the pc if running with this:
# dim1_sz = 100_000
# dim2_sz = 100_000
# Does not crash when using the following constants, >5 gig RAM increase though:
dim1_sz = 40_000
dim2_sz = 40_000
x = da.random.random((dim1_sz, dim2_sz), chunks=chunks)
ds = xr.Dataset(
{
""x"": xr.DataArray(
data=x,
dims=[""dim1"", ""dim2""],
coords={""dim1"": np.arange(0, dim1_sz), ""dim2"": np.arange(0, dim2_sz)},
)
}
)
# with dask.config.set(**{""array.slicing.split_large_chunks"": True}):
df = ds.to_dask_dataframe()
print(df)
```
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7472/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1555497796,PR_kwDOAMm_X85Ic_wm,7474,Add benchmarks for to_dataframe and to_dask_dataframe,14371165,closed,0,,,1,2023-01-24T18:48:26Z,2023-01-24T21:00:39Z,2023-01-24T20:13:30Z,MEMBER,,0,pydata/xarray/pulls/7474,Related to #7472.,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7474/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1490160140,PR_kwDOAMm_X85FGOVk,7374,Improve performance for backend datetime handling,14371165,closed,0,,,3,2022-12-11T16:01:05Z,2023-01-18T22:45:36Z,2023-01-13T14:50:53Z,MEMBER,,0,pydata/xarray/pulls/7374,"Was hunting some low-hanging performance fruits when reading in files.
* Use Variable(..., fastpath=True) for cases when a Variable has been unpacked and modified slightly.
* Don't check if variable is variable in decode_cf_variable
* Don't import DataArray until necessary in as_compatible_data.
* Add typing to touched files to make sure only Variables are used.
- [ ] 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/7374/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1537068105,I_kwDOAMm_X85bncxJ,7450,Backend array documentation typo,14371165,open,0,,,0,2023-01-17T21:37:26Z,2023-01-17T21:56:12Z,,MEMBER,,,,"### What happened?
https://docs.xarray.dev/en/stable/internals/how-to-add-new-backend.html#indexing-examples
I believe there's a typo in the BASIC indexing support example:
```python
# shall support integers
backend_array._raw_indexing_method(1, 1)
```
Should be:
```python
# shall support integers
backend_array._raw_indexing_method((1, 1))
```
Suggestion of possible fixes:
* Make sure it is a typo.
* Create a valid custom MyBackendArray and initialize it. So it is easier to tell if it's a typo.
* Add type hinting so mypy can easier catch these errors.
### What did you expect to happen?
_No response_
### Minimal Complete Verifiable Example
_No response_
### MVCE confirmation
- [ ] Minimal example — the example is as focused as reasonably possible to demonstrate the underlying issue in xarray.
- [ ] Complete example — the example is self-contained, including all data and the text of any traceback.
- [ ] Verifiable example — the example copy & pastes into an IPython prompt or [Binder notebook](https://mybinder.org/v2/gh/pydata/xarray/main?urlpath=lab/tree/doc/examples/blank_template.ipynb), returning the result.
- [ ] New issue — a search of GitHub Issues suggests this is not a duplicate.
### Relevant log output
_No response_
### Anything else we need to know?
_No response_
### Environment
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7450/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue
1318800553,I_kwDOAMm_X85Om0yp,6833,Require a pull request before merging to main,14371165,closed,0,,,4,2022-07-26T22:09:55Z,2023-01-13T16:51:03Z,2023-01-13T16:51:03Z,MEMBER,,,,"### Is your feature request related to a problem?
I was making sure the test in #6832 failed on main, when it did I wrote a few lines in the `what's new` file but forgot switching back to the other branch and accidentally pushed directly to main. :(
### Describe the solution you'd like
I think it's best if we require a pull request for merging. We seem to pretty much do this anyway.
Seems to be this setting if I understand correctly:

### Describe alternatives you've considered
_No response_
### Additional context
_No response_","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6833/reactions"", ""total_count"": 3, ""+1"": 3, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
1523232313,PR_kwDOAMm_X85G2q5I,7426,Add lazy backend ASV test,14371165,closed,0,,,1,2023-01-06T22:01:26Z,2023-01-12T16:00:05Z,2023-01-11T18:56:25Z,MEMBER,,0,pydata/xarray/pulls/7426,"This tests xr.open_dataset without any slow file reading that can quickly become the majority of the performance time.
Related to #7374.
Timings for the new ASV-tests:
```
[ 50.85%] ··· dataset_io.IOReadCustomEngine.time_open_dataset ok
[ 50.85%] ··· ======== ============
chunks
-------- ------------
None 265±4ms
{} 1.17±0.02s
======== ============
[ 54.69%] ··· dataset_io.IOReadSingleFile.time_read_dataset ok
[ 54.69%] ··· ========= ============= =============
-- chunks
--------- ---------------------------
engine None {}
========= ============= =============
scipy 4.81±0.1ms 6.65±0.01ms
netcdf4 8.41±0.08ms 10.9±0.2ms
========= ============= =============
```
From the IOReadCustomEngine test we can see that chunking datasets with many variables (2000+) is considerably slower.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7426/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1528100871,PR_kwDOAMm_X85HG6Hh,7431,Pull Request Labeler - Workaround sync-labels bug,14371165,closed,0,,,2,2023-01-10T22:29:03Z,2023-01-10T23:10:32Z,2023-01-10T23:06:14Z,MEMBER,,0,pydata/xarray/pulls/7431,"* Workaround for Pull Request Labeler The PR labeler keeps removing manually added labels. xref: https://github.com/actions/labeler/issues/112
* ASV benchmarks starts also when `topic-performance` label is added now. Bot is allowed to change this one, but not `run-benchmarks`. ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7431/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1420242462,PR_kwDOAMm_X85BYlCD,7204,absolufy-imports - No relative imports - PEP8,14371165,closed,0,,,6,2022-10-24T05:27:24Z,2022-12-10T11:42:43Z,2022-12-07T21:24:44Z,MEMBER,,0,pydata/xarray/pulls/7204,"I saw dask has started using absolute imports in https://github.com/dask/dask/pull/8796.
I find it much more readable and there's a nice pre-commit for it as well.
Easiest way to deal with the merge conflicts is probably to just accept your changes and let pre-commit fix them afterwards.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7204/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1485474624,PR_kwDOAMm_X85E1fDn,7370,absolufy-imports - Only in xarray folder,14371165,closed,0,,,1,2022-12-08T21:57:58Z,2022-12-10T11:42:32Z,2022-12-09T16:55:12Z,MEMBER,,0,pydata/xarray/pulls/7370,"This reverts some of commit 6e77f5e8942206b3e0ab08c3621ade1499d8235b and #7204.
Apparently using it on all folders is not a good idea, follow pandas example.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7370/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1462833576,PR_kwDOAMm_X85Dnp5w,7319,mypy - Remove some ignored packages and modules,14371165,closed,0,,,4,2022-11-24T06:34:13Z,2022-11-26T15:39:12Z,2022-11-26T15:39:11Z,MEMBER,,0,pydata/xarray/pulls/7319,"dask has added py.typed files so now the ignores shouldn't be needed anymore:
https://github.com/dask/dask/pull/8854
https://github.com/dask/distributed/pull/5328
As does numpy and pint
pycompat.py doesn't error anymore, so it's good to type check that one as well. Fixed also a python 3.8 related error in it.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7319/reactions"", ""total_count"": 2, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 2, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1447049720,PR_kwDOAMm_X85CyQio,7285,Switch to T_DataArray in .coords,14371165,closed,0,,,3,2022-11-13T19:22:35Z,2022-11-23T17:48:25Z,2022-11-22T17:02:09Z,MEMBER,,0,pydata/xarray/pulls/7285,".coords were still using DataArray types switch to T_DataArray instead.
- [x] Fixes mypy error seen in #7277
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7285/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1457017483,PR_kwDOAMm_X85DTsQq,7303,Add mypy version to xr.show_versions,14371165,closed,0,,,0,2022-11-20T19:27:20Z,2022-11-21T21:33:15Z,2022-11-21T21:33:15Z,MEMBER,,0,pydata/xarray/pulls/7303,"It's a little tricky getting the mypy version, so adding it to the show_versions function as well.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7303/reactions"", ""total_count"": 3, ""+1"": 3, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1452339775,PR_kwDOAMm_X85DEC8r,7296,Fix some typing errors in DuckArrayModule,14371165,closed,0,,,4,2022-11-16T22:07:00Z,2022-11-20T18:52:12Z,2022-11-20T10:18:53Z,MEMBER,,0,pydata/xarray/pulls/7296,"Fixes these errors that I've been seeing locally for a while:
```python
!mypy C:\Users\J.W\Documents\GitHub\xarray\xarray\core\coordinates.py --ignore-missing-imports
C:\Users\J.W\Documents\GitHub\xarray\xarray\core\pycompat.py:48: error: Incompatible types in assignment (expression has type ""Tuple[]"", variable has type ""Tuple[Any]"")
C:\Users\J.W\Documents\GitHub\xarray\xarray\core\pycompat.py:50: error: Incompatible types in assignment (expression has type ""Optional[Module]"", variable has type ""Optional[Literal['dask', 'pint', 'cupy', 'sparse']]"")
Found 2 errors in 1 file (checked 1 source file)
```
Not sure why the CI isn't catching these?","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7296/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1445870847,PR_kwDOAMm_X85CuWCd,7281,Use a default value for constant dimensions,14371165,closed,0,,,1,2022-11-11T18:41:16Z,2022-11-20T09:59:38Z,2022-11-20T09:59:38Z,MEMBER,,0,pydata/xarray/pulls/7281,"* default markersize values of widths are 18 to 72.
* plt.scatter default markersize is 36.
* plt.plot default linewidth is 6.
With main we get 18 for constant arrays, but 36 if markersize was undefined. This seems a bit inconsistent to me.
This PR adds a default value instead for constant arrays
Follow up to #7272.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7281/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1440711212,PR_kwDOAMm_X85Cc31j,7272,Handle division by zero in _Normalize._calc_widths,14371165,closed,0,,,1,2022-11-08T18:35:55Z,2022-11-11T06:27:50Z,2022-11-11T06:27:50Z,MEMBER,,0,pydata/xarray/pulls/7272,Found an issue when constant values was used. Now if constant values are found it'll default to the minimum width value instead.,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7272/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1420230433,PR_kwDOAMm_X85BYia0,7203,Avoid loading any data for reprs ,14371165,closed,0,,,6,2022-10-24T05:12:40Z,2022-10-28T16:23:19Z,2022-10-28T16:23:19Z,MEMBER,,0,pydata/xarray/pulls/7203,"
- [x] Closes #6722
- [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/7203/reactions"", ""total_count"": 1, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 1, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
| |