html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue
https://github.com/pydata/xarray/pull/7353#issuecomment-1400251477,https://api.github.com/repos/pydata/xarray/issues/7353,1400251477,IC_kwDOAMm_X85TdiRV,14808389,2023-01-23T12:18:39Z,2023-01-23T12:18:39Z,MEMBER,"It seemed cleaner to just open a separate PR, so we can use this one to change the python version of the other CI jobs.","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1474717029
https://github.com/pydata/xarray/pull/7353#issuecomment-1400218891,https://api.github.com/repos/pydata/xarray/issues/7353,1400218891,IC_kwDOAMm_X85TdaUL,14371165,2023-01-23T11:51:56Z,2023-01-23T11:51:56Z,MEMBER,"Creating a separate environment file seems like a good idea. Feel free to push the changes you want, @keewis. 
I was thinking of coming back to this once 3.8 was dropped. ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1474717029
https://github.com/pydata/xarray/pull/7353#issuecomment-1400156106,https://api.github.com/repos/pydata/xarray/issues/7353,1400156106,IC_kwDOAMm_X85TdK_K,14808389,2023-01-23T10:59:08Z,2023-01-23T10:59:08Z,MEMBER,"The failing `sparse` tests when `numba` seem to be due to the environment containing `sparse=0.3.1`, which is a *really* old version of `sparse` (and the only one on `conda-forge` that does not depend on `numba`), so I'd say we don't really care? Especially since we're about to drop `python=3.8`.

We need to remove `sparse` from the `python=3.11` environments anyways, since it is implemented using `numba`.","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1474717029
https://github.com/pydata/xarray/pull/7353#issuecomment-1400131518,https://api.github.com/repos/pydata/xarray/issues/7353,1400131518,IC_kwDOAMm_X85TdE--,14808389,2023-01-23T10:38:28Z,2023-01-23T10:42:10Z,MEMBER,"In the interest of moving this forward, should we use a separate environment file for the main CI with `python=3.11` and move all the other environments once these issues have been resolved? Up to you if that would be done here or in a new PR should you want to use this one for the switch to a different default python version.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1474717029
https://github.com/pydata/xarray/pull/7353#issuecomment-1398790498,https://api.github.com/repos/pydata/xarray/issues/7353,1398790498,IC_kwDOAMm_X85TX9li,14371165,2023-01-20T18:42:31Z,2023-01-20T18:42:31Z,MEMBER,"[87d689a](https://github.com/pydata/xarray/pull/7353/commits/87d689a21703940d505893947ea6c0f2572a45ca) shows that we have issues with 3.8 when either of numba/cdms2/numbagg are not available, then we take a different code path that fails somehow. Hopefully with python 3.9 it's fixed.

Failing tests with only python 3.8 with windows, no numba/cdms2/numbagg:

<details>

```
FAILED xarray/tests/test_dataarray.py::TestNumpyCoercion::test_from_sparse - ValueError: Performing this operation would produce a dense result: <ufunc 'add'>
FAILED xarray/tests/test_dataset.py::TestDataset::test_unstack_sparse - TypeError: __init__() got an unexpected keyword argument 'fill_value'
FAILED xarray/tests/test_dataset.py::TestDataset::test_from_dataframe_sparse - TypeError: __init__() got an unexpected keyword argument 'fill_value'
FAILED xarray/tests/test_dataset.py::TestNumpyCoercion::test_from_sparse - ValueError: Performing this operation would produce a dense result: <ufunc 'add'>
FAILED xarray/tests/test_dataarray.py::TestDataArray::test_from_series_sparse - TypeError: __init__() got an unexpected keyword argument 'fill_value'
FAILED xarray/tests/test_dataarray.py::TestDataArray::test_from_multiindex_series_sparse - TypeError: from_numpy() takes 2 positional arguments but 3 were given
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.all(*(), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.any(*(), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.astype(*(), **{'dtype': <class 'int'>})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.clip(*(), **{'min': 0, 'max': 1})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.coarsen(*(), **{'windows': {'x': 2}, 'func': 'sum'})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.compute(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.conj(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.copy(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.count(*(), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.get_axis_num(*(), **{'dim': 'x'})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.isel(*(), **{'x': slice(2, 4, None)})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.isnull(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.load(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.mean(*(), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.notnull(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.roll(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.round(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.set_dims(*(), **{'dims': ('x', 'y', 'z')})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.stack(*(), **{'dimensions': {'flat': ('x', 'y')}})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.to_base_variable(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.transpose(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.unstack(*(), **{'dimensions': {'x': {'x1': 5, 'x2': 2}}})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.broadcast_equals(*(<xarray.Variable (x: 10, y: 5)>\narray([[0.43758721, 0.        , 0.        , 0.891773  , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.96366276],\n       [0.        , 0.        , 0.        , 0.        , 0.4236548 ],\n       [0.        , 0.        , 0.64589411, 0.        , 0.        ]]),), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.equals(*(<xarray.Variable (x: 10, y: 5)>\narray([[0.43758721, 0.        , 0.        , 0.891773  , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.96366276],\n       [0.        , 0.        , 0.        , 0.        , 0.4236548 ],\n       [0.        , 0.        , 0.64589411, 0.        , 0.        ]]),), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.identical(*(<xarray.Variable (x: 10, y: 5)>\narray([[0.43758721, 0.        , 0.        , 0.891773  , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.96366276],\n       [0.        , 0.        , 0.        , 0.        , 0.4236548 ],\n       [0.        , 0.        , 0.64589411, 0.        , 0.        ]]),), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.fillna(*(0,), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.max(*(), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.min(*(), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.prod(*(), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.sum(*(), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_variable_method[obj.where(*(), **{'cond': <xarray.Variable (x: 10, y: 5)>\narray([[False, False, False,  True, False],\n       [False, False, False, False, False],\n       [False, False, False, False, False],\n       [False, False, False, False, False],\n       [False, False, False, False, False],\n       [False, False, False, False, False],\n       [False, False, False, False, False],\n       [False, False, False, False,  True],\n       [False, False, False, False, False],\n       [False, False,  True, False, False]])})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_1d_variable_method[func0-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::TestSparseVariable::test_nbytes - assert 192 == 120
 +  where 192 = <xarray.Variable (x: 4, y: 6)>\narray([[0.        , 0.87001215, 0.        , 0.        , 0.        ,\n        0.        ]...6147936,\n        0.63992102],\n       [0.        , 0.        , 0.77815675, 0.        , 0.0202184 ,\n        0.79915856]]).nbytes
 +    where <xarray.Variable (x: 4, y: 6)>\narray([[0.        , 0.87001215, 0.        , 0.        , 0.        ,\n        0.        ]...6147936,\n        0.63992102],\n       [0.        , 0.        , 0.77815675, 0.        , 0.0202184 ,\n        0.79915856]]) = <xarray.tests.test_sparse.TestSparseVariable object at 0x000001CD9F898520>.var
 +  and   120 = <COO: shape=(4, 6), dtype=float64, nnz=12, sorted=True, duplicates=False>.nbytes
 +    where <COO: shape=(4, 6), dtype=float64, nnz=12, sorted=True, duplicates=False> = <xarray.tests.test_sparse.TestSparseVariable object at 0x000001CD9F898520>.data
FAILED xarray/tests/test_sparse.py::TestSparseVariable::test_unary_op - AssertionError: assert False
 +  where False = isinstance(array([[-0.        , -0.87001215, -0.        , -0.        , -0.        ,\n        -0.        ],\n       [-0.11827443, -0...,\n        -0.63992102],\n       [-0.        , -0.        , -0.77815675, -0.        , -0.0202184 ,\n        -0.79915856]]), (<class 'sparse.sparse_array.SparseArray'>,))
FAILED xarray/tests/test_sparse.py::TestSparseVariable::test_univariate_ufunc - AssertionError: assert False
 +  where False = isinstance(array([[0.        , 0.76433677, 0.        , 0.        , 0.        ,\n        0.        ],\n       [0.11799887, 0.       ...4527321,\n        0.59713209],\n       [0.        , 0.        , 0.70196783, 0.        , 0.02021702,\n        0.7167696 ]]), (<class 'sparse.sparse_array.SparseArray'>,))
FAILED xarray/tests/test_sparse.py::TestSparseVariable::test_bivariate_ufunc - AssertionError: assert False
 +  where False = isinstance(array([[0.        , 0.87001215, 0.        , 0.        , 0.        ,\n        0.        ],\n       [0.11827443, 0.       ...6147936,\n        0.63992102],\n       [0.        , 0.        , 0.77815675, 0.        , 0.0202184 ,\n        0.79915856]]), (<class 'sparse.sparse_array.SparseArray'>,))
FAILED xarray/tests/test_sparse.py::TestSparseVariable::test_repr - AssertionError: assert '<xarray.Vari...ll_value=0.0>' == '<xarray.Vari...0.79915856]])'
    <xarray.Variable (x: 4, y: 6)>
  + <COO: shape=(4, 6), dtype=float64, nnz=12, fill_value=0.0>
  - array([[0.        , 0.87001215, 0.        , 0.        , 0.        ,
  -         0.        ],
  -        [0.11827443, 0.        , 0.78052918, 0.        , 0.0871293 ,
  -         0.07103606],
  -        [0.        , 0.97861834, 0.83261985, 0.        , 0.46147936,
  -         0.63992102],
  -        [0.        , 0.        , 0.77815675, 0.        , 0.0202184 ,
  -         0.79915856]])
FAILED xarray/tests/test_sparse.py::TestSparseVariable::test_pickle - AssertionError: assert False
 +  where False = isinstance(array([[0.        , 0.87001215, 0.        , 0.        , 0.        ,\n        0.        ],\n       [0.11827443, 0.       ...6147936,\n        0.63992102],\n       [0.        , 0.        , 0.77815675, 0.        , 0.0202184 ,\n        0.79915856]]), (<class 'sparse.sparse_array.SparseArray'>,))
FAILED xarray/tests/test_sparse.py::TestSparseVariable::test_missing_values - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.all(*(), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.any(*(), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.assign_attrs(*({'foo': 'bar'},), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.assign_coords(*(), **{'x': <xarray.DataArray 'x' (x: 10)>\narray([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])\nCoordinates:\n  * x        (x) int32 0 1 2 3 4 5 6 7 8 9})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.astype(*(<class 'int'>,), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.clip(*(), **{'min': 0, 'max': 1})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.compute(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.conj(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.copy(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.count(*(), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.diff(*('x',), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.drop_vars(*('x',), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.expand_dims(*({'z': 2},), **{'axis': 2})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.get_axis_num(*('x',), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.get_index(*('x',), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.identical(*(<xarray.DataArray 'test' (x: 5, y: 5)>\narray([[0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.71518937, 0.        , 0.        ],\n       [0.60276338, 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ]])\nCoordinates:\n  * x        (x) int32 0 1 2 3 4\n  * y        (y) int32 0 1 2 3 4,), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.integrate(*('x',), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.isel(*({'x': slice(0, 3, None), 'y': slice(2, 4, None)},), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.isnull(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.load(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.mean(*(), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.persist(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.reindex(*({'x': [1, 2, 3]},), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.rename(*('foo',), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.reorder_levels(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.reset_coords(*(), **{'drop': True})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.reset_index(*('x',), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.round(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.sel(*(), **{'x': [0, 1, 2]})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.shift(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.sortby(*('x',), **{'ascending': False})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.stack(*(), **{'z': ['x', 'y']})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.transpose(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.broadcast_equals(*(<xarray.Variable (x: 10, y: 5)>\narray([[0.43758721, 0.        , 0.        , 0.891773  , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.96366276],\n       [0.        , 0.        , 0.        , 0.        , 0.4236548 ],\n       [0.        , 0.        , 0.64589411, 0.        , 0.        ]]),), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.equals(*(<xarray.Variable (x: 10, y: 5)>\narray([[0.43758721, 0.        , 0.        , 0.891773  , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.96366276],\n       [0.        , 0.        , 0.        , 0.        , 0.4236548 ],\n       [0.        , 0.        , 0.64589411, 0.        , 0.        ]]),), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.combine_first(*(<xarray.DataArray 'test' (x: 10, y: 5)>\narray([[0.43758721, 0.        , 0.        , 0.891773  , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.        ],\n       [0.        , 0.        , 0.        , 0.        , 0.96366276],\n       [0.        , 0.        , 0.        , 0.        , 0.4236548 ],\n       [0.        , 0.        , 0.64589411, 0.        , 0.        ]])\nCoordinates:\n  * x        (x) int32 0 1 2 3 4 5 6 7 8 9\n  * y        (y) int32 0 1 2 3 4,), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.fillna(*(0,), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.max(*(), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.min(*(), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.notnull(*(), **{})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.pipe(*(), **{'func': 'sum', 'axis': 1})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.prod(*(), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.roll(*(), **{'x': 2, 'roll_coords': True})-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dataarray_method[obj.sum(*(), **{})-False] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_datarray_1d_method[func0-True] - AttributeError: 'numpy.ndarray' object has no attribute 'todense'
FAILED xarray/tests/test_sparse.py::test_dask_token - AssertionError: assert False
 +  where False = isinstance(array([0, 0, 1, 2]), <class 'sparse.coo.COO'>)
 +    where array([0, 0, 1, 2]) = <xarray.DataArray (dim_0: 4)>\narray([0, 0, 1, 2])\nDimensions without coordinates: dim_0.data
 +    and   <class 'sparse.coo.COO'> = sparse.COO
FAILED xarray/tests/test_sparse.py::test_apply_ufunc_check_meta_coherence - AssertionError: assert False
 +  where False = isinstance(array([], dtype=int32), (<class 'sparse.sparse_array.SparseArray'>,))
FAILED xarray/tests/test_variable.py::TestVariableWithSparse::test_as_sparse - ValueError: coo is not a valid sparse format
ERROR xarray/tests/test_sparse.py::TestSparseDataArrayAndDataset::test_to_dataset_roundtrip - ValueError: could not broadcast input array from shape (4,6) into shape (4,1)
ERROR xarray/tests/test_sparse.py::TestSparseDataArrayAndDataset::test_align - ValueError: could not broadcast input array from shape (4,6) into shape (4,1)
ERROR xarray/tests/test_sparse.py::TestSparseDataArrayAndDataset::test_align_outer - ValueError: could not broadcast input array from shape (4,6) into shape (4,1)
ERROR xarray/tests/test_sparse.py::TestSparseDataArrayAndDataset::test_concat - ValueError: could not broadcast input array from shape (4,6) into shape (4,1)
ERROR xarray/tests/test_sparse.py::TestSparseDataArrayAndDataset::test_stack - ValueError: could not broadcast input array from shape (4,6) into shape (4,1)
ERROR xarray/tests/test_sparse.py::TestSparseDataArrayAndDataset::test_dataarray_repr - ValueError: could not broadcast input array from shape (4,6) into shape (4,1)
ERROR xarray/tests/test_sparse.py::TestSparseDataArrayAndDataset::test_dataset_repr - ValueError: could not broadcast input array from shape (4,6) into shape (4,1)
ERROR xarray/tests/test_sparse.py::TestSparseDataArrayAndDataset::test_sparse_dask_dataset_repr - ValueError: could not broadcast input array from shape (4,6) into shape (4,1)
ERROR xarray/tests/test_sparse.py::TestSparseDataArrayAndDataset::test_dataarray_pickle - ValueError: could not broadcast input array from shape (4,6) into shape (4,1)
ERROR xarray/tests/test_sparse.py::TestSparseDataArrayAndDataset::test_dataset_pickle - ValueError: could not broadcast input array from shape (4,6) into shape (4,1)
ERROR xarray/tests/test_sparse.py::TestSparseDataArrayAndDataset::test_coarsen - ValueError: could not broadcast input array from shape (4,6) into shape (4,1)
= 93 failed, 14715 passed, 1640 skipped, 211 xfailed, 66 xpassed, 327 warnings, 11 errors in 699.08s (0:11:39) =
```
</details>
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1474717029
https://github.com/pydata/xarray/pull/7353#issuecomment-1398730901,https://api.github.com/repos/pydata/xarray/issues/7353,1398730901,IC_kwDOAMm_X85TXvCV,14371165,2023-01-20T17:41:22Z,2023-01-20T17:41:22Z,MEMBER,"Deprecation warning in pydap failing the docstring tests:
```
ImportError while loading conftest '/home/runner/work/xarray/xarray/xarray/tests/conftest.py'.
xarray/tests/__init__.py:64: in <module>
    has_pydap, requires_pydap = _importorskip(""pydap.client"")
xarray/tests/__init__.py:51: in _importorskip
    mod = importlib.import_module(modname)
../../../micromamba-root/envs/xarray-tests/lib/python3.11/site-packages/pydap/client.py:52: in <module>
    from .net import GET, raise_for_status
../../../micromamba-root/envs/xarray-tests/lib/python3.11/site-packages/pydap/net.py:1: in <module>
    from webob.request import Request
../../../micromamba-root/envs/xarray-tests/lib/python3.11/site-packages/webob/__init__.py:1: in <module>
    from webob.datetime_utils import (  # noqa: F401
../../../micromamba-root/envs/xarray-tests/lib/python3.11/site-packages/webob/datetime_utils.py:18: in <module>
    from webob.compat import (
../../../micromamba-root/envs/xarray-tests/lib/python3.11/site-packages/webob/compat.py:5: in <module>
    from cgi import parse_header
../../../micromamba-root/envs/xarray-tests/lib/python3.11/cgi.py:57: in <module>
    warnings._deprecated(__name__, remove=(3,13))
../../../micromamba-root/envs/xarray-tests/lib/python3.11/warnings.py:514: in _deprecated
    warn(msg, DeprecationWarning, stacklevel=3)
E   DeprecationWarning: 'cgi' is deprecated and slated for removal in Python 3.13
```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1474717029
https://github.com/pydata/xarray/pull/7353#issuecomment-1341598802,https://api.github.com/repos/pydata/xarray/issues/7353,1341598802,IC_kwDOAMm_X85P9yxS,2448579,2022-12-07T21:07:36Z,2022-12-07T21:07:36Z,MEMBER,I bet its cftime and/or pydap,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1474717029
https://github.com/pydata/xarray/pull/7353#issuecomment-1336428214,https://api.github.com/repos/pydata/xarray/issues/7353,1336428214,IC_kwDOAMm_X85PqEa2,10194086,2022-12-04T14:36:33Z,2022-12-04T14:36:33Z,MEMBER,"

```bash
mamba repoquery whoneeds netcdf4
```

but that requires an already solved environment ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1474717029
https://github.com/pydata/xarray/pull/7353#issuecomment-1336402438,https://api.github.com/repos/pydata/xarray/issues/7353,1336402438,IC_kwDOAMm_X85Pp-IG,14371165,2022-12-04T12:41:05Z,2022-12-04T12:41:05Z,MEMBER,"```
 error    libmamba Could not solve for environment specs
      Encountered problems while solving:
        - nothing provides hdf5 1.8.15* needed by netcdf4-1.2.4-np110py27_1
      
      The environment can't be solved, aborting the operation
```

It's a bit annoying the ci isn't showing which package has netcdf4 as a dependency. Is that possible?","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1474717029