From 64f5304b59a95cd04cb424c7b845ba8d5831bc3f Mon Sep 17 00:00:00 2001 From: amalia-k510 Date: Mon, 23 Mar 2026 11:28:44 +0100 Subject: [PATCH 01/36] array-api initially implementation --- 03_23_2026.log | 3361 ++++++++++++++++++++ pyproject.toml | 20 +- src/fast_array_utils/conv/_to_dense.py | 7 + src/fast_array_utils/stats/_generic_ops.py | 9 +- src/fast_array_utils/stats/_is_constant.py | 17 +- src/fast_array_utils/stats/_power.py | 7 + tests/test_jax.py | 121 + 7 files changed, 3535 insertions(+), 7 deletions(-) create mode 100644 03_23_2026.log create mode 100644 tests/test_jax.py diff --git a/03_23_2026.log b/03_23_2026.log new file mode 100644 index 0000000..82944c1 --- /dev/null +++ b/03_23_2026.log @@ -0,0 +1,3361 @@ +============================= test session starts ============================== +platform darwin -- Python 3.13.9, pytest-9.0.2, pluggy-1.6.0 -- /Users/Amalia/fast-array-utils/fast/bin/python3.13 +codspeed: 4.3.0 (disabled, mode: walltime, callgraph: not supported, timer_resolution: 41.7ns) +cachedir: .pytest_cache +rootdir: /Users/Amalia/fast-array-utils +configfile: pyproject.toml +plugins: codspeed-4.3.0, fast-array-utils-0.1.dev118, xdist-3.8.0, doctestplus-1.7.1, zarr-3.1.5 +collecting ... collected 6045 items + +tests/test_jax.py::test_sum[None] PASSED [ 0%] +tests/test_jax.py::test_sum[0] PASSED [ 0%] +tests/test_jax.py::test_sum[1] PASSED [ 0%] +tests/test_jax.py::test_min[None] PASSED [ 0%] +tests/test_jax.py::test_min[0] PASSED [ 0%] +tests/test_jax.py::test_min[1] PASSED [ 0%] +tests/test_jax.py::test_max[None] PASSED [ 0%] +tests/test_jax.py::test_max[0] PASSED [ 0%] +tests/test_jax.py::test_max[1] PASSED [ 0%] +tests/test_jax.py::test_mean[None] PASSED [ 0%] +tests/test_jax.py::test_mean[0] PASSED [ 0%] +tests/test_jax.py::test_mean[1] PASSED [ 0%] +tests/test_jax.py::test_is_constant[None] PASSED [ 0%] +tests/test_jax.py::test_is_constant[0] PASSED [ 0%] +tests/test_jax.py::test_is_constant[1] PASSED [ 0%] +tests/test_jax.py::test_mean_var[None] PASSED [ 0%] +tests/test_jax.py::test_mean_var[0] PASSED [ 0%] +tests/test_jax.py::test_mean_var[1] PASSED [ 0%] +tests/test_jax.py::test_to_dense PASSED [ 0%] +tests/test_jax.py::test_to_dense_to_cpu PASSED [ 0%] +tests/test_sparse.py::test_to_dense[scipy.sparse.csr_array-float64-C] PASSED [ 0%] +tests/test_sparse.py::test_to_dense[scipy.sparse.csr_array-float64-F] PASSED [ 0%] +tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csr_array-float64-C] PASSED [ 0%] +tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csr_array-float64-F] PASSED [ 0%] +tests/test_sparse.py::test_to_dense[scipy.sparse.csr_array-float32-C] PASSED [ 0%] +tests/test_sparse.py::test_to_dense[scipy.sparse.csr_array-float32-F] PASSED [ 0%] +tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csr_array-float32-C] PASSED [ 0%] +tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csr_array-float32-F] PASSED [ 0%] +tests/test_numpy_scipy_sparse.py::test_ndim[scipy.sparse.csr_array] PASSED [ 0%] +tests/test_numpy_scipy_sparse.py::test_shape[scipy.sparse.csr_array] PASSED [ 0%] +tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csr_array-d=i64-i=32] PASSED [ 0%] +tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csr_array-d=i64-i=64] PASSED [ 0%] +tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csr_array-d=f64-i=32] PASSED [ 1%] +tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csr_array-d=f64-i=64] PASSED [ 1%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-1d-ax0-sum] PASSED [ 1%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-1d-ax0-min] PASSED [ 1%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-1d-ax0-max] PASSED [ 1%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-1d-ax0-mean] PASSED [ 1%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-1d-ax0-mean_var] PASSED [ 1%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-1d-ax0-is_constant] PASSED [ 1%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-ax3-sum] PASSED [ 1%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-ax3-min] PASSED [ 1%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-ax3-max] PASSED [ 1%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-ax3-mean] PASSED [ 1%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-ax3-mean_var] PASSED [ 1%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-ax3-is_constant] PASSED [ 1%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-axneg-sum] PASSED [ 1%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-axneg-min] PASSED [ 1%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-axneg-max] PASSED [ 1%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-axneg-mean] PASSED [ 1%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-axneg-mean_var] PASSED [ 1%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-axneg-is_constant] PASSED [ 1%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-1d-all-float32] PASSED [ 1%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-1d-all-float64] PASSED [ 1%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-1d-all-int32] PASSED [ 1%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-1d-all-bool] PASSED [ 1%] +tests/test_stats.py::test_sum[cupy.ndarray-float32-1d-all-float32] SKIPPED [ 1%] +tests/test_stats.py::test_sum[cupy.ndarray-float32-1d-all-float64] SKIPPED [ 1%] +tests/test_stats.py::test_sum[cupy.ndarray-float32-1d-all-int32] SKIPPED [ 1%] +tests/test_stats.py::test_sum[cupy.ndarray-float32-1d-all-bool] SKIPPED [ 1%] +tests/test_stats.py::test_sum[numpy.ndarray-float32-1d-all-float32] PASSED [ 1%] +tests/test_stats.py::test_sum[numpy.ndarray-float32-1d-all-float64] PASSED [ 1%] +tests/test_stats.py::test_sum[numpy.ndarray-float32-1d-all-int32] PASSED [ 1%] +tests/test_stats.py::test_sum[numpy.ndarray-float32-1d-all-bool] PASSED [ 1%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-1d-all-float32] SKIPPED [ 1%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-1d-all-float64] SKIPPED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-1d-all-int32] SKIPPED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-1d-all-bool] SKIPPED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-all-float32] PASSED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-all-float64] PASSED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-all-int32] PASSED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-all-bool] PASSED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-all-float32] PASSED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-all-float64] PASSED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-all-int32] PASSED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-all-bool] PASSED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-all-float32] PASSED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-all-float64] PASSED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-all-int32] PASSED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-all-bool] PASSED [ 2%] +tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-all-float32] SKIPPED [ 2%] +tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-all-float64] SKIPPED [ 2%] +tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-all-int32] SKIPPED [ 2%] +tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-all-bool] SKIPPED [ 2%] +tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-all-float32] PASSED [ 2%] +tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-all-float64] PASSED [ 2%] +tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-all-int32] PASSED [ 2%] +tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-all-bool] PASSED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-all-float32] PASSED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-all-float64] PASSED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-all-int32] PASSED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-all-bool] PASSED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-1d-all-float32] SKIPPED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-1d-all-float64] SKIPPED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-1d-all-int32] SKIPPED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-1d-all-bool] SKIPPED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-ax0-float32] PASSED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-ax0-float64] PASSED [ 2%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-ax0-int32] PASSED [ 3%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-ax0-bool] PASSED [ 3%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-ax0-float32] PASSED [ 3%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-ax0-float64] PASSED [ 3%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-ax0-int32] PASSED [ 3%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-ax0-bool] PASSED [ 3%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-ax0-float32] PASSED [ 3%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-ax0-float64] PASSED [ 3%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-ax0-int32] PASSED [ 3%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-ax0-bool] PASSED [ 3%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-ax0-float32] PASSED [ 3%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-ax0-float64] PASSED [ 3%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-ax0-int32] PASSED [ 3%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-ax0-bool] PASSED [ 3%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-ax0-float32] PASSED [ 3%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-ax0-float64] PASSED [ 3%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-ax0-int32] PASSED [ 3%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-ax0-bool] PASSED [ 3%] +tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-ax0-float32] SKIPPED [ 3%] +tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-ax0-float64] SKIPPED [ 3%] +tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-ax0-int32] SKIPPED [ 3%] +tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-ax0-bool] SKIPPED [ 3%] +tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-ax0-float32] PASSED [ 3%] +tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-ax0-float64] PASSED [ 3%] +tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-ax0-int32] PASSED [ 3%] +tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-ax0-bool] PASSED [ 3%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-ax0-float32] SKIPPED [ 3%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-ax0-float64] SKIPPED [ 3%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-ax0-int32] SKIPPED [ 3%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-ax0-bool] SKIPPED [ 3%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-all-float32] SKIPPED [ 3%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-all-float64] SKIPPED [ 3%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-all-int32] SKIPPED [ 3%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-all-bool] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-1d-all-float32] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-1d-all-float64] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-1d-all-int32] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-1d-all-bool] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-ax1-float32] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-ax1-float64] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-ax1-int32] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-ax1-bool] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-ax1-float32] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-ax1-float64] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-ax1-int32] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-ax1-bool] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-ax1-float32] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-ax1-float64] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-ax1-int32] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-ax1-bool] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-ax1-float32] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-ax1-float64] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-ax1-int32] SKIPPED [ 4%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-ax1-bool] SKIPPED [ 4%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-ax1-float32] PASSED [ 4%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-ax1-float64] PASSED [ 4%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-ax1-int32] PASSED [ 4%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-ax1-bool] PASSED [ 4%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-ax1-float32] PASSED [ 4%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-ax1-float64] PASSED [ 4%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-ax1-int32] PASSED [ 4%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-ax1-bool] PASSED [ 4%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-ax1-float32] PASSED [ 4%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-ax1-float64] PASSED [ 4%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-ax1-int32] PASSED [ 4%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-ax1-bool] PASSED [ 4%] +tests/test_stats.py::test_sum[cupy.ndarray-None-2d-ax1-float32] SKIPPED [ 5%] +tests/test_stats.py::test_sum[cupy.ndarray-None-2d-ax1-float64] SKIPPED [ 5%] +tests/test_stats.py::test_sum[cupy.ndarray-None-2d-ax1-int32] SKIPPED [ 5%] +tests/test_stats.py::test_sum[cupy.ndarray-None-2d-ax1-bool] SKIPPED [ 5%] +tests/test_stats.py::test_sum[numpy.ndarray-None-2d-ax1-float32] PASSED [ 5%] +tests/test_stats.py::test_sum[numpy.ndarray-None-2d-ax1-float64] PASSED [ 5%] +tests/test_stats.py::test_sum[numpy.ndarray-None-2d-ax1-int32] PASSED [ 5%] +tests/test_stats.py::test_sum[numpy.ndarray-None-2d-ax1-bool] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-ax1-float32] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-ax1-float64] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-ax1-int32] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-ax1-bool] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-ax0-float32] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-ax0-float64] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-ax0-int32] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-ax0-bool] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-all-float32] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-all-float64] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-all-int32] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-all-bool] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-1d-all-float32] SKIPPED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-1d-all-float64] SKIPPED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-1d-all-int32] SKIPPED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-1d-all-bool] SKIPPED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-ax1-float32] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-ax1-float64] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-ax1-int32] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-ax1-bool] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-ax1-float32] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-ax1-float64] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-ax1-int32] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-ax1-bool] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-ax1-float32] PASSED [ 5%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-ax1-float64] PASSED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-ax1-int32] PASSED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-ax1-bool] PASSED [ 6%] +tests/test_stats.py::test_sum_to_int[scipy.sparse.csc_matrix-2d-ax1] PASSED [ 6%] +tests/test_stats.py::test_min_max[scipy.sparse.csc_matrix-2d-ax1-min] PASSED [ 6%] +tests/test_stats.py::test_min_max[scipy.sparse.csc_matrix-2d-ax1-max] PASSED [ 6%] +tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-ax1-float32] PASSED [ 6%] +tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-ax1-float64] PASSED [ 6%] +tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-ax1-int32] PASSED [ 6%] +tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-ax1-bool] PASSED [ 6%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-ax1-float32] PASSED [ 6%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-ax1-float64] PASSED [ 6%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-ax1-int32] PASSED [ 6%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-ax1-bool] PASSED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-ax0-float32] PASSED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-ax0-float64] PASSED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-ax0-int32] PASSED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-ax0-bool] PASSED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-all-float32] PASSED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-all-float64] PASSED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-all-int32] PASSED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-all-bool] PASSED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-1d-all-float32] SKIPPED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-1d-all-float64] SKIPPED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-1d-all-int32] SKIPPED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-1d-all-bool] SKIPPED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-ax0-float32] PASSED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-ax0-float64] PASSED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-ax0-int32] PASSED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-ax0-bool] PASSED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-ax0-float32] PASSED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-ax0-float64] PASSED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-ax0-int32] PASSED [ 6%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-ax0-bool] PASSED [ 7%] +tests/test_stats.py::test_sum_to_int[scipy.sparse.csc_matrix-2d-ax0] PASSED [ 7%] +tests/test_stats.py::test_min_max[scipy.sparse.csc_matrix-2d-ax0-min] PASSED [ 7%] +tests/test_stats.py::test_min_max[scipy.sparse.csc_matrix-2d-ax0-max] PASSED [ 7%] +tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-ax0-float32] PASSED [ 7%] +tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-ax0-float64] PASSED [ 7%] +tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-ax0-int32] PASSED [ 7%] +tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-ax0-bool] PASSED [ 7%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-ax0-float32] PASSED [ 7%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-ax0-float64] PASSED [ 7%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-ax0-int32] PASSED [ 7%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-ax0-bool] PASSED [ 7%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-all-float32] PASSED [ 7%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-all-float64] PASSED [ 7%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-all-int32] PASSED [ 7%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-all-bool] PASSED [ 7%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-1d-all-float32] SKIPPED [ 7%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-1d-all-float64] SKIPPED [ 7%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-1d-all-int32] SKIPPED [ 7%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-1d-all-bool] SKIPPED [ 7%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-all-float32] PASSED [ 7%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-all-float64] PASSED [ 7%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-all-int32] PASSED [ 7%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-all-bool] PASSED [ 7%] +tests/test_stats.py::test_sum_to_int[scipy.sparse.csc_matrix-2d-all] PASSED [ 7%] +tests/test_stats.py::test_min_max[scipy.sparse.csc_matrix-2d-all-min] PASSED [ 7%] +tests/test_stats.py::test_min_max[scipy.sparse.csc_matrix-2d-all-max] PASSED [ 7%] +tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-all-float32] PASSED [ 7%] +tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-all-float64] PASSED [ 7%] +tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-all-int32] PASSED [ 7%] +tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-all-bool] PASSED [ 7%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-all-float32] PASSED [ 7%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-all-float64] PASSED [ 7%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-all-int32] PASSED [ 8%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-all-bool] PASSED [ 8%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-1d-all-float32] SKIPPED [ 8%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-1d-all-float64] SKIPPED [ 8%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-1d-all-int32] SKIPPED [ 8%] +tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-1d-all-bool] SKIPPED [ 8%] +tests/test_stats.py::test_sum_to_int[scipy.sparse.csc_matrix-1d-all] PASSED [ 8%] +tests/test_stats.py::test_min_max[scipy.sparse.csc_matrix-1d-all-min] PASSED [ 8%] +tests/test_stats.py::test_min_max[scipy.sparse.csc_matrix-1d-all-max] PASSED [ 8%] +tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-1d-all-float32] SKIPPED [ 8%] +tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-1d-all-float64] SKIPPED [ 8%] +tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-1d-all-int32] SKIPPED [ 8%] +tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-1d-all-bool] SKIPPED [ 8%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-1d-all-float32] SKIPPED [ 8%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-1d-all-float64] SKIPPED [ 8%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-1d-all-int32] SKIPPED [ 8%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-1d-all-bool] SKIPPED [ 8%] +tests/test_sparse.py::test_to_dense[scipy.sparse.csc_matrix-float64-C] PASSED [ 8%] +tests/test_sparse.py::test_to_dense[scipy.sparse.csc_matrix-float64-F] PASSED [ 8%] +tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csc_matrix-float64-C] PASSED [ 8%] +tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csc_matrix-float64-F] PASSED [ 8%] +tests/test_sparse.py::test_to_dense[scipy.sparse.csc_matrix-float32-C] PASSED [ 8%] +tests/test_sparse.py::test_to_dense[scipy.sparse.csc_matrix-float32-F] PASSED [ 8%] +tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csc_matrix-float32-C] PASSED [ 8%] +tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csc_matrix-float32-F] PASSED [ 8%] +tests/test_numpy_scipy_sparse.py::test_ndim[scipy.sparse.csc_matrix] PASSED [ 8%] +tests/test_numpy_scipy_sparse.py::test_shape[scipy.sparse.csc_matrix] PASSED [ 8%] +tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csc_matrix-d=i64-i=32] PASSED [ 8%] +tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csc_matrix-d=i64-i=64] PASSED [ 8%] +tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csc_matrix-d=f64-i=32] PASSED [ 8%] +tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csc_matrix-d=f64-i=64] PASSED [ 8%] +tests/test_stats.py::test_is_constant[scipy.sparse.csc_matrix-None] PASSED [ 8%] +tests/test_stats.py::test_is_constant[scipy.sparse.csc_matrix-0] PASSED [ 8%] +tests/test_stats.py::test_is_constant[scipy.sparse.csc_matrix-1] PASSED [ 9%] +tests/test_test_utils.py::test_conv[scipy.sparse.csc_matrix-float32] PASSED [ 9%] +tests/test_test_utils.py::test_conv[scipy.sparse.csc_matrix-float64] PASSED [ 9%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-numpy.ndarray] PASSED [ 9%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-numpy.ndarray] SKIPPED [ 9%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-numpy.ndarray] PASSED [ 9%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-numpy.ndarray] PASSED [ 9%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-numpy.ndarray] PASSED [ 9%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-numpy.ndarray] SKIPPED [ 9%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-numpy.ndarray] PASSED [ 9%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-numpy.ndarray] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-ax1-float32] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-ax1-float64] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-ax1-int32] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-ax1-bool] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-ax0-float32] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-ax0-float64] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-ax0-int32] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-ax0-bool] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-all-float32] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-all-float64] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-all-int32] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-all-bool] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-1d-all-float32] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-1d-all-float64] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-1d-all-int32] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-1d-all-bool] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-ax1-float32] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-ax1-float64] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-ax1-int32] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-ax1-bool] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-ax1-float32] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-ax1-float64] SKIPPED [ 9%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-ax1-int32] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-ax1-bool] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-ax1-float32] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-ax1-float64] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-ax1-int32] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-ax1-bool] SKIPPED [ 10%] +tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csc_matrix-2d-ax1-min] SKIPPED [ 10%] +tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csc_matrix-2d-ax1-max] SKIPPED [ 10%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-ax1-float32] SKIPPED [ 10%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-ax1-float64] SKIPPED [ 10%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-ax1-int32] SKIPPED [ 10%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-ax1-bool] SKIPPED [ 10%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-ax1-float32] SKIPPED [ 10%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-ax1-float64] SKIPPED [ 10%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-ax1-int32] SKIPPED [ 10%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-ax1-bool] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-ax0-float32] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-ax0-float64] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-ax0-int32] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-ax0-bool] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-all-float32] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-all-float64] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-all-int32] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-all-bool] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-1d-all-float32] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-1d-all-float64] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-1d-all-int32] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-1d-all-bool] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-ax0-float32] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-ax0-float64] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-ax0-int32] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-ax0-bool] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-ax0-float32] SKIPPED [ 10%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-ax0-float64] SKIPPED [ 11%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-ax0-int32] SKIPPED [ 11%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-ax0-bool] SKIPPED [ 11%] +tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csc_matrix-2d-ax0-min] SKIPPED [ 11%] +tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csc_matrix-2d-ax0-max] SKIPPED [ 11%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-ax0-float32] SKIPPED [ 11%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-ax0-float64] SKIPPED [ 11%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-ax0-int32] SKIPPED [ 11%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-ax0-bool] SKIPPED [ 11%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-ax0-float32] SKIPPED [ 11%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-ax0-float64] SKIPPED [ 11%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-ax0-int32] SKIPPED [ 11%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-ax0-bool] SKIPPED [ 11%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-all-float32] SKIPPED [ 11%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-all-float64] SKIPPED [ 11%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-all-int32] SKIPPED [ 11%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-all-bool] SKIPPED [ 11%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-1d-all-float32] SKIPPED [ 11%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-1d-all-float64] SKIPPED [ 11%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-1d-all-int32] SKIPPED [ 11%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-1d-all-bool] SKIPPED [ 11%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-all-float32] SKIPPED [ 11%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-all-float64] SKIPPED [ 11%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-all-int32] SKIPPED [ 11%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-all-bool] SKIPPED [ 11%] +tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csc_matrix-2d-all-min] SKIPPED [ 11%] +tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csc_matrix-2d-all-max] SKIPPED [ 11%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-all-float32] SKIPPED [ 11%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-all-float64] SKIPPED [ 11%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-all-int32] SKIPPED [ 11%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-all-bool] SKIPPED [ 11%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-all-float32] SKIPPED [ 11%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-all-float64] SKIPPED [ 11%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-all-int32] SKIPPED [ 12%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-all-bool] SKIPPED [ 12%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-1d-all-float32] SKIPPED [ 12%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-1d-all-float64] SKIPPED [ 12%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-1d-all-int32] SKIPPED [ 12%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-1d-all-bool] SKIPPED [ 12%] +tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csc_matrix-1d-all-min] SKIPPED [ 12%] +tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csc_matrix-1d-all-max] SKIPPED [ 12%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-1d-all-float32] SKIPPED [ 12%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-1d-all-float64] SKIPPED [ 12%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-1d-all-int32] SKIPPED [ 12%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-1d-all-bool] SKIPPED [ 12%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-1d-all-float32] SKIPPED [ 12%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-1d-all-float64] SKIPPED [ 12%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-1d-all-int32] SKIPPED [ 12%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-1d-all-bool] SKIPPED [ 12%] +tests/test_test_utils.py::test_conv[cupyx.scipy.sparse.csc_matrix-float32] SKIPPED [ 12%] +tests/test_test_utils.py::test_conv[cupyx.scipy.sparse.csc_matrix-float64] SKIPPED [ 12%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-cupy.ndarray] SKIPPED [ 12%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-cupy.ndarray] SKIPPED [ 12%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-cupy.ndarray] SKIPPED [ 12%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-cupy.ndarray] SKIPPED [ 12%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-cupy.ndarray] SKIPPED [ 12%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-cupy.ndarray] SKIPPED [ 12%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-cupy.ndarray] SKIPPED [ 12%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-cupy.ndarray] SKIPPED [ 12%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-cupy.ndarray] SKIPPED [ 12%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-numpy.ndarray] PASSED [ 12%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-ax1-float32] PASSED [ 12%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-ax1-float64] PASSED [ 12%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-ax1-int32] PASSED [ 12%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-ax1-bool] PASSED [ 12%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-ax0-float32] PASSED [ 12%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-ax0-float64] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-ax0-int32] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-ax0-bool] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-all-float32] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-all-float64] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-all-int32] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-all-bool] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-1d-all-float32] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-1d-all-float64] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-1d-all-int32] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-1d-all-bool] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-ax1-float32] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-ax1-float64] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-ax1-int32] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-ax1-bool] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-ax1-float32] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-ax1-float64] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-ax1-int32] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-ax1-bool] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-ax1-float32] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-ax1-float64] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-ax1-int32] PASSED [ 13%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-ax1-bool] PASSED [ 13%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[numpy.ndarray]-2d-ax1] PASSED [ 13%] +tests/test_stats.py::test_min_max[dask.array.Array[numpy.ndarray]-2d-ax1-min] PASSED [ 13%] +tests/test_stats.py::test_min_max[dask.array.Array[numpy.ndarray]-2d-ax1-max] PASSED [ 13%] +tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-ax1-float32] PASSED [ 13%] +tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-ax1-float64] PASSED [ 13%] +tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-ax1-int32] PASSED [ 13%] +tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-ax1-bool] PASSED [ 13%] +tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-ax1-float32] PASSED [ 13%] +tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-ax1-float64] PASSED [ 13%] +tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-ax1-int32] PASSED [ 13%] +tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-ax1-bool] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-ax0-float32] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-ax0-float64] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-ax0-int32] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-ax0-bool] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-all-float32] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-all-float64] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-all-int32] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-all-bool] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-1d-all-float32] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-1d-all-float64] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-1d-all-int32] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-1d-all-bool] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-ax0-float32] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-ax0-float64] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-ax0-int32] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-ax0-bool] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-ax0-float32] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-ax0-float64] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-ax0-int32] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-ax0-bool] PASSED [ 14%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[numpy.ndarray]-2d-ax0] PASSED [ 14%] +tests/test_stats.py::test_min_max[dask.array.Array[numpy.ndarray]-2d-ax0-min] PASSED [ 14%] +tests/test_stats.py::test_min_max[dask.array.Array[numpy.ndarray]-2d-ax0-max] PASSED [ 14%] +tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-ax0-float32] PASSED [ 14%] +tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-ax0-float64] PASSED [ 14%] +tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-ax0-int32] PASSED [ 14%] +tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-ax0-bool] PASSED [ 14%] +tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-ax0-float32] PASSED [ 14%] +tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-ax0-float64] PASSED [ 14%] +tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-ax0-int32] PASSED [ 14%] +tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-ax0-bool] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-all-float32] PASSED [ 14%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-all-float64] PASSED [ 15%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-all-int32] PASSED [ 15%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-all-bool] PASSED [ 15%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-1d-all-float32] PASSED [ 15%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-1d-all-float64] PASSED [ 15%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-1d-all-int32] PASSED [ 15%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-1d-all-bool] PASSED [ 15%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-all-float32] PASSED [ 15%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-all-float64] PASSED [ 15%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-all-int32] PASSED [ 15%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-all-bool] PASSED [ 15%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[numpy.ndarray]-2d-all] PASSED [ 15%] +tests/test_stats.py::test_min_max[dask.array.Array[numpy.ndarray]-2d-all-min] PASSED [ 15%] +tests/test_stats.py::test_min_max[dask.array.Array[numpy.ndarray]-2d-all-max] PASSED [ 15%] +tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-all-float32] PASSED [ 15%] +tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-all-float64] PASSED [ 15%] +tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-all-int32] PASSED [ 15%] +tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-all-bool] PASSED [ 15%] +tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-all-float32] PASSED [ 15%] +tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-all-float64] PASSED [ 15%] +tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-all-int32] PASSED [ 15%] +tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-all-bool] PASSED [ 15%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-1d-all-float32] PASSED [ 15%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-1d-all-float64] PASSED [ 15%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-1d-all-int32] PASSED [ 15%] +tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-1d-all-bool] PASSED [ 15%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[numpy.ndarray]-1d-all] PASSED [ 15%] +tests/test_stats.py::test_min_max[dask.array.Array[numpy.ndarray]-1d-all-min] PASSED [ 15%] +tests/test_stats.py::test_min_max[dask.array.Array[numpy.ndarray]-1d-all-max] PASSED [ 15%] +tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-1d-all-float32] PASSED [ 15%] +tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-1d-all-float64] PASSED [ 15%] +tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-1d-all-int32] PASSED [ 15%] +tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-1d-all-bool] PASSED [ 15%] +tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-1d-all-float32] PASSED [ 16%] +tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-1d-all-float64] PASSED [ 16%] +tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-1d-all-int32] PASSED [ 16%] +tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-1d-all-bool] PASSED [ 16%] +tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-1d-ax0-sum] PASSED [ 16%] +tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-1d-ax0-min] PASSED [ 16%] +tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-1d-ax0-max] PASSED [ 16%] +tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-1d-ax0-mean] PASSED [ 16%] +tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-1d-ax0-mean_var] PASSED [ 16%] +tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-1d-ax0-is_constant] PASSED [ 16%] +tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-ax3-sum] PASSED [ 16%] +tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-ax3-min] PASSED [ 16%] +tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-ax3-max] PASSED [ 16%] +tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-ax3-mean] PASSED [ 16%] +tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-ax3-mean_var] PASSED [ 16%] +tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-ax3-is_constant] PASSED [ 16%] +tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-axneg-sum] PASSED [ 16%] +tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-axneg-min] PASSED [ 16%] +tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-axneg-max] PASSED [ 16%] +tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-axneg-mean] PASSED [ 16%] +tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-axneg-mean_var] PASSED [ 16%] +tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-axneg-is_constant] PASSED [ 16%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-0-3x2-sum] PASSED [ 16%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-0-3x2-min] PASSED [ 16%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-0-3x2-max] PASSED [ 16%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-0-2x3-sum] PASSED [ 16%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-0-2x3-min] PASSED [ 16%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-0-2x3-max] PASSED [ 16%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-0-2x2-sum] PASSED [ 16%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-0-2x2-min] PASSED [ 16%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-0-2x2-max] PASSED [ 16%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-1-3x2-sum] PASSED [ 16%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-1-3x2-min] PASSED [ 16%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-1-3x2-max] PASSED [ 17%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-1-2x3-sum] PASSED [ 17%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-1-2x3-min] PASSED [ 17%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-1-2x3-max] PASSED [ 17%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-1-2x2-sum] PASSED [ 17%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-1-2x2-min] PASSED [ 17%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-1-2x2-max] PASSED [ 17%] +tests/test_stats.py::test_is_constant[dask.array.Array[numpy.ndarray]-None] PASSED [ 17%] +tests/test_stats.py::test_is_constant[dask.array.Array[numpy.ndarray]-0] PASSED [ 17%] +tests/test_stats.py::test_is_constant[dask.array.Array[numpy.ndarray]-1] PASSED [ 17%] +tests/test_stats.py::test_dask_constant_blocks[dask.array.Array[numpy.ndarray]] PASSED [ 17%] +tests/test_test_utils.py::test_conv[dask.array.Array[numpy.ndarray]-float32] PASSED [ 17%] +tests/test_test_utils.py::test_conv[dask.array.Array[numpy.ndarray]-float64] PASSED [ 17%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-scipy.sparse.csr_array] PASSED [ 17%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-scipy.sparse.csr_array] SKIPPED [ 17%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-scipy.sparse.csr_array] PASSED [ 17%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-scipy.sparse.csr_array] SKIPPED [ 17%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-scipy.sparse.csr_array] PASSED [ 17%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-scipy.sparse.csr_array] PASSED [ 17%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-scipy.sparse.csr_array] PASSED [ 17%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-scipy.sparse.csr_array] SKIPPED [ 17%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-scipy.sparse.csr_array] PASSED [ 17%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-scipy.sparse.csr_array] SKIPPED [ 17%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-cupy.ndarray] SKIPPED [ 17%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-numpy.ndarray] SKIPPED [ 17%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-ax1-float32] SKIPPED [ 17%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-ax1-float64] SKIPPED [ 17%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-ax1-int32] SKIPPED [ 17%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-ax1-bool] SKIPPED [ 17%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-ax0-float32] SKIPPED [ 17%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-ax0-float64] SKIPPED [ 17%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-ax0-int32] SKIPPED [ 17%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-ax0-bool] SKIPPED [ 17%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-all-float32] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-all-float64] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-all-int32] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-all-bool] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-1d-all-float32] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-1d-all-float64] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-1d-all-int32] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-1d-all-bool] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-ax1-float32] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-ax1-float64] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-ax1-int32] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-ax1-bool] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-ax1-float32] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-ax1-float64] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-ax1-int32] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-ax1-bool] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-ax1-float32] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-ax1-float64] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-ax1-int32] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-ax1-bool] SKIPPED [ 18%] +tests/test_stats.py::test_min_max[dask.array.Array[cupy.ndarray]-2d-ax1-min] SKIPPED [ 18%] +tests/test_stats.py::test_min_max[dask.array.Array[cupy.ndarray]-2d-ax1-max] SKIPPED [ 18%] +tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-ax1-float32] SKIPPED [ 18%] +tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-ax1-float64] SKIPPED [ 18%] +tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-ax1-int32] SKIPPED [ 18%] +tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-ax1-bool] SKIPPED [ 18%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-ax1-float32] SKIPPED [ 18%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-ax1-float64] SKIPPED [ 18%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-ax1-int32] SKIPPED [ 18%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-ax1-bool] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-ax0-float32] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-ax0-float64] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-ax0-int32] SKIPPED [ 18%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-ax0-bool] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-all-float32] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-all-float64] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-all-int32] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-all-bool] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-1d-all-float32] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-1d-all-float64] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-1d-all-int32] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-1d-all-bool] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-ax0-float32] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-ax0-float64] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-ax0-int32] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-ax0-bool] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-ax0-float32] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-ax0-float64] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-ax0-int32] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-ax0-bool] SKIPPED [ 19%] +tests/test_stats.py::test_min_max[dask.array.Array[cupy.ndarray]-2d-ax0-min] SKIPPED [ 19%] +tests/test_stats.py::test_min_max[dask.array.Array[cupy.ndarray]-2d-ax0-max] SKIPPED [ 19%] +tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-ax0-float32] SKIPPED [ 19%] +tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-ax0-float64] SKIPPED [ 19%] +tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-ax0-int32] SKIPPED [ 19%] +tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-ax0-bool] SKIPPED [ 19%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-ax0-float32] SKIPPED [ 19%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-ax0-float64] SKIPPED [ 19%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-ax0-int32] SKIPPED [ 19%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-ax0-bool] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-all-float32] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-all-float64] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-all-int32] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-all-bool] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-1d-all-float32] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-1d-all-float64] SKIPPED [ 19%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-1d-all-int32] SKIPPED [ 20%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-1d-all-bool] SKIPPED [ 20%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-all-float32] SKIPPED [ 20%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-all-float64] SKIPPED [ 20%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-all-int32] SKIPPED [ 20%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-all-bool] SKIPPED [ 20%] +tests/test_stats.py::test_min_max[dask.array.Array[cupy.ndarray]-2d-all-min] SKIPPED [ 20%] +tests/test_stats.py::test_min_max[dask.array.Array[cupy.ndarray]-2d-all-max] SKIPPED [ 20%] +tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-all-float32] SKIPPED [ 20%] +tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-all-float64] SKIPPED [ 20%] +tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-all-int32] SKIPPED [ 20%] +tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-all-bool] SKIPPED [ 20%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-all-float32] SKIPPED [ 20%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-all-float64] SKIPPED [ 20%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-all-int32] SKIPPED [ 20%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-all-bool] SKIPPED [ 20%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-1d-all-float32] SKIPPED [ 20%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-1d-all-float64] SKIPPED [ 20%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-1d-all-int32] SKIPPED [ 20%] +tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-1d-all-bool] SKIPPED [ 20%] +tests/test_stats.py::test_min_max[dask.array.Array[cupy.ndarray]-1d-all-min] SKIPPED [ 20%] +tests/test_stats.py::test_min_max[dask.array.Array[cupy.ndarray]-1d-all-max] SKIPPED [ 20%] +tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-1d-all-float32] SKIPPED [ 20%] +tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-1d-all-float64] SKIPPED [ 20%] +tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-1d-all-int32] SKIPPED [ 20%] +tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-1d-all-bool] SKIPPED [ 20%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-1d-all-float32] SKIPPED [ 20%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-1d-all-float64] SKIPPED [ 20%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-1d-all-int32] SKIPPED [ 20%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-1d-all-bool] SKIPPED [ 20%] +tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-1d-ax0-sum] SKIPPED [ 20%] +tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-1d-ax0-min] SKIPPED [ 20%] +tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-1d-ax0-max] SKIPPED [ 20%] +tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-1d-ax0-mean] SKIPPED [ 21%] +tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-1d-ax0-mean_var] SKIPPED [ 21%] +tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-1d-ax0-is_constant] SKIPPED [ 21%] +tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-ax3-sum] SKIPPED [ 21%] +tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-ax3-min] SKIPPED [ 21%] +tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-ax3-max] SKIPPED [ 21%] +tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-ax3-mean] SKIPPED [ 21%] +tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-ax3-mean_var] SKIPPED [ 21%] +tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-ax3-is_constant] SKIPPED [ 21%] +tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-axneg-sum] SKIPPED [ 21%] +tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-axneg-min] SKIPPED [ 21%] +tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-axneg-max] SKIPPED [ 21%] +tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-axneg-mean] SKIPPED [ 21%] +tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-axneg-mean_var] SKIPPED [ 21%] +tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-axneg-is_constant] SKIPPED [ 21%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-0-3x2-sum] SKIPPED [ 21%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-0-3x2-min] SKIPPED [ 21%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-0-3x2-max] SKIPPED [ 21%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-0-2x3-sum] SKIPPED [ 21%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-0-2x3-min] SKIPPED [ 21%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-0-2x3-max] SKIPPED [ 21%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-0-2x2-sum] SKIPPED [ 21%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-0-2x2-min] SKIPPED [ 21%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-0-2x2-max] SKIPPED [ 21%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-1-3x2-sum] SKIPPED [ 21%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-1-3x2-min] SKIPPED [ 21%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-1-3x2-max] SKIPPED [ 21%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-1-2x3-sum] SKIPPED [ 21%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-1-2x3-min] SKIPPED [ 21%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-1-2x3-max] SKIPPED [ 21%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-1-2x2-sum] SKIPPED [ 21%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-1-2x2-min] SKIPPED [ 21%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-1-2x2-max] SKIPPED [ 21%] +tests/test_stats.py::test_is_constant[dask.array.Array[cupy.ndarray]-None] SKIPPED [ 22%] +tests/test_stats.py::test_is_constant[dask.array.Array[cupy.ndarray]-0] SKIPPED [ 22%] +tests/test_stats.py::test_is_constant[dask.array.Array[cupy.ndarray]-1] SKIPPED [ 22%] +tests/test_stats.py::test_dask_constant_blocks[dask.array.Array[cupy.ndarray]] SKIPPED [ 22%] +tests/test_test_utils.py::test_conv[dask.array.Array[cupy.ndarray]-float32] SKIPPED [ 22%] +tests/test_test_utils.py::test_conv[dask.array.Array[cupy.ndarray]-float64] SKIPPED [ 22%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-scipy.sparse.csc_array] SKIPPED [ 22%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-scipy.sparse.csc_array] PASSED [ 22%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-scipy.sparse.csc_array] SKIPPED [ 22%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-scipy.sparse.csc_array] PASSED [ 22%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-scipy.sparse.csc_array] SKIPPED [ 22%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-scipy.sparse.csc_array] PASSED [ 22%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-scipy.sparse.csc_array] PASSED [ 22%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-scipy.sparse.csc_array] PASSED [ 22%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-scipy.sparse.csc_array] SKIPPED [ 22%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-scipy.sparse.csc_array] PASSED [ 22%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-scipy.sparse.csc_array] PASSED [ 22%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-scipy.sparse.csr_array] PASSED [ 22%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-cupy.ndarray] SKIPPED [ 22%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-numpy.ndarray] PASSED [ 22%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-ax1-float32] PASSED [ 22%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-ax1-float64] PASSED [ 22%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-ax1-int32] PASSED [ 22%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-ax1-bool] PASSED [ 22%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-ax0-float32] PASSED [ 22%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-ax0-float64] PASSED [ 22%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-ax0-int32] PASSED [ 22%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-ax0-bool] PASSED [ 22%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-all-float32] PASSED [ 22%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-all-float64] PASSED [ 22%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-all-int32] PASSED [ 22%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-all-bool] PASSED [ 22%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-1d-all-float32] PASSED [ 22%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-1d-all-float64] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-1d-all-int32] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-1d-all-bool] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-ax1-float32] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-ax1-float64] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-ax1-int32] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-ax1-bool] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-ax1-float32] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-ax1-float64] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-ax1-int32] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-ax1-bool] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-ax1-float32] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-ax1-float64] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-ax1-int32] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-ax1-bool] PASSED [ 23%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csr_array]-2d-ax1] PASSED [ 23%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-min] PASSED [ 23%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-max] PASSED [ 23%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-float32] PASSED [ 23%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-float64] PASSED [ 23%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-int32] PASSED [ 23%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-bool] PASSED [ 23%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-float32] PASSED [ 23%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-float64] PASSED [ 23%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-int32] PASSED [ 23%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-bool] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-ax0-float32] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-ax0-float64] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-ax0-int32] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-ax0-bool] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-all-float32] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-all-float64] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-all-int32] PASSED [ 23%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-all-bool] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-1d-all-float32] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-1d-all-float64] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-1d-all-int32] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-1d-all-bool] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-ax0-float32] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-ax0-float64] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-ax0-int32] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-ax0-bool] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-ax0-float32] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-ax0-float64] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-ax0-int32] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-ax0-bool] PASSED [ 24%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csr_array]-2d-ax0] PASSED [ 24%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-min] PASSED [ 24%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-max] PASSED [ 24%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-float32] PASSED [ 24%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-float64] PASSED [ 24%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-int32] PASSED [ 24%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-bool] PASSED [ 24%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-float32] PASSED [ 24%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-float64] PASSED [ 24%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-int32] PASSED [ 24%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-bool] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-all-float32] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-all-float64] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-all-int32] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-all-bool] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-1d-all-float32] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-1d-all-float64] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-1d-all-int32] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-1d-all-bool] PASSED [ 24%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-all-float32] PASSED [ 25%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-all-float64] PASSED [ 25%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-all-int32] PASSED [ 25%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-all-bool] PASSED [ 25%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csr_array]-2d-all] PASSED [ 25%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_array]-2d-all-min] PASSED [ 25%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_array]-2d-all-max] PASSED [ 25%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-all-float32] PASSED [ 25%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-all-float64] PASSED [ 25%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-all-int32] PASSED [ 25%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-all-bool] PASSED [ 25%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-all-float32] PASSED [ 25%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-all-float64] PASSED [ 25%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-all-int32] PASSED [ 25%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-all-bool] PASSED [ 25%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-1d-all-float32] PASSED [ 25%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-1d-all-float64] PASSED [ 25%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-1d-all-int32] PASSED [ 25%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-1d-all-bool] PASSED [ 25%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csr_array]-1d-all] PASSED [ 25%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_array]-1d-all-min] PASSED [ 25%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_array]-1d-all-max] PASSED [ 25%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-1d-all-float32] PASSED [ 25%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-1d-all-float64] PASSED [ 25%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-1d-all-int32] PASSED [ 25%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-1d-all-bool] PASSED [ 25%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-1d-all-float32] PASSED [ 25%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-1d-all-float64] PASSED [ 25%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-1d-all-int32] PASSED [ 25%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-1d-all-bool] PASSED [ 25%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-1d-ax0-sum] PASSED [ 25%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-1d-ax0-min] PASSED [ 25%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-1d-ax0-max] PASSED [ 25%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-1d-ax0-mean] PASSED [ 26%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-1d-ax0-mean_var] PASSED [ 26%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-1d-ax0-is_constant] PASSED [ 26%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-ax3-sum] PASSED [ 26%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-ax3-min] PASSED [ 26%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-ax3-max] PASSED [ 26%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-ax3-mean] PASSED [ 26%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-ax3-mean_var] PASSED [ 26%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-ax3-is_constant] PASSED [ 26%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-axneg-sum] PASSED [ 26%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-axneg-min] PASSED [ 26%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-axneg-max] PASSED [ 26%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-axneg-mean] PASSED [ 26%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-axneg-mean_var] PASSED [ 26%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-axneg-is_constant] PASSED [ 26%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-0-3x2-sum] PASSED [ 26%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-0-3x2-min] PASSED [ 26%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-0-3x2-max] PASSED [ 26%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-0-2x3-sum] PASSED [ 26%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-0-2x3-min] PASSED [ 26%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-0-2x3-max] PASSED [ 26%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-0-2x2-sum] PASSED [ 26%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-0-2x2-min] PASSED [ 26%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-0-2x2-max] PASSED [ 26%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-1-3x2-sum] PASSED [ 26%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-1-3x2-min] PASSED [ 26%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-1-3x2-max] PASSED [ 26%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-1-2x3-sum] PASSED [ 26%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-1-2x3-min] PASSED [ 26%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-1-2x3-max] PASSED [ 26%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-1-2x2-sum] PASSED [ 26%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-1-2x2-min] PASSED [ 26%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-1-2x2-max] PASSED [ 26%] +tests/test_stats.py::test_mean_var_pbmc_dask[dask.array.Array[scipy.sparse.csr_array]] PASSED [ 27%] +tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csr_array]-None] PASSED [ 27%] +tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csr_array]-0] PASSED [ 27%] +tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csr_array]-1] PASSED [ 27%] +tests/test_stats.py::test_dask_constant_blocks[dask.array.Array[scipy.sparse.csr_array]] PASSED [ 27%] +tests/test_test_utils.py::test_conv[dask.array.Array[scipy.sparse.csr_array]-float32] PASSED [ 27%] +tests/test_test_utils.py::test_conv[dask.array.Array[scipy.sparse.csr_array]-float64] PASSED [ 27%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-scipy.sparse.csr_matrix] PASSED [ 27%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-scipy.sparse.csr_matrix] SKIPPED [ 27%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-scipy.sparse.csr_matrix] PASSED [ 27%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-scipy.sparse.csr_matrix] SKIPPED [ 27%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-scipy.sparse.csr_matrix] PASSED [ 27%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-scipy.sparse.csr_matrix] SKIPPED [ 27%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-scipy.sparse.csr_matrix] PASSED [ 27%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-scipy.sparse.csr_matrix] PASSED [ 27%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-scipy.sparse.csr_matrix] PASSED [ 27%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-scipy.sparse.csr_matrix] SKIPPED [ 27%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-scipy.sparse.csr_matrix] PASSED [ 27%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-scipy.sparse.csr_matrix] PASSED [ 27%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-scipy.sparse.csc_array] PASSED [ 27%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-scipy.sparse.csr_array] PASSED [ 27%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-cupy.ndarray] SKIPPED [ 27%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-numpy.ndarray] PASSED [ 27%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-ax1-float32] PASSED [ 27%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-ax1-float64] PASSED [ 27%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-ax1-int32] PASSED [ 27%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-ax1-bool] PASSED [ 27%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-ax0-float32] PASSED [ 27%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-ax0-float64] PASSED [ 27%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-ax0-int32] PASSED [ 27%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-ax0-bool] PASSED [ 27%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-all-float32] PASSED [ 27%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-all-float64] PASSED [ 27%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-all-int32] PASSED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-all-bool] PASSED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-1d-all-float32] SKIPPED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-1d-all-float64] SKIPPED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-1d-all-int32] SKIPPED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-1d-all-bool] SKIPPED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-ax1-float32] PASSED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-ax1-float64] PASSED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-ax1-int32] PASSED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-ax1-bool] PASSED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-ax1-float32] PASSED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-ax1-float64] PASSED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-ax1-int32] PASSED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-ax1-bool] PASSED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-ax1-float32] PASSED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-ax1-float64] PASSED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-ax1-int32] PASSED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-ax1-bool] PASSED [ 28%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csc_array]-2d-ax1] PASSED [ 28%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-min] PASSED [ 28%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-max] PASSED [ 28%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-float32] PASSED [ 28%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-float64] PASSED [ 28%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-int32] PASSED [ 28%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-bool] PASSED [ 28%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-float32] PASSED [ 28%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-float64] PASSED [ 28%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-int32] PASSED [ 28%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-bool] PASSED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-ax0-float32] PASSED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-ax0-float64] PASSED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-ax0-int32] PASSED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-ax0-bool] PASSED [ 28%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-all-float32] PASSED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-all-float64] PASSED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-all-int32] PASSED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-all-bool] PASSED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-1d-all-float32] SKIPPED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-1d-all-float64] SKIPPED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-1d-all-int32] SKIPPED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-1d-all-bool] SKIPPED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-ax0-float32] PASSED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-ax0-float64] PASSED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-ax0-int32] PASSED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-ax0-bool] PASSED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-ax0-float32] PASSED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-ax0-float64] PASSED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-ax0-int32] PASSED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-ax0-bool] PASSED [ 29%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csc_array]-2d-ax0] PASSED [ 29%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-min] PASSED [ 29%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-max] PASSED [ 29%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-float32] PASSED [ 29%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-float64] PASSED [ 29%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-int32] PASSED [ 29%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-bool] PASSED [ 29%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-float32] PASSED [ 29%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-float64] PASSED [ 29%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-int32] PASSED [ 29%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-bool] PASSED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-all-float32] PASSED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-all-float64] PASSED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-all-int32] PASSED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-all-bool] PASSED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-1d-all-float32] SKIPPED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-1d-all-float64] SKIPPED [ 29%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-1d-all-int32] SKIPPED [ 30%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-1d-all-bool] SKIPPED [ 30%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-all-float32] PASSED [ 30%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-all-float64] PASSED [ 30%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-all-int32] PASSED [ 30%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-all-bool] PASSED [ 30%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csc_array]-2d-all] PASSED [ 30%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_array]-2d-all-min] PASSED [ 30%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_array]-2d-all-max] PASSED [ 30%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-all-float32] PASSED [ 30%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-all-float64] PASSED [ 30%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-all-int32] PASSED [ 30%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-all-bool] PASSED [ 30%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-all-float32] PASSED [ 30%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-all-float64] PASSED [ 30%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-all-int32] PASSED [ 30%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-all-bool] PASSED [ 30%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-1d-all-float32] SKIPPED [ 30%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-1d-all-float64] SKIPPED [ 30%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-1d-all-int32] SKIPPED [ 30%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-1d-all-bool] SKIPPED [ 30%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csc_array]-1d-all] PASSED [ 30%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_array]-1d-all-min] PASSED [ 30%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_array]-1d-all-max] PASSED [ 30%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-1d-all-float32] SKIPPED [ 30%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-1d-all-float64] SKIPPED [ 30%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-1d-all-int32] SKIPPED [ 30%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-1d-all-bool] SKIPPED [ 30%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-1d-all-float32] SKIPPED [ 30%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-1d-all-float64] SKIPPED [ 30%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-1d-all-int32] SKIPPED [ 30%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-1d-all-bool] SKIPPED [ 30%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-1d-ax0-sum] SKIPPED [ 30%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-1d-ax0-min] SKIPPED [ 31%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-1d-ax0-max] SKIPPED [ 31%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-1d-ax0-mean] SKIPPED [ 31%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-1d-ax0-mean_var] SKIPPED [ 31%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-1d-ax0-is_constant] SKIPPED [ 31%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-ax3-sum] PASSED [ 31%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-ax3-min] PASSED [ 31%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-ax3-max] PASSED [ 31%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-ax3-mean] PASSED [ 31%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-ax3-mean_var] PASSED [ 31%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-ax3-is_constant] PASSED [ 31%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-axneg-sum] PASSED [ 31%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-axneg-min] PASSED [ 31%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-axneg-max] PASSED [ 31%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-axneg-mean] PASSED [ 31%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-axneg-mean_var] PASSED [ 31%] +tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-axneg-is_constant] PASSED [ 31%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-0-3x2-sum] PASSED [ 31%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-0-3x2-min] PASSED [ 31%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-0-3x2-max] PASSED [ 31%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-0-2x3-sum] PASSED [ 31%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-0-2x3-min] PASSED [ 31%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-0-2x3-max] PASSED [ 31%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-0-2x2-sum] PASSED [ 31%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-0-2x2-min] PASSED [ 31%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-0-2x2-max] PASSED [ 31%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-1-3x2-sum] PASSED [ 31%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-1-3x2-min] PASSED [ 31%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-1-3x2-max] PASSED [ 31%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-1-2x3-sum] PASSED [ 31%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-1-2x3-min] PASSED [ 31%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-1-2x3-max] PASSED [ 31%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-1-2x2-sum] PASSED [ 31%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-1-2x2-min] PASSED [ 32%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-1-2x2-max] PASSED [ 32%] +tests/test_stats.py::test_mean_var_pbmc_dask[dask.array.Array[scipy.sparse.csc_array]] PASSED [ 32%] +tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csc_array]-None] PASSED [ 32%] +tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csc_array]-0] PASSED [ 32%] +tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csc_array]-1] PASSED [ 32%] +tests/test_stats.py::test_dask_constant_blocks[dask.array.Array[scipy.sparse.csc_array]] PASSED [ 32%] +tests/test_test_utils.py::test_conv[dask.array.Array[scipy.sparse.csc_array]-float32] PASSED [ 32%] +tests/test_test_utils.py::test_conv[dask.array.Array[scipy.sparse.csc_array]-float64] PASSED [ 32%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-scipy.sparse.csr_matrix] PASSED [ 32%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-scipy.sparse.csc_array] PASSED [ 32%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-scipy.sparse.csr_array] PASSED [ 32%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-cupy.ndarray] SKIPPED [ 32%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-numpy.ndarray] PASSED [ 32%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-ax1-float32] PASSED [ 32%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-ax1-float64] PASSED [ 32%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-ax1-int32] PASSED [ 32%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-ax1-bool] PASSED [ 32%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-ax0-float32] PASSED [ 32%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-ax0-float64] PASSED [ 32%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-ax0-int32] PASSED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-ax0-bool] PASSED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-all-float32] PASSED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-all-float64] PASSED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-all-int32] PASSED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-all-bool] PASSED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-1d-all-float32] SKIPPED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-1d-all-float64] SKIPPED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-1d-all-int32] SKIPPED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-1d-all-bool] SKIPPED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-ax1-float32] PASSED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-ax1-float64] PASSED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-ax1-int32] PASSED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-ax1-bool] PASSED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-ax1-float32] PASSED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-ax1-float64] PASSED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-ax1-int32] PASSED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-ax1-bool] PASSED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-ax1-float32] PASSED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-ax1-float64] PASSED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-ax1-int32] PASSED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-ax1-bool] PASSED [ 33%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1] PASSED [ 33%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-min] PASSED [ 33%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-max] PASSED [ 33%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-float32] PASSED [ 33%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-float64] PASSED [ 33%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-int32] PASSED [ 33%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-bool] PASSED [ 33%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-float32] PASSED [ 33%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-float64] PASSED [ 33%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-int32] PASSED [ 33%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-bool] PASSED [ 33%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-ax0-float32] PASSED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-ax0-float64] PASSED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-ax0-int32] PASSED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-ax0-bool] PASSED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-all-float32] PASSED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-all-float64] PASSED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-all-int32] PASSED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-all-bool] PASSED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-1d-all-float32] SKIPPED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-1d-all-float64] SKIPPED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-1d-all-int32] SKIPPED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-1d-all-bool] SKIPPED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-ax0-float32] PASSED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-ax0-float64] PASSED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-ax0-int32] PASSED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-ax0-bool] PASSED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-ax0-float32] PASSED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-ax0-float64] PASSED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-ax0-int32] PASSED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-ax0-bool] PASSED [ 34%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0] PASSED [ 34%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-min] PASSED [ 34%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-max] PASSED [ 34%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-float32] PASSED [ 34%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-float64] PASSED [ 34%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-int32] PASSED [ 34%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-bool] PASSED [ 34%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-float32] PASSED [ 34%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-float64] PASSED [ 34%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-int32] PASSED [ 34%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-bool] PASSED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-all-float32] PASSED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-all-float64] PASSED [ 34%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-all-int32] PASSED [ 35%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-all-bool] PASSED [ 35%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-1d-all-float32] SKIPPED [ 35%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-1d-all-float64] SKIPPED [ 35%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-1d-all-int32] SKIPPED [ 35%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-1d-all-bool] SKIPPED [ 35%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-all-float32] PASSED [ 35%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-all-float64] PASSED [ 35%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-all-int32] PASSED [ 35%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-all-bool] PASSED [ 35%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csr_matrix]-2d-all] PASSED [ 35%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-min] PASSED [ 35%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-max] PASSED [ 35%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-float32] PASSED [ 35%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-float64] PASSED [ 35%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-int32] PASSED [ 35%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-bool] PASSED [ 35%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-float32] PASSED [ 35%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-float64] PASSED [ 35%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-int32] PASSED [ 35%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-bool] PASSED [ 35%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-1d-all-float32] SKIPPED [ 35%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-1d-all-float64] SKIPPED [ 35%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-1d-all-int32] SKIPPED [ 35%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-1d-all-bool] SKIPPED [ 35%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csr_matrix]-1d-all] PASSED [ 35%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-min] PASSED [ 35%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-max] PASSED [ 35%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-float32] SKIPPED [ 35%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-float64] SKIPPED [ 35%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-int32] SKIPPED [ 35%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-bool] SKIPPED [ 35%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-float32] SKIPPED [ 35%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-float64] SKIPPED [ 36%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-int32] SKIPPED [ 36%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-bool] SKIPPED [ 36%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-0-3x2-sum] PASSED [ 36%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-0-3x2-min] PASSED [ 36%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-0-3x2-max] PASSED [ 36%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-0-2x3-sum] PASSED [ 36%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-0-2x3-min] PASSED [ 36%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-0-2x3-max] PASSED [ 36%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-0-2x2-sum] PASSED [ 36%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-0-2x2-min] PASSED [ 36%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-0-2x2-max] PASSED [ 36%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-1-3x2-sum] PASSED [ 36%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-1-3x2-min] PASSED [ 36%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-1-3x2-max] PASSED [ 36%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-1-2x3-sum] PASSED [ 36%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-1-2x3-min] PASSED [ 36%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-1-2x3-max] PASSED [ 36%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-1-2x2-sum] PASSED [ 36%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-1-2x2-min] PASSED [ 36%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-1-2x2-max] PASSED [ 36%] +tests/test_stats.py::test_mean_var_pbmc_dask[dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 36%] +tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csr_matrix]-None] PASSED [ 36%] +tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csr_matrix]-0] PASSED [ 36%] +tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csr_matrix]-1] PASSED [ 36%] +tests/test_stats.py::test_dask_constant_blocks[dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 36%] +tests/test_test_utils.py::test_conv[dask.array.Array[scipy.sparse.csr_matrix]-float32] PASSED [ 36%] +tests/test_test_utils.py::test_conv[dask.array.Array[scipy.sparse.csr_matrix]-float64] PASSED [ 36%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-scipy.sparse.csc_matrix] PASSED [ 36%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-scipy.sparse.csc_matrix] PASSED [ 36%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-scipy.sparse.csc_matrix] PASSED [ 36%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-scipy.sparse.csc_matrix] SKIPPED [ 36%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-scipy.sparse.csc_matrix] PASSED [ 36%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-scipy.sparse.csc_matrix] SKIPPED [ 37%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-scipy.sparse.csc_matrix] PASSED [ 37%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-scipy.sparse.csc_matrix] SKIPPED [ 37%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-scipy.sparse.csc_matrix] PASSED [ 37%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-scipy.sparse.csc_matrix] PASSED [ 37%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-scipy.sparse.csc_matrix] PASSED [ 37%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-scipy.sparse.csc_matrix] SKIPPED [ 37%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-scipy.sparse.csc_matrix] PASSED [ 37%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-scipy.sparse.csc_matrix] SKIPPED [ 37%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 37%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-scipy.sparse.csr_matrix] SKIPPED [ 37%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-scipy.sparse.csc_array] SKIPPED [ 37%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-scipy.sparse.csr_array] SKIPPED [ 37%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-cupy.ndarray] SKIPPED [ 37%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-numpy.ndarray] SKIPPED [ 37%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-ax1-float32] SKIPPED [ 37%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-ax1-float64] SKIPPED [ 37%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-ax1-int32] SKIPPED [ 37%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-ax1-bool] SKIPPED [ 37%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-ax0-float32] SKIPPED [ 37%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-ax0-float64] SKIPPED [ 37%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-ax0-int32] SKIPPED [ 37%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-ax0-bool] SKIPPED [ 37%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-all-float32] SKIPPED [ 37%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-all-float64] SKIPPED [ 37%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-all-int32] SKIPPED [ 37%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-all-bool] SKIPPED [ 37%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-1d-all-float32] SKIPPED [ 37%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-1d-all-float64] SKIPPED [ 37%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-1d-all-int32] SKIPPED [ 37%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-1d-all-bool] SKIPPED [ 37%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-ax1-float32] SKIPPED [ 37%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-ax1-float64] SKIPPED [ 37%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-ax1-int32] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-ax1-bool] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-ax1-float32] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-ax1-float64] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-ax1-int32] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-ax1-bool] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-ax1-float32] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-ax1-float64] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-ax1-int32] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-ax1-bool] SKIPPED [ 38%] +tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-min] SKIPPED [ 38%] +tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-max] SKIPPED [ 38%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-float32] SKIPPED [ 38%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-float64] SKIPPED [ 38%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-int32] SKIPPED [ 38%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-bool] SKIPPED [ 38%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-float32] SKIPPED [ 38%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-float64] SKIPPED [ 38%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-int32] SKIPPED [ 38%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-bool] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-ax0-float32] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-ax0-float64] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-ax0-int32] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-ax0-bool] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-all-float32] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-all-float64] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-all-int32] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-all-bool] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-1d-all-float32] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-1d-all-float64] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-1d-all-int32] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-1d-all-bool] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-ax0-float32] SKIPPED [ 38%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-ax0-float64] SKIPPED [ 39%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-ax0-int32] SKIPPED [ 39%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-ax0-bool] SKIPPED [ 39%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-ax0-float32] SKIPPED [ 39%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-ax0-float64] SKIPPED [ 39%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-ax0-int32] SKIPPED [ 39%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-ax0-bool] SKIPPED [ 39%] +tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-min] SKIPPED [ 39%] +tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-max] SKIPPED [ 39%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-float32] SKIPPED [ 39%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-float64] SKIPPED [ 39%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-int32] SKIPPED [ 39%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-bool] SKIPPED [ 39%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-float32] SKIPPED [ 39%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-float64] SKIPPED [ 39%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-int32] SKIPPED [ 39%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-bool] SKIPPED [ 39%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-all-float32] SKIPPED [ 39%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-all-float64] SKIPPED [ 39%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-all-int32] SKIPPED [ 39%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-all-bool] SKIPPED [ 39%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-1d-all-float32] SKIPPED [ 39%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-1d-all-float64] SKIPPED [ 39%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-1d-all-int32] SKIPPED [ 39%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-1d-all-bool] SKIPPED [ 39%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-all-float32] SKIPPED [ 39%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-all-float64] SKIPPED [ 39%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-all-int32] SKIPPED [ 39%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-all-bool] SKIPPED [ 39%] +tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-min] SKIPPED [ 39%] +tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-max] SKIPPED [ 39%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-float32] SKIPPED [ 39%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-float64] SKIPPED [ 39%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-int32] SKIPPED [ 40%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-bool] SKIPPED [ 40%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-float32] SKIPPED [ 40%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-float64] SKIPPED [ 40%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-int32] SKIPPED [ 40%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-bool] SKIPPED [ 40%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-1d-all-float32] SKIPPED [ 40%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-1d-all-float64] SKIPPED [ 40%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-1d-all-int32] SKIPPED [ 40%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-1d-all-bool] SKIPPED [ 40%] +tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-min] SKIPPED [ 40%] +tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-max] SKIPPED [ 40%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-float32] SKIPPED [ 40%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-float64] SKIPPED [ 40%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-int32] SKIPPED [ 40%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-bool] SKIPPED [ 40%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-float32] SKIPPED [ 40%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-float64] SKIPPED [ 40%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-int32] SKIPPED [ 40%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-bool] SKIPPED [ 40%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-0-3x2-sum] SKIPPED [ 40%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-0-3x2-min] SKIPPED [ 40%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-0-3x2-max] SKIPPED [ 40%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-0-2x3-sum] SKIPPED [ 40%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-0-2x3-min] SKIPPED [ 40%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-0-2x3-max] SKIPPED [ 40%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-0-2x2-sum] SKIPPED [ 40%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-0-2x2-min] SKIPPED [ 40%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-0-2x2-max] SKIPPED [ 40%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1-3x2-sum] SKIPPED [ 40%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1-3x2-min] SKIPPED [ 40%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1-3x2-max] SKIPPED [ 40%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1-2x3-sum] SKIPPED [ 40%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1-2x3-min] SKIPPED [ 41%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1-2x3-max] SKIPPED [ 41%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1-2x2-sum] SKIPPED [ 41%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1-2x2-min] SKIPPED [ 41%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1-2x2-max] SKIPPED [ 41%] +tests/test_stats.py::test_mean_var_pbmc_dask[dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-scipy.sparse.csc_matrix] PASSED [ 41%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-scipy.sparse.csr_matrix] PASSED [ 41%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-scipy.sparse.csc_array] PASSED [ 41%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-scipy.sparse.csr_array] PASSED [ 41%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-cupy.ndarray] SKIPPED [ 41%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-numpy.ndarray] PASSED [ 41%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-ax1-float32] PASSED [ 41%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-ax1-float64] PASSED [ 41%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-ax1-int32] PASSED [ 41%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-ax1-bool] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-ax0-float32] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-ax0-float64] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-ax0-int32] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-ax0-bool] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-all-float32] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-all-float64] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-all-int32] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-all-bool] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-1d-all-float32] SKIPPED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-1d-all-float64] SKIPPED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-1d-all-int32] SKIPPED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-1d-all-bool] SKIPPED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-ax1-float32] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-ax1-float64] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-ax1-int32] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-ax1-bool] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-ax1-float32] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-ax1-float64] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-ax1-int32] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-ax1-bool] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-ax1-float32] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-ax1-float64] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-ax1-int32] PASSED [ 42%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-ax1-bool] PASSED [ 42%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1] PASSED [ 42%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-min] PASSED [ 42%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-max] PASSED [ 42%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-float32] PASSED [ 42%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-float64] PASSED [ 42%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-int32] PASSED [ 42%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-bool] PASSED [ 42%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-float32] PASSED [ 42%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-float64] PASSED [ 43%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-int32] PASSED [ 43%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-bool] PASSED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-ax0-float32] PASSED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-ax0-float64] PASSED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-ax0-int32] PASSED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-ax0-bool] PASSED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-all-float32] PASSED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-all-float64] PASSED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-all-int32] PASSED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-all-bool] PASSED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-1d-all-float32] SKIPPED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-1d-all-float64] SKIPPED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-1d-all-int32] SKIPPED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-1d-all-bool] SKIPPED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-ax0-float32] PASSED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-ax0-float64] PASSED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-ax0-int32] PASSED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-ax0-bool] PASSED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-ax0-float32] PASSED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-ax0-float64] PASSED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-ax0-int32] PASSED [ 43%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-ax0-bool] PASSED [ 43%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0] PASSED [ 43%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-min] PASSED [ 43%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-max] PASSED [ 43%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-float32] PASSED [ 43%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-float64] PASSED [ 43%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-int32] PASSED [ 43%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-bool] PASSED [ 43%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-float32] PASSED [ 43%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-float64] PASSED [ 43%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-int32] PASSED [ 43%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-bool] PASSED [ 44%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-all-float32] PASSED [ 44%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-all-float64] PASSED [ 44%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-all-int32] PASSED [ 44%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-all-bool] PASSED [ 44%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-1d-all-float32] SKIPPED [ 44%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-1d-all-float64] SKIPPED [ 44%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-1d-all-int32] SKIPPED [ 44%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-1d-all-bool] SKIPPED [ 44%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-all-float32] PASSED [ 44%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-all-float64] PASSED [ 44%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-all-int32] PASSED [ 44%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-all-bool] PASSED [ 44%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csc_matrix]-2d-all] PASSED [ 44%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-min] PASSED [ 44%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-max] PASSED [ 44%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-float32] PASSED [ 44%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-float64] PASSED [ 44%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-int32] PASSED [ 44%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-bool] PASSED [ 44%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-float32] PASSED [ 44%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-float64] PASSED [ 44%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-int32] PASSED [ 44%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-bool] PASSED [ 44%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-1d-all-float32] SKIPPED [ 44%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-1d-all-float64] SKIPPED [ 44%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-1d-all-int32] SKIPPED [ 44%] +tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-1d-all-bool] SKIPPED [ 44%] +tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csc_matrix]-1d-all] PASSED [ 44%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-min] PASSED [ 44%] +tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-max] PASSED [ 44%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-float32] SKIPPED [ 44%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-float64] SKIPPED [ 44%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-int32] SKIPPED [ 45%] +tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-bool] SKIPPED [ 45%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-float32] SKIPPED [ 45%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-float64] SKIPPED [ 45%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-int32] SKIPPED [ 45%] +tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-bool] SKIPPED [ 45%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-0-3x2-sum] PASSED [ 45%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-0-3x2-min] PASSED [ 45%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-0-3x2-max] PASSED [ 45%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-0-2x3-sum] PASSED [ 45%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-0-2x3-min] PASSED [ 45%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-0-2x3-max] PASSED [ 45%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-0-2x2-sum] PASSED [ 45%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-0-2x2-min] PASSED [ 45%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-0-2x2-max] PASSED [ 45%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-1-3x2-sum] PASSED [ 45%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-1-3x2-min] PASSED [ 45%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-1-3x2-max] PASSED [ 45%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-1-2x3-sum] PASSED [ 45%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-1-2x3-min] PASSED [ 45%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-1-2x3-max] PASSED [ 45%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-1-2x2-sum] PASSED [ 45%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-1-2x2-min] PASSED [ 45%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-1-2x2-max] PASSED [ 45%] +tests/test_stats.py::test_mean_var_pbmc_dask[dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 45%] +tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csc_matrix]-None] PASSED [ 45%] +tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csc_matrix]-0] PASSED [ 45%] +tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csc_matrix]-1] PASSED [ 45%] +tests/test_stats.py::test_dask_constant_blocks[dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 45%] +tests/test_test_utils.py::test_conv[dask.array.Array[scipy.sparse.csc_matrix]-float32] PASSED [ 45%] +tests/test_test_utils.py::test_conv[dask.array.Array[scipy.sparse.csc_matrix]-float64] PASSED [ 45%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-dask.array.Array[numpy.ndarray]] PASSED [ 45%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-dask.array.Array[numpy.ndarray]] SKIPPED [ 45%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-dask.array.Array[numpy.ndarray]] PASSED [ 46%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-dask.array.Array[numpy.ndarray]] PASSED [ 46%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-dask.array.Array[numpy.ndarray]] PASSED [ 46%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-dask.array.Array[numpy.ndarray]] SKIPPED [ 46%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-dask.array.Array[numpy.ndarray]] PASSED [ 46%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-dask.array.Array[numpy.ndarray]] SKIPPED [ 46%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-dask.array.Array[numpy.ndarray]] PASSED [ 46%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-dask.array.Array[numpy.ndarray]] SKIPPED [ 46%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-dask.array.Array[numpy.ndarray]] PASSED [ 46%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-dask.array.Array[numpy.ndarray]] PASSED [ 46%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-dask.array.Array[numpy.ndarray]] PASSED [ 46%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-dask.array.Array[numpy.ndarray]] SKIPPED [ 46%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-dask.array.Array[numpy.ndarray]] PASSED [ 46%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-dask.array.Array[numpy.ndarray]] SKIPPED [ 46%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 46%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-scipy.sparse.csc_matrix] SKIPPED [ 46%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 46%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-scipy.sparse.csr_matrix] SKIPPED [ 46%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-scipy.sparse.csc_array] SKIPPED [ 46%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-scipy.sparse.csr_array] SKIPPED [ 46%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-cupy.ndarray] SKIPPED [ 46%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-numpy.ndarray] SKIPPED [ 46%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-ax1-float32] SKIPPED [ 46%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-ax1-float64] SKIPPED [ 46%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-ax1-int32] SKIPPED [ 46%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-ax1-bool] SKIPPED [ 46%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-ax0-float32] SKIPPED [ 46%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-ax0-float64] SKIPPED [ 46%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-ax0-int32] SKIPPED [ 46%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-ax0-bool] SKIPPED [ 46%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-all-float32] SKIPPED [ 46%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-all-float64] SKIPPED [ 46%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-all-int32] SKIPPED [ 46%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-all-bool] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-1d-all-float32] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-1d-all-float64] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-1d-all-int32] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-1d-all-bool] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-ax1-float32] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-ax1-float64] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-ax1-int32] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-ax1-bool] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-ax1-float32] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-ax1-float64] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-ax1-int32] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-ax1-bool] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-ax1-float32] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-ax1-float64] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-ax1-int32] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-ax1-bool] SKIPPED [ 47%] +tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-min] SKIPPED [ 47%] +tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-max] SKIPPED [ 47%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-float32] SKIPPED [ 47%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-float64] SKIPPED [ 47%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-int32] SKIPPED [ 47%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-bool] SKIPPED [ 47%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-float32] SKIPPED [ 47%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-float64] SKIPPED [ 47%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-int32] SKIPPED [ 47%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-bool] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-ax0-float32] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-ax0-float64] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-ax0-int32] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-ax0-bool] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-all-float32] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-all-float64] SKIPPED [ 47%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-all-int32] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-all-bool] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-1d-all-float32] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-1d-all-float64] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-1d-all-int32] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-1d-all-bool] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-ax0-float32] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-ax0-float64] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-ax0-int32] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-ax0-bool] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-ax0-float32] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-ax0-float64] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-ax0-int32] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-ax0-bool] SKIPPED [ 48%] +tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-min] SKIPPED [ 48%] +tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-max] SKIPPED [ 48%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-float32] SKIPPED [ 48%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-float64] SKIPPED [ 48%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-int32] SKIPPED [ 48%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-bool] SKIPPED [ 48%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-float32] SKIPPED [ 48%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-float64] SKIPPED [ 48%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-int32] SKIPPED [ 48%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-bool] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-all-float32] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-all-float64] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-all-int32] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-all-bool] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-1d-all-float32] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-1d-all-float64] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-1d-all-int32] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-1d-all-bool] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-all-float32] SKIPPED [ 48%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-all-float64] SKIPPED [ 49%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-all-int32] SKIPPED [ 49%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-all-bool] SKIPPED [ 49%] +tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-min] SKIPPED [ 49%] +tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-max] SKIPPED [ 49%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-float32] SKIPPED [ 49%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-float64] SKIPPED [ 49%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-int32] SKIPPED [ 49%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-bool] SKIPPED [ 49%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-float32] SKIPPED [ 49%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-float64] SKIPPED [ 49%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-int32] SKIPPED [ 49%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-bool] SKIPPED [ 49%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-1d-all-float32] SKIPPED [ 49%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-1d-all-float64] SKIPPED [ 49%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-1d-all-int32] SKIPPED [ 49%] +tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-1d-all-bool] SKIPPED [ 49%] +tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-min] SKIPPED [ 49%] +tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-max] SKIPPED [ 49%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-float32] SKIPPED [ 49%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-float64] SKIPPED [ 49%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-int32] SKIPPED [ 49%] +tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-bool] SKIPPED [ 49%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-float32] SKIPPED [ 49%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-float64] SKIPPED [ 49%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-int32] SKIPPED [ 49%] +tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-bool] SKIPPED [ 49%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-0-3x2-sum] SKIPPED [ 49%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-0-3x2-min] SKIPPED [ 49%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-0-3x2-max] SKIPPED [ 49%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-0-2x3-sum] SKIPPED [ 49%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-0-2x3-min] SKIPPED [ 49%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-0-2x3-max] SKIPPED [ 50%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-0-2x2-sum] SKIPPED [ 50%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-0-2x2-min] SKIPPED [ 50%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-0-2x2-max] SKIPPED [ 50%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1-3x2-sum] SKIPPED [ 50%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1-3x2-min] SKIPPED [ 50%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1-3x2-max] SKIPPED [ 50%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1-2x3-sum] SKIPPED [ 50%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1-2x3-min] SKIPPED [ 50%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1-2x3-max] SKIPPED [ 50%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1-2x2-sum] SKIPPED [ 50%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1-2x2-min] SKIPPED [ 50%] +tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1-2x2-max] SKIPPED [ 50%] +tests/test_stats.py::test_mean_var_pbmc_dask[dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-dask.array.Array[numpy.ndarray]] PASSED [ 51%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 51%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-scipy.sparse.csc_matrix] PASSED [ 51%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 51%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-scipy.sparse.csr_matrix] PASSED [ 51%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-scipy.sparse.csc_array] PASSED [ 51%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-scipy.sparse.csr_array] PASSED [ 51%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-cupy.ndarray] SKIPPED [ 51%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-numpy.ndarray] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-None-2d-ax1-float32] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-None-2d-ax1-float64] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-None-2d-ax1-int32] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-None-2d-ax1-bool] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-None-2d-ax0-float32] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-None-2d-ax0-float64] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-None-2d-ax0-int32] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-None-2d-ax0-bool] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-None-2d-all-float32] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-None-2d-all-float64] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-None-2d-all-int32] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-None-2d-all-bool] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-None-1d-all-float32] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-None-1d-all-float64] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-None-1d-all-int32] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-None-1d-all-bool] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-ax1-float32] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-ax1-float64] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-ax1-int32] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-ax1-bool] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-ax1-float32] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-ax1-float64] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-ax1-int32] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-ax1-bool] PASSED [ 51%] +tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-ax1-float32] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-ax1-float64] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-ax1-int32] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-ax1-bool] PASSED [ 52%] +tests/test_stats.py::test_sum_to_int[h5py.Dataset-2d-ax1] PASSED [ 52%] +tests/test_stats.py::test_min_max[h5py.Dataset-2d-ax1-min] PASSED [ 52%] +tests/test_stats.py::test_min_max[h5py.Dataset-2d-ax1-max] PASSED [ 52%] +tests/test_stats.py::test_mean[h5py.Dataset-2d-ax1-float32] PASSED [ 52%] +tests/test_stats.py::test_mean[h5py.Dataset-2d-ax1-float64] PASSED [ 52%] +tests/test_stats.py::test_mean[h5py.Dataset-2d-ax1-int32] PASSED [ 52%] +tests/test_stats.py::test_mean[h5py.Dataset-2d-ax1-bool] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-ax0-float32] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-ax0-float64] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-ax0-int32] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-ax0-bool] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-all-float32] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-all-float64] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-all-int32] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-all-bool] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-int64-1d-all-float32] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-int64-1d-all-float64] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-int64-1d-all-int32] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-int64-1d-all-bool] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-ax0-float32] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-ax0-float64] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-ax0-int32] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-ax0-bool] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-ax0-float32] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-ax0-float64] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-ax0-int32] PASSED [ 52%] +tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-ax0-bool] PASSED [ 52%] +tests/test_stats.py::test_sum_to_int[h5py.Dataset-2d-ax0] PASSED [ 52%] +tests/test_stats.py::test_min_max[h5py.Dataset-2d-ax0-min] PASSED [ 52%] +tests/test_stats.py::test_min_max[h5py.Dataset-2d-ax0-max] PASSED [ 53%] +tests/test_stats.py::test_mean[h5py.Dataset-2d-ax0-float32] PASSED [ 53%] +tests/test_stats.py::test_mean[h5py.Dataset-2d-ax0-float64] PASSED [ 53%] +tests/test_stats.py::test_mean[h5py.Dataset-2d-ax0-int32] PASSED [ 53%] +tests/test_stats.py::test_mean[h5py.Dataset-2d-ax0-bool] PASSED [ 53%] +tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-all-float32] PASSED [ 53%] +tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-all-float64] PASSED [ 53%] +tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-all-int32] PASSED [ 53%] +tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-all-bool] PASSED [ 53%] +tests/test_stats.py::test_sum[h5py.Dataset-float64-1d-all-float32] PASSED [ 53%] +tests/test_stats.py::test_sum[h5py.Dataset-float64-1d-all-float64] PASSED [ 53%] +tests/test_stats.py::test_sum[h5py.Dataset-float64-1d-all-int32] PASSED [ 53%] +tests/test_stats.py::test_sum[h5py.Dataset-float64-1d-all-bool] PASSED [ 53%] +tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-all-float32] PASSED [ 53%] +tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-all-float64] PASSED [ 53%] +tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-all-int32] PASSED [ 53%] +tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-all-bool] PASSED [ 53%] +tests/test_stats.py::test_sum_to_int[h5py.Dataset-2d-all] PASSED [ 53%] +tests/test_stats.py::test_min_max[h5py.Dataset-2d-all-min] PASSED [ 53%] +tests/test_stats.py::test_min_max[h5py.Dataset-2d-all-max] PASSED [ 53%] +tests/test_stats.py::test_mean[h5py.Dataset-2d-all-float32] PASSED [ 53%] +tests/test_stats.py::test_mean[h5py.Dataset-2d-all-float64] PASSED [ 53%] +tests/test_stats.py::test_mean[h5py.Dataset-2d-all-int32] PASSED [ 53%] +tests/test_stats.py::test_mean[h5py.Dataset-2d-all-bool] PASSED [ 53%] +tests/test_stats.py::test_sum[h5py.Dataset-float32-1d-all-float32] PASSED [ 53%] +tests/test_stats.py::test_sum[h5py.Dataset-float32-1d-all-float64] PASSED [ 53%] +tests/test_stats.py::test_sum[h5py.Dataset-float32-1d-all-int32] PASSED [ 53%] +tests/test_stats.py::test_sum[h5py.Dataset-float32-1d-all-bool] PASSED [ 53%] +tests/test_stats.py::test_sum_to_int[h5py.Dataset-1d-all] PASSED [ 53%] +tests/test_stats.py::test_min_max[h5py.Dataset-1d-all-min] PASSED [ 53%] +tests/test_stats.py::test_min_max[h5py.Dataset-1d-all-max] PASSED [ 53%] +tests/test_stats.py::test_mean[h5py.Dataset-1d-all-float32] PASSED [ 53%] +tests/test_stats.py::test_mean[h5py.Dataset-1d-all-float64] PASSED [ 53%] +tests/test_stats.py::test_mean[h5py.Dataset-1d-all-int32] PASSED [ 54%] +tests/test_stats.py::test_mean[h5py.Dataset-1d-all-bool] PASSED [ 54%] +tests/test_stats.py::test_ndim_error[h5py.Dataset-1d-ax0-sum] PASSED [ 54%] +tests/test_stats.py::test_ndim_error[h5py.Dataset-1d-ax0-min] PASSED [ 54%] +tests/test_stats.py::test_ndim_error[h5py.Dataset-1d-ax0-max] PASSED [ 54%] +tests/test_stats.py::test_ndim_error[h5py.Dataset-1d-ax0-mean] PASSED [ 54%] +tests/test_stats.py::test_ndim_error[h5py.Dataset-1d-ax0-mean_var] PASSED [ 54%] +tests/test_stats.py::test_ndim_error[h5py.Dataset-1d-ax0-is_constant] PASSED [ 54%] +tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-ax3-sum] PASSED [ 54%] +tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-ax3-min] PASSED [ 54%] +tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-ax3-max] PASSED [ 54%] +tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-ax3-mean] PASSED [ 54%] +tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-ax3-mean_var] PASSED [ 54%] +tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-ax3-is_constant] PASSED [ 54%] +tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-axneg-sum] PASSED [ 54%] +tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-axneg-min] PASSED [ 54%] +tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-axneg-max] PASSED [ 54%] +tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-axneg-mean] PASSED [ 54%] +tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-axneg-mean_var] PASSED [ 54%] +tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-axneg-is_constant] PASSED [ 54%] +tests/test_test_utils.py::test_conv[h5py.Dataset-float32] PASSED [ 54%] +tests/test_test_utils.py::test_conv[h5py.Dataset-float64] PASSED [ 54%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 54%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-dask.array.Array[scipy.sparse.csr_array]] SKIPPED [ 54%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 54%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-dask.array.Array[scipy.sparse.csr_array]] SKIPPED [ 54%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 54%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 54%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 54%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-dask.array.Array[scipy.sparse.csr_array]] SKIPPED [ 54%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 54%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-dask.array.Array[scipy.sparse.csr_array]] SKIPPED [ 54%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 54%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-dask.array.Array[scipy.sparse.csr_array]] SKIPPED [ 55%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 55%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 55%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 55%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-dask.array.Array[scipy.sparse.csr_array]] SKIPPED [ 55%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 55%] +tests/test_test_utils.py::test_conv_other[zarr.Array-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 55%] +tests/test_test_utils.py::test_conv_other[zarr.Array-dask.array.Array[cupy.ndarray]] SKIPPED [ 55%] +tests/test_test_utils.py::test_conv_other[zarr.Array-dask.array.Array[numpy.ndarray]] PASSED [ 55%] +tests/test_test_utils.py::test_conv_other[zarr.Array-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 55%] +tests/test_test_utils.py::test_conv_other[zarr.Array-scipy.sparse.csc_matrix] PASSED [ 55%] +tests/test_test_utils.py::test_conv_other[zarr.Array-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 55%] +tests/test_test_utils.py::test_conv_other[zarr.Array-scipy.sparse.csr_matrix] PASSED [ 55%] +tests/test_test_utils.py::test_conv_other[zarr.Array-scipy.sparse.csc_array] PASSED [ 55%] +tests/test_test_utils.py::test_conv_other[zarr.Array-scipy.sparse.csr_array] PASSED [ 55%] +tests/test_test_utils.py::test_conv_other[zarr.Array-cupy.ndarray] SKIPPED [ 55%] +tests/test_test_utils.py::test_conv_other[zarr.Array-numpy.ndarray] PASSED [ 55%] +tests/test_stats.py::test_sum[zarr.Array-None-2d-ax1-float32] PASSED [ 55%] +tests/test_stats.py::test_sum[zarr.Array-None-2d-ax1-float64] PASSED [ 55%] +tests/test_stats.py::test_sum[zarr.Array-None-2d-ax1-int32] PASSED [ 55%] +tests/test_stats.py::test_sum[zarr.Array-None-2d-ax1-bool] PASSED [ 55%] +tests/test_stats.py::test_sum[zarr.Array-None-2d-ax0-float32] PASSED [ 55%] +tests/test_stats.py::test_sum[zarr.Array-None-2d-ax0-float64] PASSED [ 55%] +tests/test_stats.py::test_sum[zarr.Array-None-2d-ax0-int32] PASSED [ 55%] +tests/test_stats.py::test_sum[zarr.Array-None-2d-ax0-bool] PASSED [ 55%] +tests/test_stats.py::test_sum[zarr.Array-None-2d-all-float32] PASSED [ 55%] +tests/test_stats.py::test_sum[zarr.Array-None-2d-all-float64] PASSED [ 55%] +tests/test_stats.py::test_sum[zarr.Array-None-2d-all-int32] PASSED [ 55%] +tests/test_stats.py::test_sum[zarr.Array-None-2d-all-bool] PASSED [ 55%] +tests/test_stats.py::test_sum[zarr.Array-None-1d-all-float32] PASSED [ 55%] +tests/test_stats.py::test_sum[zarr.Array-None-1d-all-float64] PASSED [ 55%] +tests/test_stats.py::test_sum[zarr.Array-None-1d-all-int32] PASSED [ 55%] +tests/test_stats.py::test_sum[zarr.Array-None-1d-all-bool] PASSED [ 55%] +tests/test_stats.py::test_sum[zarr.Array-int64-2d-ax1-float32] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-int64-2d-ax1-float64] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-int64-2d-ax1-int32] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-int64-2d-ax1-bool] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-float64-2d-ax1-float32] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-float64-2d-ax1-float64] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-float64-2d-ax1-int32] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-float64-2d-ax1-bool] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-float32-2d-ax1-float32] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-float32-2d-ax1-float64] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-float32-2d-ax1-int32] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-float32-2d-ax1-bool] PASSED [ 56%] +tests/test_stats.py::test_sum_to_int[zarr.Array-2d-ax1] PASSED [ 56%] +tests/test_stats.py::test_min_max[zarr.Array-2d-ax1-min] PASSED [ 56%] +tests/test_stats.py::test_min_max[zarr.Array-2d-ax1-max] PASSED [ 56%] +tests/test_stats.py::test_mean[zarr.Array-2d-ax1-float32] PASSED [ 56%] +tests/test_stats.py::test_mean[zarr.Array-2d-ax1-float64] PASSED [ 56%] +tests/test_stats.py::test_mean[zarr.Array-2d-ax1-int32] PASSED [ 56%] +tests/test_stats.py::test_mean[zarr.Array-2d-ax1-bool] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-int64-2d-ax0-float32] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-int64-2d-ax0-float64] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-int64-2d-ax0-int32] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-int64-2d-ax0-bool] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-int64-2d-all-float32] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-int64-2d-all-float64] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-int64-2d-all-int32] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-int64-2d-all-bool] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-int64-1d-all-float32] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-int64-1d-all-float64] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-int64-1d-all-int32] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-int64-1d-all-bool] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-float64-2d-ax0-float32] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-float64-2d-ax0-float64] PASSED [ 56%] +tests/test_stats.py::test_sum[zarr.Array-float64-2d-ax0-int32] PASSED [ 57%] +tests/test_stats.py::test_sum[zarr.Array-float64-2d-ax0-bool] PASSED [ 57%] +tests/test_stats.py::test_sum[zarr.Array-float32-2d-ax0-float32] PASSED [ 57%] +tests/test_stats.py::test_sum[zarr.Array-float32-2d-ax0-float64] PASSED [ 57%] +tests/test_stats.py::test_sum[zarr.Array-float32-2d-ax0-int32] PASSED [ 57%] +tests/test_stats.py::test_sum[zarr.Array-float32-2d-ax0-bool] PASSED [ 57%] +tests/test_stats.py::test_sum_to_int[zarr.Array-2d-ax0] PASSED [ 57%] +tests/test_stats.py::test_min_max[zarr.Array-2d-ax0-min] PASSED [ 57%] +tests/test_stats.py::test_min_max[zarr.Array-2d-ax0-max] PASSED [ 57%] +tests/test_stats.py::test_mean[zarr.Array-2d-ax0-float32] PASSED [ 57%] +tests/test_stats.py::test_mean[zarr.Array-2d-ax0-float64] PASSED [ 57%] +tests/test_stats.py::test_mean[zarr.Array-2d-ax0-int32] PASSED [ 57%] +tests/test_stats.py::test_mean[zarr.Array-2d-ax0-bool] PASSED [ 57%] +tests/test_stats.py::test_sum[zarr.Array-float64-2d-all-float32] PASSED [ 57%] +tests/test_stats.py::test_sum[zarr.Array-float64-2d-all-float64] PASSED [ 57%] +tests/test_stats.py::test_sum[zarr.Array-float64-2d-all-int32] PASSED [ 57%] +tests/test_stats.py::test_sum[zarr.Array-float64-2d-all-bool] PASSED [ 57%] +tests/test_stats.py::test_sum[zarr.Array-float64-1d-all-float32] PASSED [ 57%] +tests/test_stats.py::test_sum[zarr.Array-float64-1d-all-float64] PASSED [ 57%] +tests/test_stats.py::test_sum[zarr.Array-float64-1d-all-int32] PASSED [ 57%] +tests/test_stats.py::test_sum[zarr.Array-float64-1d-all-bool] PASSED [ 57%] +tests/test_stats.py::test_sum[zarr.Array-float32-2d-all-float32] PASSED [ 57%] +tests/test_stats.py::test_sum[zarr.Array-float32-2d-all-float64] PASSED [ 57%] +tests/test_stats.py::test_sum[zarr.Array-float32-2d-all-int32] PASSED [ 57%] +tests/test_stats.py::test_sum[zarr.Array-float32-2d-all-bool] PASSED [ 57%] +tests/test_stats.py::test_sum_to_int[zarr.Array-2d-all] PASSED [ 57%] +tests/test_stats.py::test_min_max[zarr.Array-2d-all-min] PASSED [ 57%] +tests/test_stats.py::test_min_max[zarr.Array-2d-all-max] PASSED [ 57%] +tests/test_stats.py::test_mean[zarr.Array-2d-all-float32] PASSED [ 57%] +tests/test_stats.py::test_mean[zarr.Array-2d-all-float64] PASSED [ 57%] +tests/test_stats.py::test_mean[zarr.Array-2d-all-int32] PASSED [ 57%] +tests/test_stats.py::test_mean[zarr.Array-2d-all-bool] PASSED [ 57%] +tests/test_stats.py::test_sum[zarr.Array-float32-1d-all-float32] PASSED [ 57%] +tests/test_stats.py::test_sum[zarr.Array-float32-1d-all-float64] PASSED [ 58%] +tests/test_stats.py::test_sum[zarr.Array-float32-1d-all-int32] PASSED [ 58%] +tests/test_stats.py::test_sum[zarr.Array-float32-1d-all-bool] PASSED [ 58%] +tests/test_stats.py::test_sum_to_int[zarr.Array-1d-all] PASSED [ 58%] +tests/test_stats.py::test_min_max[zarr.Array-1d-all-min] PASSED [ 58%] +tests/test_stats.py::test_min_max[zarr.Array-1d-all-max] PASSED [ 58%] +tests/test_stats.py::test_mean[zarr.Array-1d-all-float32] PASSED [ 58%] +tests/test_stats.py::test_mean[zarr.Array-1d-all-float64] PASSED [ 58%] +tests/test_stats.py::test_mean[zarr.Array-1d-all-int32] PASSED [ 58%] +tests/test_stats.py::test_mean[zarr.Array-1d-all-bool] PASSED [ 58%] +tests/test_stats.py::test_ndim_error[zarr.Array-1d-ax0-sum] PASSED [ 58%] +tests/test_stats.py::test_ndim_error[zarr.Array-1d-ax0-min] PASSED [ 58%] +tests/test_stats.py::test_ndim_error[zarr.Array-1d-ax0-max] PASSED [ 58%] +tests/test_stats.py::test_ndim_error[zarr.Array-1d-ax0-mean] PASSED [ 58%] +tests/test_stats.py::test_ndim_error[zarr.Array-1d-ax0-mean_var] PASSED [ 58%] +tests/test_stats.py::test_ndim_error[zarr.Array-1d-ax0-is_constant] PASSED [ 58%] +tests/test_stats.py::test_ndim_error[zarr.Array-2d-ax3-sum] PASSED [ 58%] +tests/test_stats.py::test_ndim_error[zarr.Array-2d-ax3-min] PASSED [ 58%] +tests/test_stats.py::test_ndim_error[zarr.Array-2d-ax3-max] PASSED [ 58%] +tests/test_stats.py::test_ndim_error[zarr.Array-2d-ax3-mean] PASSED [ 58%] +tests/test_stats.py::test_ndim_error[zarr.Array-2d-ax3-mean_var] PASSED [ 58%] +tests/test_stats.py::test_ndim_error[zarr.Array-2d-ax3-is_constant] PASSED [ 58%] +tests/test_stats.py::test_ndim_error[zarr.Array-2d-axneg-sum] PASSED [ 58%] +tests/test_stats.py::test_ndim_error[zarr.Array-2d-axneg-min] PASSED [ 58%] +tests/test_stats.py::test_ndim_error[zarr.Array-2d-axneg-max] PASSED [ 58%] +tests/test_stats.py::test_ndim_error[zarr.Array-2d-axneg-mean] PASSED [ 58%] +tests/test_stats.py::test_ndim_error[zarr.Array-2d-axneg-mean_var] PASSED [ 58%] +tests/test_stats.py::test_ndim_error[zarr.Array-2d-axneg-is_constant] PASSED [ 58%] +tests/test_test_utils.py::test_conv[zarr.Array-float32] PASSED [ 58%] +tests/test_test_utils.py::test_conv[zarr.Array-float64] PASSED [ 58%] +tests/test_test_utils.py::test_conv_other[zarr.Array-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 58%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 58%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-dask.array.Array[scipy.sparse.csc_array]] SKIPPED [ 58%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-dask.array.Array[scipy.sparse.csc_array]] SKIPPED [ 59%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-dask.array.Array[scipy.sparse.csc_array]] SKIPPED [ 59%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-dask.array.Array[scipy.sparse.csc_array]] SKIPPED [ 59%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-dask.array.Array[scipy.sparse.csc_array]] SKIPPED [ 59%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-dask.array.Array[scipy.sparse.csc_array]] SKIPPED [ 59%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-dask.array.Array[cupy.ndarray]] SKIPPED [ 59%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-dask.array.Array[numpy.ndarray]] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 59%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-scipy.sparse.csc_matrix] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 59%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-scipy.sparse.csr_matrix] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-scipy.sparse.csc_array] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-scipy.sparse.csr_array] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-cupy.ndarray] SKIPPED [ 59%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-numpy.ndarray] PASSED [ 59%] +tests/test_test_utils.py::test_conv[anndata.abc.CSRDataset[h5py.Dataset]-float32] PASSED [ 59%] +tests/test_test_utils.py::test_conv[anndata.abc.CSRDataset[h5py.Dataset]-float64] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[zarr.Array-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 59%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-dask.array.Array[scipy.sparse.csr_matrix]] SKIPPED [ 59%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-dask.array.Array[scipy.sparse.csr_matrix]] SKIPPED [ 60%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-dask.array.Array[scipy.sparse.csr_matrix]] SKIPPED [ 60%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-dask.array.Array[scipy.sparse.csr_matrix]] SKIPPED [ 60%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-dask.array.Array[scipy.sparse.csr_matrix]] SKIPPED [ 60%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-dask.array.Array[scipy.sparse.csr_matrix]] SKIPPED [ 60%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 60%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 60%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-dask.array.Array[cupy.ndarray]] SKIPPED [ 60%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-dask.array.Array[numpy.ndarray]] PASSED [ 60%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 60%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-scipy.sparse.csc_matrix] PASSED [ 60%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 60%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-scipy.sparse.csr_matrix] PASSED [ 60%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-scipy.sparse.csc_array] PASSED [ 60%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-scipy.sparse.csr_array] PASSED [ 60%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-cupy.ndarray] SKIPPED [ 60%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-numpy.ndarray] PASSED [ 60%] +tests/test_test_utils.py::test_conv[anndata.abc.CSCDataset[h5py.Dataset]-float32] PASSED [ 60%] +tests/test_test_utils.py::test_conv[anndata.abc.CSCDataset[h5py.Dataset]-float64] PASSED [ 60%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 60%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 60%] +tests/test_test_utils.py::test_conv_other[zarr.Array-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 60%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 61%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 61%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 61%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-dask.array.Array[cupy.ndarray]] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-dask.array.Array[numpy.ndarray]] PASSED [ 61%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-scipy.sparse.csc_matrix] PASSED [ 61%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-scipy.sparse.csr_matrix] PASSED [ 61%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-scipy.sparse.csc_array] PASSED [ 61%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-scipy.sparse.csr_array] PASSED [ 61%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-cupy.ndarray] SKIPPED [ 61%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-numpy.ndarray] PASSED [ 61%] +tests/test_test_utils.py::test_conv[anndata.abc.CSRDataset[zarr.Array]-float32] PASSED [ 61%] +tests/test_test_utils.py::test_conv[anndata.abc.CSRDataset[zarr.Array]-float64] PASSED [ 61%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[zarr.Array-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-dask.array.Array[scipy.sparse.csc_matrix]] SKIPPED [ 62%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-dask.array.Array[scipy.sparse.csc_matrix]] SKIPPED [ 62%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-dask.array.Array[scipy.sparse.csc_matrix]] SKIPPED [ 62%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-dask.array.Array[scipy.sparse.csc_matrix]] SKIPPED [ 62%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-dask.array.Array[scipy.sparse.csc_matrix]] SKIPPED [ 62%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-dask.array.Array[scipy.sparse.csc_matrix]] SKIPPED [ 62%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 62%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-dask.array.Array[cupy.ndarray]] SKIPPED [ 62%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-dask.array.Array[numpy.ndarray]] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 62%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-scipy.sparse.csc_matrix] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 62%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-scipy.sparse.csr_matrix] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-scipy.sparse.csc_array] PASSED [ 62%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-scipy.sparse.csr_array] PASSED [ 63%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-cupy.ndarray] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-numpy.ndarray] PASSED [ 63%] +tests/test_test_utils.py::test_conv[anndata.abc.CSCDataset[zarr.Array]-float32] PASSED [ 63%] +tests/test_test_utils.py::test_conv[anndata.abc.CSCDataset[zarr.Array]-float64] PASSED [ 63%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[zarr.Array-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-h5py.Dataset] PASSED [ 63%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-h5py.Dataset] PASSED [ 63%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-h5py.Dataset] PASSED [ 63%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-h5py.Dataset] PASSED [ 63%] +tests/test_test_utils.py::test_conv_other[zarr.Array-h5py.Dataset] PASSED [ 63%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-h5py.Dataset] PASSED [ 63%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-h5py.Dataset] SKIPPED [ 64%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-h5py.Dataset] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-h5py.Dataset] SKIPPED [ 64%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-h5py.Dataset] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-h5py.Dataset] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-h5py.Dataset] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-h5py.Dataset] SKIPPED [ 64%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-h5py.Dataset] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-h5py.Dataset] SKIPPED [ 64%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-h5py.Dataset] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-h5py.Dataset] SKIPPED [ 64%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-h5py.Dataset] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-h5py.Dataset] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-h5py.Dataset] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-h5py.Dataset] SKIPPED [ 64%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-h5py.Dataset] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-zarr.Array] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-zarr.Array] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-zarr.Array] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-zarr.Array] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[zarr.Array-zarr.Array] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-zarr.Array] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-zarr.Array] SKIPPED [ 64%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-zarr.Array] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-zarr.Array] SKIPPED [ 64%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-zarr.Array] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-zarr.Array] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-zarr.Array] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-zarr.Array] SKIPPED [ 64%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-zarr.Array] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-zarr.Array] SKIPPED [ 64%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-zarr.Array] PASSED [ 64%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-zarr.Array] SKIPPED [ 64%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-zarr.Array] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-zarr.Array] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-zarr.Array] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-zarr.Array] SKIPPED [ 65%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-zarr.Array] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[zarr.Array-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-anndata.abc.CSRDataset[h5py.Dataset]] SKIPPED [ 65%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-anndata.abc.CSRDataset[h5py.Dataset]] SKIPPED [ 65%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-anndata.abc.CSRDataset[h5py.Dataset]] SKIPPED [ 65%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-anndata.abc.CSRDataset[h5py.Dataset]] SKIPPED [ 65%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-anndata.abc.CSRDataset[h5py.Dataset]] SKIPPED [ 65%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-anndata.abc.CSRDataset[h5py.Dataset]] SKIPPED [ 65%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[zarr.Array-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 65%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-anndata.abc.CSCDataset[h5py.Dataset]] SKIPPED [ 66%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-anndata.abc.CSCDataset[h5py.Dataset]] SKIPPED [ 66%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-anndata.abc.CSCDataset[h5py.Dataset]] SKIPPED [ 66%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-anndata.abc.CSCDataset[h5py.Dataset]] SKIPPED [ 66%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-anndata.abc.CSCDataset[h5py.Dataset]] SKIPPED [ 66%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-anndata.abc.CSCDataset[h5py.Dataset]] SKIPPED [ 66%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[zarr.Array-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-anndata.abc.CSRDataset[zarr.Array]] SKIPPED [ 66%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-anndata.abc.CSRDataset[zarr.Array]] SKIPPED [ 66%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-anndata.abc.CSRDataset[zarr.Array]] SKIPPED [ 66%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-anndata.abc.CSRDataset[zarr.Array]] SKIPPED [ 66%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-anndata.abc.CSRDataset[zarr.Array]] SKIPPED [ 66%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-anndata.abc.CSRDataset[zarr.Array]] SKIPPED [ 67%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_other[zarr.Array-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_other[h5py.Dataset-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-anndata.abc.CSCDataset[zarr.Array]] SKIPPED [ 67%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-anndata.abc.CSCDataset[zarr.Array]] SKIPPED [ 67%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-anndata.abc.CSCDataset[zarr.Array]] SKIPPED [ 67%] +tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-anndata.abc.CSCDataset[zarr.Array]] SKIPPED [ 67%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-anndata.abc.CSCDataset[zarr.Array]] SKIPPED [ 67%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_other[cupy.ndarray-anndata.abc.CSCDataset[zarr.Array]] SKIPPED [ 67%] +tests/test_test_utils.py::test_conv_other[numpy.ndarray-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] +tests/test_test_utils.py::test_conv_extra[scipy.sparse.csc_matrix-scipy.sparse.coo_matrix] PASSED [ 67%] +tests/test_test_utils.py::test_conv_extra[scipy.sparse.csr_matrix-scipy.sparse.coo_matrix] PASSED [ 67%] +tests/test_test_utils.py::test_conv_extra[scipy.sparse.csc_array-scipy.sparse.coo_matrix] PASSED [ 67%] +tests/test_test_utils.py::test_conv_extra[scipy.sparse.csr_array-scipy.sparse.coo_matrix] PASSED [ 67%] +tests/test_test_utils.py::test_conv_extra[numpy.ndarray-scipy.sparse.coo_matrix] PASSED [ 67%] +tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_matrix-K-to_cpu_memory] PASSED [ 67%] +tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_matrix-K-not_to_cpu_memory] PASSED [ 68%] +tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_matrix-C-to_cpu_memory] PASSED [ 68%] +tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_matrix-C-not_to_cpu_memory] PASSED [ 68%] +tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_matrix-F-to_cpu_memory] PASSED [ 68%] +tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_matrix-F-not_to_cpu_memory] PASSED [ 68%] +tests/test_test_utils.py::test_conv_extra[scipy.sparse.csc_matrix-scipy.sparse.coo_array] PASSED [ 68%] +tests/test_test_utils.py::test_conv_extra[scipy.sparse.csr_matrix-scipy.sparse.coo_array] PASSED [ 68%] +tests/test_test_utils.py::test_conv_extra[scipy.sparse.csc_array-scipy.sparse.coo_array] PASSED [ 68%] +tests/test_test_utils.py::test_conv_extra[scipy.sparse.csr_array-scipy.sparse.coo_array] PASSED [ 68%] +tests/test_test_utils.py::test_conv_extra[numpy.ndarray-scipy.sparse.coo_array] PASSED [ 68%] +tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_array-K-to_cpu_memory] PASSED [ 68%] +tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_array-K-not_to_cpu_memory] PASSED [ 68%] +tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_array-C-to_cpu_memory] PASSED [ 68%] +tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_array-C-not_to_cpu_memory] PASSED [ 68%] +tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_array-F-to_cpu_memory] PASSED [ 68%] +tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_array-F-not_to_cpu_memory] PASSED [ 68%] +tests/test_test_utils.py::test_conv_extra[scipy.sparse.csc_matrix-cupyx.scipy.sparse.coo_matrix] SKIPPED [ 68%] +tests/test_test_utils.py::test_conv_extra[scipy.sparse.csr_matrix-cupyx.scipy.sparse.coo_matrix] SKIPPED [ 68%] +tests/test_test_utils.py::test_conv_extra[scipy.sparse.csc_array-cupyx.scipy.sparse.coo_matrix] SKIPPED [ 68%] +tests/test_test_utils.py::test_conv_extra[scipy.sparse.csr_array-cupyx.scipy.sparse.coo_matrix] SKIPPED [ 68%] +tests/test_test_utils.py::test_conv_extra[numpy.ndarray-cupyx.scipy.sparse.coo_matrix] SKIPPED [ 68%] +tests/test_to_dense.py::test_to_dense_extra[cupyx.scipy.sparse.coo_matrix-K-to_cpu_memory] SKIPPED [ 68%] +tests/test_to_dense.py::test_to_dense_extra[cupyx.scipy.sparse.coo_matrix-K-not_to_cpu_memory] SKIPPED [ 68%] +tests/test_to_dense.py::test_to_dense_extra[cupyx.scipy.sparse.coo_matrix-C-to_cpu_memory] SKIPPED [ 68%] +tests/test_to_dense.py::test_to_dense_extra[cupyx.scipy.sparse.coo_matrix-C-not_to_cpu_memory] SKIPPED [ 68%] +tests/test_to_dense.py::test_to_dense_extra[cupyx.scipy.sparse.coo_matrix-F-to_cpu_memory] SKIPPED [ 68%] +tests/test_to_dense.py::test_to_dense_extra[cupyx.scipy.sparse.coo_matrix-F-not_to_cpu_memory] SKIPPED [ 68%] +tests/test_test_utils.py::test_array_types[anndata.abc.CSCDataset[zarr.Array]] PASSED [ 68%] +tests/test_test_utils.py::test_session_scoped_array[anndata.abc.CSCDataset[zarr.Array]] PASSED [ 68%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[zarr.Array]-K-to_cpu_memory] PASSED [ 68%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[zarr.Array]-K-not_to_cpu_memory] PASSED [ 68%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[zarr.Array]-C-to_cpu_memory] PASSED [ 68%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[zarr.Array]-C-not_to_cpu_memory] PASSED [ 68%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[zarr.Array]-F-to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[zarr.Array]-F-not_to_cpu_memory] PASSED [ 69%] +tests/test_test_utils.py::test_array_types[anndata.abc.CSRDataset[zarr.Array]] PASSED [ 69%] +tests/test_test_utils.py::test_session_scoped_array[anndata.abc.CSRDataset[zarr.Array]] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[zarr.Array]-K-to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[zarr.Array]-K-not_to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[zarr.Array]-C-to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[zarr.Array]-C-not_to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[zarr.Array]-F-to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[zarr.Array]-F-not_to_cpu_memory] PASSED [ 69%] +tests/test_test_utils.py::test_array_types[anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 69%] +tests/test_test_utils.py::test_session_scoped_array[anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[h5py.Dataset]-K-to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[h5py.Dataset]-K-not_to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[h5py.Dataset]-C-to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[h5py.Dataset]-C-not_to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[h5py.Dataset]-F-to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[h5py.Dataset]-F-not_to_cpu_memory] PASSED [ 69%] +tests/test_test_utils.py::test_array_types[anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 69%] +tests/test_test_utils.py::test_session_scoped_array[anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[h5py.Dataset]-K-to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[h5py.Dataset]-K-not_to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[h5py.Dataset]-C-to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[h5py.Dataset]-C-not_to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[h5py.Dataset]-F-to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[h5py.Dataset]-F-not_to_cpu_memory] PASSED [ 69%] +tests/test_test_utils.py::test_array_types[zarr.Array] PASSED [ 69%] +tests/test_test_utils.py::test_session_scoped_array[zarr.Array] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[zarr.Array-K-to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[zarr.Array-K-not_to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[zarr.Array-C-to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[zarr.Array-C-not_to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[zarr.Array-F-to_cpu_memory] PASSED [ 69%] +tests/test_to_dense.py::test_to_dense[zarr.Array-F-not_to_cpu_memory] PASSED [ 70%] +tests/test_test_utils.py::test_array_types[h5py.Dataset] PASSED [ 70%] +tests/test_test_utils.py::test_session_scoped_array[h5py.Dataset] PASSED [ 70%] +tests/test_to_dense.py::test_to_dense[h5py.Dataset-K-to_cpu_memory] PASSED [ 70%] +tests/test_to_dense.py::test_to_dense[h5py.Dataset-K-not_to_cpu_memory] PASSED [ 70%] +tests/test_to_dense.py::test_to_dense[h5py.Dataset-C-to_cpu_memory] PASSED [ 70%] +tests/test_to_dense.py::test_to_dense[h5py.Dataset-C-not_to_cpu_memory] PASSED [ 70%] +tests/test_to_dense.py::test_to_dense[h5py.Dataset-F-to_cpu_memory] PASSED [ 70%] +tests/test_to_dense.py::test_to_dense[h5py.Dataset-F-not_to_cpu_memory] PASSED [ 70%] +tests/test_test_utils.py::test_array_types[dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 70%] +tests/test_test_utils.py::test_session_scoped_array[dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 70%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-K-to_cpu_memory] SKIPPED [ 70%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-K-not_to_cpu_memory] SKIPPED [ 70%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-C-to_cpu_memory] SKIPPED [ 70%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-C-not_to_cpu_memory] SKIPPED [ 70%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-F-to_cpu_memory] SKIPPED [ 70%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-F-not_to_cpu_memory] SKIPPED [ 70%] +tests/test_test_utils.py::test_array_types[dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 70%] +tests/test_test_utils.py::test_session_scoped_array[dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 70%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_matrix]-K-to_cpu_memory] PASSED [ 70%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_matrix]-K-not_to_cpu_memory] PASSED [ 70%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_matrix]-C-to_cpu_memory] PASSED [ 70%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_matrix]-C-not_to_cpu_memory] PASSED [ 70%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_matrix]-F-to_cpu_memory] PASSED [ 70%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_matrix]-F-not_to_cpu_memory] PASSED [ 70%] +tests/test_test_utils.py::test_array_types[dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 70%] +tests/test_test_utils.py::test_session_scoped_array[dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 70%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-K-to_cpu_memory] SKIPPED [ 70%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-K-not_to_cpu_memory] SKIPPED [ 70%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-C-to_cpu_memory] SKIPPED [ 70%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-C-not_to_cpu_memory] SKIPPED [ 70%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-F-to_cpu_memory] SKIPPED [ 70%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-F-not_to_cpu_memory] SKIPPED [ 70%] +tests/test_test_utils.py::test_array_types[dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 71%] +tests/test_test_utils.py::test_session_scoped_array[dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_matrix]-K-to_cpu_memory] PASSED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_matrix]-K-not_to_cpu_memory] PASSED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_matrix]-C-to_cpu_memory] PASSED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_matrix]-C-not_to_cpu_memory] PASSED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_matrix]-F-to_cpu_memory] PASSED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_matrix]-F-not_to_cpu_memory] PASSED [ 71%] +tests/test_test_utils.py::test_array_types[dask.array.Array[scipy.sparse.csc_array]] PASSED [ 71%] +tests/test_test_utils.py::test_session_scoped_array[dask.array.Array[scipy.sparse.csc_array]] PASSED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_array]-K-to_cpu_memory] PASSED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_array]-K-not_to_cpu_memory] PASSED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_array]-C-to_cpu_memory] PASSED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_array]-C-not_to_cpu_memory] PASSED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_array]-F-to_cpu_memory] PASSED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_array]-F-not_to_cpu_memory] PASSED [ 71%] +tests/test_test_utils.py::test_array_types[dask.array.Array[scipy.sparse.csr_array]] PASSED [ 71%] +tests/test_test_utils.py::test_session_scoped_array[dask.array.Array[scipy.sparse.csr_array]] PASSED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_array]-K-to_cpu_memory] PASSED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_array]-K-not_to_cpu_memory] PASSED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_array]-C-to_cpu_memory] PASSED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_array]-C-not_to_cpu_memory] PASSED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_array]-F-to_cpu_memory] PASSED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_array]-F-not_to_cpu_memory] PASSED [ 71%] +tests/test_test_utils.py::test_array_types[dask.array.Array[cupy.ndarray]] SKIPPED [ 71%] +tests/test_test_utils.py::test_session_scoped_array[dask.array.Array[cupy.ndarray]] SKIPPED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[cupy.ndarray]-K-to_cpu_memory] SKIPPED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[cupy.ndarray]-K-not_to_cpu_memory] SKIPPED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[cupy.ndarray]-C-to_cpu_memory] SKIPPED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[cupy.ndarray]-C-not_to_cpu_memory] SKIPPED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[cupy.ndarray]-F-to_cpu_memory] SKIPPED [ 71%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[cupy.ndarray]-F-not_to_cpu_memory] SKIPPED [ 71%] +tests/test_test_utils.py::test_array_types[dask.array.Array[numpy.ndarray]] PASSED [ 71%] +tests/test_test_utils.py::test_session_scoped_array[dask.array.Array[numpy.ndarray]] PASSED [ 72%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[numpy.ndarray]-K-to_cpu_memory] PASSED [ 72%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[numpy.ndarray]-K-not_to_cpu_memory] PASSED [ 72%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[numpy.ndarray]-C-to_cpu_memory] PASSED [ 72%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[numpy.ndarray]-C-not_to_cpu_memory] PASSED [ 72%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[numpy.ndarray]-F-to_cpu_memory] PASSED [ 72%] +tests/test_to_dense.py::test_to_dense[dask.array.Array[numpy.ndarray]-F-not_to_cpu_memory] PASSED [ 72%] +tests/test_test_utils.py::test_array_types[cupyx.scipy.sparse.csc_matrix] SKIPPED [ 72%] +tests/test_test_utils.py::test_session_scoped_array[cupyx.scipy.sparse.csc_matrix] SKIPPED [ 72%] +tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csc_matrix-K-to_cpu_memory] SKIPPED [ 72%] +tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csc_matrix-K-not_to_cpu_memory] SKIPPED [ 72%] +tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csc_matrix-C-to_cpu_memory] SKIPPED [ 72%] +tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csc_matrix-C-not_to_cpu_memory] SKIPPED [ 72%] +tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csc_matrix-F-to_cpu_memory] SKIPPED [ 72%] +tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csc_matrix-F-not_to_cpu_memory] SKIPPED [ 72%] +tests/test_test_utils.py::test_array_types[scipy.sparse.csc_matrix] PASSED [ 72%] +tests/test_test_utils.py::test_session_scoped_array[scipy.sparse.csc_matrix] PASSED [ 72%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_matrix-K-to_cpu_memory] PASSED [ 72%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_matrix-K-not_to_cpu_memory] PASSED [ 72%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_matrix-C-to_cpu_memory] PASSED [ 72%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_matrix-C-not_to_cpu_memory] PASSED [ 72%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_matrix-F-to_cpu_memory] PASSED [ 72%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_matrix-F-not_to_cpu_memory] PASSED [ 72%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-ax0-float32] SKIPPED [ 72%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-ax0-float64] SKIPPED [ 72%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-ax0-int32] SKIPPED [ 72%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-ax0-bool] SKIPPED [ 72%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-all-float32] SKIPPED [ 72%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-all-float64] SKIPPED [ 72%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-all-int32] SKIPPED [ 72%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-all-bool] SKIPPED [ 72%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-1d-all-float32] SKIPPED [ 72%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-1d-all-float64] SKIPPED [ 72%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-1d-all-int32] SKIPPED [ 73%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-1d-all-bool] SKIPPED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-ax0-float32] PASSED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-ax0-float64] PASSED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-ax0-int32] PASSED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-ax0-bool] PASSED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-ax0-float32] PASSED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-ax0-float64] PASSED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-ax0-int32] PASSED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-ax0-bool] PASSED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-ax0-float32] PASSED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-ax0-float64] PASSED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-ax0-int32] PASSED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-ax0-bool] PASSED [ 73%] +tests/test_stats.py::test_sum[cupy.ndarray-None-2d-ax0-float32] SKIPPED [ 73%] +tests/test_stats.py::test_sum[cupy.ndarray-None-2d-ax0-float64] SKIPPED [ 73%] +tests/test_stats.py::test_sum[cupy.ndarray-None-2d-ax0-int32] SKIPPED [ 73%] +tests/test_stats.py::test_sum[cupy.ndarray-None-2d-ax0-bool] SKIPPED [ 73%] +tests/test_stats.py::test_sum[numpy.ndarray-None-2d-ax0-float32] PASSED [ 73%] +tests/test_stats.py::test_sum[numpy.ndarray-None-2d-ax0-float64] PASSED [ 73%] +tests/test_stats.py::test_sum[numpy.ndarray-None-2d-ax0-int32] PASSED [ 73%] +tests/test_stats.py::test_sum[numpy.ndarray-None-2d-ax0-bool] PASSED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-all-float32] PASSED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-all-float64] PASSED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-all-int32] PASSED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-all-bool] PASSED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-1d-all-float32] SKIPPED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-1d-all-float64] SKIPPED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-1d-all-int32] SKIPPED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-1d-all-bool] SKIPPED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-all-float32] PASSED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-all-float64] PASSED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-all-int32] PASSED [ 73%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-all-bool] PASSED [ 74%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-all-float32] PASSED [ 74%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-all-float64] PASSED [ 74%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-all-int32] PASSED [ 74%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-all-bool] PASSED [ 74%] +tests/test_stats.py::test_sum[cupy.ndarray-None-2d-all-float32] SKIPPED [ 74%] +tests/test_stats.py::test_sum[cupy.ndarray-None-2d-all-float64] SKIPPED [ 74%] +tests/test_stats.py::test_sum[cupy.ndarray-None-2d-all-int32] SKIPPED [ 74%] +tests/test_stats.py::test_sum[cupy.ndarray-None-2d-all-bool] SKIPPED [ 74%] +tests/test_stats.py::test_sum[numpy.ndarray-None-2d-all-float32] PASSED [ 74%] +tests/test_stats.py::test_sum[numpy.ndarray-None-2d-all-float64] PASSED [ 74%] +tests/test_stats.py::test_sum[numpy.ndarray-None-2d-all-int32] PASSED [ 74%] +tests/test_stats.py::test_sum[numpy.ndarray-None-2d-all-bool] PASSED [ 74%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-1d-all-float32] SKIPPED [ 74%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-1d-all-float64] SKIPPED [ 74%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-1d-all-int32] SKIPPED [ 74%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-1d-all-bool] SKIPPED [ 74%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-1d-all-float32] PASSED [ 74%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-1d-all-float64] PASSED [ 74%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-1d-all-int32] PASSED [ 74%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-1d-all-bool] PASSED [ 74%] +tests/test_stats.py::test_sum[cupy.ndarray-None-1d-all-float32] SKIPPED [ 74%] +tests/test_stats.py::test_sum[cupy.ndarray-None-1d-all-float64] SKIPPED [ 74%] +tests/test_stats.py::test_sum[cupy.ndarray-None-1d-all-int32] SKIPPED [ 74%] +tests/test_stats.py::test_sum[cupy.ndarray-None-1d-all-bool] SKIPPED [ 74%] +tests/test_stats.py::test_sum[numpy.ndarray-None-1d-all-float32] PASSED [ 74%] +tests/test_stats.py::test_sum[numpy.ndarray-None-1d-all-float64] PASSED [ 74%] +tests/test_stats.py::test_sum[numpy.ndarray-None-1d-all-int32] PASSED [ 74%] +tests/test_stats.py::test_sum[numpy.ndarray-None-1d-all-bool] PASSED [ 74%] +tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csr_matrix-2d-ax1-min] SKIPPED [ 74%] +tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csr_matrix-2d-ax1-max] SKIPPED [ 74%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-ax1-float32] SKIPPED [ 74%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-ax1-float64] SKIPPED [ 75%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-ax1-int32] SKIPPED [ 75%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-ax1-bool] SKIPPED [ 75%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-ax1-float32] SKIPPED [ 75%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-ax1-float64] SKIPPED [ 75%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-ax1-int32] SKIPPED [ 75%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-ax1-bool] SKIPPED [ 75%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-ax1-float32] PASSED [ 75%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-ax1-float64] PASSED [ 75%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-ax1-int32] PASSED [ 75%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-ax1-bool] PASSED [ 75%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-ax1-float32] PASSED [ 75%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-ax1-float64] PASSED [ 75%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-ax1-int32] PASSED [ 75%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-ax1-bool] PASSED [ 75%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-ax1-float32] PASSED [ 75%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-ax1-float64] PASSED [ 75%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-ax1-int32] PASSED [ 75%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-ax1-bool] PASSED [ 75%] +tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-ax1-float32] SKIPPED [ 75%] +tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-ax1-float64] SKIPPED [ 75%] +tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-ax1-int32] SKIPPED [ 75%] +tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-ax1-bool] SKIPPED [ 75%] +tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-ax1-float32] PASSED [ 75%] +tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-ax1-float64] PASSED [ 75%] +tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-ax1-int32] PASSED [ 75%] +tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-ax1-bool] PASSED [ 75%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-ax1-float32] PASSED [ 75%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-ax1-float64] PASSED [ 75%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-ax1-int32] PASSED [ 75%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-ax1-bool] PASSED [ 75%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-ax1-float32] PASSED [ 75%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-ax1-float64] PASSED [ 75%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-ax1-int32] PASSED [ 76%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-ax1-bool] PASSED [ 76%] +tests/test_stats.py::test_sum_to_int[scipy.sparse.csr_matrix-2d-ax1] PASSED [ 76%] +tests/test_stats.py::test_min_max[scipy.sparse.csr_matrix-2d-ax1-min] PASSED [ 76%] +tests/test_stats.py::test_min_max[scipy.sparse.csr_matrix-2d-ax1-max] PASSED [ 76%] +tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-ax1-float32] PASSED [ 76%] +tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-ax1-float64] PASSED [ 76%] +tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-ax1-int32] PASSED [ 76%] +tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-ax1-bool] PASSED [ 76%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-ax1-float32] PASSED [ 76%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-ax1-float64] PASSED [ 76%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-ax1-int32] PASSED [ 76%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-ax1-bool] PASSED [ 76%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-ax1-float32] PASSED [ 76%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-ax1-float64] PASSED [ 76%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-ax1-int32] PASSED [ 76%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-ax1-bool] PASSED [ 76%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-ax1-float32] PASSED [ 76%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-ax1-float64] PASSED [ 76%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-ax1-int32] PASSED [ 76%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-ax1-bool] PASSED [ 76%] +tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-ax1-float32] SKIPPED [ 76%] +tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-ax1-float64] SKIPPED [ 76%] +tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-ax1-int32] SKIPPED [ 76%] +tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-ax1-bool] SKIPPED [ 76%] +tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-ax1-float32] PASSED [ 76%] +tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-ax1-float64] PASSED [ 76%] +tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-ax1-int32] PASSED [ 76%] +tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-ax1-bool] PASSED [ 76%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-ax1-float32] PASSED [ 76%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-ax1-float64] PASSED [ 76%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-ax1-int32] PASSED [ 76%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-ax1-bool] PASSED [ 76%] +tests/test_stats.py::test_sum_to_int[scipy.sparse.csc_array-2d-ax1] PASSED [ 77%] +tests/test_stats.py::test_min_max[scipy.sparse.csc_array-2d-ax1-min] PASSED [ 77%] +tests/test_stats.py::test_min_max[scipy.sparse.csc_array-2d-ax1-max] PASSED [ 77%] +tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-ax1-float32] PASSED [ 77%] +tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-ax1-float64] PASSED [ 77%] +tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-ax1-int32] PASSED [ 77%] +tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-ax1-bool] PASSED [ 77%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-ax1-float32] PASSED [ 77%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-ax1-float64] PASSED [ 77%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-ax1-int32] PASSED [ 77%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-ax1-bool] PASSED [ 77%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float32-sum] PASSED [ 77%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float32-min] PASSED [ 77%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float32-max] PASSED [ 77%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float32-mean] PASSED [ 77%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float32-mean_var] PASSED [ 77%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float32-is_constant] PASSED [ 77%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float64-sum] PASSED [ 77%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float64-min] PASSED [ 77%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float64-max] PASSED [ 77%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float64-mean] PASSED [ 77%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float64-mean_var] PASSED [ 77%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float64-is_constant] PASSED [ 77%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-int32-sum] PASSED [ 77%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-int32-min] PASSED [ 77%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-int32-max] PASSED [ 77%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-int32-mean] PASSED [ 77%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-int32-mean_var] PASSED [ 77%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-int32-is_constant] PASSED [ 77%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-ax1-float32] PASSED [ 77%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-ax1-float64] PASSED [ 77%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-ax1-int32] PASSED [ 77%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-ax1-bool] PASSED [ 77%] +tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-ax1-float32] SKIPPED [ 78%] +tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-ax1-float64] SKIPPED [ 78%] +tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-ax1-int32] SKIPPED [ 78%] +tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-ax1-bool] SKIPPED [ 78%] +tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-ax1-float32] PASSED [ 78%] +tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-ax1-float64] PASSED [ 78%] +tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-ax1-int32] PASSED [ 78%] +tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-ax1-bool] PASSED [ 78%] +tests/test_stats.py::test_sum_to_int[scipy.sparse.csr_array-2d-ax1] PASSED [ 78%] +tests/test_stats.py::test_min_max[scipy.sparse.csr_array-2d-ax1-min] PASSED [ 78%] +tests/test_stats.py::test_min_max[scipy.sparse.csr_array-2d-ax1-max] PASSED [ 78%] +tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-ax1-float32] PASSED [ 78%] +tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-ax1-float64] PASSED [ 78%] +tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-ax1-int32] PASSED [ 78%] +tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-ax1-bool] PASSED [ 78%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-ax1-float32] PASSED [ 78%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-ax1-float64] PASSED [ 78%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-ax1-int32] PASSED [ 78%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-ax1-bool] PASSED [ 78%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float32-sum] PASSED [ 78%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float32-min] PASSED [ 78%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float32-max] PASSED [ 78%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float32-mean] PASSED [ 78%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float32-mean_var] PASSED [ 78%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float32-is_constant] PASSED [ 78%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float64-sum] PASSED [ 78%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float64-min] PASSED [ 78%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float64-max] PASSED [ 78%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float64-mean] PASSED [ 78%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float64-mean_var] PASSED [ 78%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float64-is_constant] PASSED [ 78%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-int32-sum] PASSED [ 78%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-int32-min] PASSED [ 78%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-int32-max] PASSED [ 79%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-int32-mean] PASSED [ 79%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-int32-mean_var] PASSED [ 79%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-int32-is_constant] PASSED [ 79%] +tests/test_stats.py::test_min_max[cupy.ndarray-2d-ax1-min] SKIPPED (...) [ 79%] +tests/test_stats.py::test_min_max[cupy.ndarray-2d-ax1-max] SKIPPED (...) [ 79%] +tests/test_stats.py::test_mean[cupy.ndarray-2d-ax1-float32] SKIPPED [ 79%] +tests/test_stats.py::test_mean[cupy.ndarray-2d-ax1-float64] SKIPPED [ 79%] +tests/test_stats.py::test_mean[cupy.ndarray-2d-ax1-int32] SKIPPED (c...) [ 79%] +tests/test_stats.py::test_mean[cupy.ndarray-2d-ax1-bool] SKIPPED (cu...) [ 79%] +tests/test_stats.py::test_mean_var[cupy.ndarray-2d-ax1-float32] SKIPPED [ 79%] +tests/test_stats.py::test_mean_var[cupy.ndarray-2d-ax1-float64] SKIPPED [ 79%] +tests/test_stats.py::test_mean_var[cupy.ndarray-2d-ax1-int32] SKIPPED [ 79%] +tests/test_stats.py::test_mean_var[cupy.ndarray-2d-ax1-bool] SKIPPED [ 79%] +tests/test_stats.py::test_sum_to_int[numpy.ndarray-2d-ax1] PASSED [ 79%] +tests/test_stats.py::test_min_max[numpy.ndarray-2d-ax1-min] PASSED [ 79%] +tests/test_stats.py::test_min_max[numpy.ndarray-2d-ax1-max] PASSED [ 79%] +tests/test_stats.py::test_mean[numpy.ndarray-2d-ax1-float32] PASSED [ 79%] +tests/test_stats.py::test_mean[numpy.ndarray-2d-ax1-float64] PASSED [ 79%] +tests/test_stats.py::test_mean[numpy.ndarray-2d-ax1-int32] PASSED [ 79%] +tests/test_stats.py::test_mean[numpy.ndarray-2d-ax1-bool] PASSED [ 79%] +tests/test_stats.py::test_mean_var[numpy.ndarray-2d-ax1-float32] PASSED [ 79%] +tests/test_stats.py::test_mean_var[numpy.ndarray-2d-ax1-float64] PASSED [ 79%] +tests/test_stats.py::test_mean_var[numpy.ndarray-2d-ax1-int32] PASSED [ 79%] +tests/test_stats.py::test_mean_var[numpy.ndarray-2d-ax1-bool] PASSED [ 79%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float32-sum] PASSED [ 79%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float32-min] PASSED [ 79%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float32-max] PASSED [ 79%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float32-mean] PASSED [ 79%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float32-mean_var] PASSED [ 79%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float32-is_constant] PASSED [ 79%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float64-sum] PASSED [ 79%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float64-min] PASSED [ 79%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float64-max] PASSED [ 80%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float64-mean] PASSED [ 80%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float64-mean_var] PASSED [ 80%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float64-is_constant] PASSED [ 80%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-int32-sum] PASSED [ 80%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-int32-min] PASSED [ 80%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-int32-max] PASSED [ 80%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-int32-mean] PASSED [ 80%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-int32-mean_var] PASSED [ 80%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-int32-is_constant] PASSED [ 80%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-ax0-float32] SKIPPED [ 80%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-ax0-float64] SKIPPED [ 80%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-ax0-int32] SKIPPED [ 80%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-ax0-bool] SKIPPED [ 80%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-ax0-float32] SKIPPED [ 80%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-ax0-float64] SKIPPED [ 80%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-ax0-int32] SKIPPED [ 80%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-ax0-bool] SKIPPED [ 80%] +tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csr_matrix-2d-ax0-min] SKIPPED [ 80%] +tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csr_matrix-2d-ax0-max] SKIPPED [ 80%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-ax0-float32] SKIPPED [ 80%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-ax0-float64] SKIPPED [ 80%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-ax0-int32] SKIPPED [ 80%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-ax0-bool] SKIPPED [ 80%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-ax0-float32] SKIPPED [ 80%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-ax0-float64] SKIPPED [ 80%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-ax0-int32] SKIPPED [ 80%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-ax0-bool] SKIPPED [ 80%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-all-float32] SKIPPED [ 80%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-all-float64] SKIPPED [ 80%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-all-int32] SKIPPED [ 80%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-all-bool] SKIPPED [ 80%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-1d-all-float32] SKIPPED [ 80%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-1d-all-float64] SKIPPED [ 81%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-1d-all-int32] SKIPPED [ 81%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-1d-all-bool] SKIPPED [ 81%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-all-float32] SKIPPED [ 81%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-all-float64] SKIPPED [ 81%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-all-int32] SKIPPED [ 81%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-all-bool] SKIPPED [ 81%] +tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csr_matrix-2d-all-min] SKIPPED [ 81%] +tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csr_matrix-2d-all-max] SKIPPED [ 81%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-all-float32] SKIPPED [ 81%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-all-float64] SKIPPED [ 81%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-all-int32] SKIPPED [ 81%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-all-bool] SKIPPED [ 81%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-all-float32] SKIPPED [ 81%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-all-float64] SKIPPED [ 81%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-all-int32] SKIPPED [ 81%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-all-bool] SKIPPED [ 81%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-1d-all-float32] SKIPPED [ 81%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-1d-all-float64] SKIPPED [ 81%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-1d-all-int32] SKIPPED [ 81%] +tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-1d-all-bool] SKIPPED [ 81%] +tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csr_matrix-1d-all-min] SKIPPED [ 81%] +tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csr_matrix-1d-all-max] SKIPPED [ 81%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-1d-all-float32] SKIPPED [ 81%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-1d-all-float64] SKIPPED [ 81%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-1d-all-int32] SKIPPED [ 81%] +tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-1d-all-bool] SKIPPED [ 81%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-1d-all-float32] SKIPPED [ 81%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-1d-all-float64] SKIPPED [ 81%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-1d-all-int32] SKIPPED [ 81%] +tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-1d-all-bool] SKIPPED [ 81%] +tests/test_test_utils.py::test_conv[cupyx.scipy.sparse.csr_matrix-float32] SKIPPED [ 81%] +tests/test_test_utils.py::test_conv[cupyx.scipy.sparse.csr_matrix-float64] SKIPPED [ 81%] +tests/test_test_utils.py::test_array_types[cupyx.scipy.sparse.csr_matrix] SKIPPED [ 82%] +tests/test_test_utils.py::test_session_scoped_array[cupyx.scipy.sparse.csr_matrix] SKIPPED [ 82%] +tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csr_matrix-K-to_cpu_memory] SKIPPED [ 82%] +tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csr_matrix-K-not_to_cpu_memory] SKIPPED [ 82%] +tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csr_matrix-C-to_cpu_memory] SKIPPED [ 82%] +tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csr_matrix-C-not_to_cpu_memory] SKIPPED [ 82%] +tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csr_matrix-F-to_cpu_memory] SKIPPED [ 82%] +tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csr_matrix-F-not_to_cpu_memory] SKIPPED [ 82%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-all-float32] PASSED [ 82%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-all-float64] PASSED [ 82%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-all-int32] PASSED [ 82%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-all-bool] PASSED [ 82%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-1d-all-float32] SKIPPED [ 82%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-1d-all-float64] SKIPPED [ 82%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-1d-all-int32] SKIPPED [ 82%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-1d-all-bool] SKIPPED [ 82%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-all-float32] PASSED [ 82%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-all-float64] PASSED [ 82%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-all-int32] PASSED [ 82%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-all-bool] PASSED [ 82%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-all-float32] PASSED [ 82%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-all-float64] PASSED [ 82%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-all-int32] PASSED [ 82%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-all-bool] PASSED [ 82%] +tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-all-float32] SKIPPED [ 82%] +tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-all-float64] SKIPPED [ 82%] +tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-all-int32] SKIPPED [ 82%] +tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-all-bool] SKIPPED [ 82%] +tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-all-float32] PASSED [ 82%] +tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-all-float64] PASSED [ 82%] +tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-all-int32] PASSED [ 82%] +tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-all-bool] PASSED [ 82%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-1d-all-float32] SKIPPED [ 82%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-1d-all-float64] SKIPPED [ 83%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-1d-all-int32] SKIPPED [ 83%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-1d-all-bool] SKIPPED [ 83%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-1d-all-float32] PASSED [ 83%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-1d-all-float64] PASSED [ 83%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-1d-all-int32] PASSED [ 83%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-1d-all-bool] PASSED [ 83%] +tests/test_stats.py::test_sum[cupy.ndarray-int64-1d-all-float32] SKIPPED [ 83%] +tests/test_stats.py::test_sum[cupy.ndarray-int64-1d-all-float64] SKIPPED [ 83%] +tests/test_stats.py::test_sum[cupy.ndarray-int64-1d-all-int32] SKIPPED [ 83%] +tests/test_stats.py::test_sum[cupy.ndarray-int64-1d-all-bool] SKIPPED [ 83%] +tests/test_stats.py::test_sum[numpy.ndarray-int64-1d-all-float32] PASSED [ 83%] +tests/test_stats.py::test_sum[numpy.ndarray-int64-1d-all-float64] PASSED [ 83%] +tests/test_stats.py::test_sum[numpy.ndarray-int64-1d-all-int32] PASSED [ 83%] +tests/test_stats.py::test_sum[numpy.ndarray-int64-1d-all-bool] PASSED [ 83%] +tests/test_stats.py::test_sum_to_int[scipy.sparse.csr_matrix-2d-ax0] PASSED [ 83%] +tests/test_stats.py::test_min_max[scipy.sparse.csr_matrix-2d-ax0-min] PASSED [ 83%] +tests/test_stats.py::test_min_max[scipy.sparse.csr_matrix-2d-ax0-max] PASSED [ 83%] +tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-ax0-float32] PASSED [ 83%] +tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-ax0-float64] PASSED [ 83%] +tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-ax0-int32] PASSED [ 83%] +tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-ax0-bool] PASSED [ 83%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-ax0-float32] PASSED [ 83%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-ax0-float64] PASSED [ 83%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-ax0-int32] PASSED [ 83%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-ax0-bool] PASSED [ 83%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-ax0-float32] PASSED [ 83%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-ax0-float64] PASSED [ 83%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-ax0-int32] PASSED [ 83%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-ax0-bool] PASSED [ 83%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-ax0-float32] PASSED [ 83%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-ax0-float64] PASSED [ 83%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-ax0-int32] PASSED [ 83%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-ax0-bool] PASSED [ 84%] +tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-ax0-float32] SKIPPED [ 84%] +tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-ax0-float64] SKIPPED [ 84%] +tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-ax0-int32] SKIPPED [ 84%] +tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-ax0-bool] SKIPPED [ 84%] +tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-ax0-float32] PASSED [ 84%] +tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-ax0-float64] PASSED [ 84%] +tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-ax0-int32] PASSED [ 84%] +tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-ax0-bool] PASSED [ 84%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-ax0-float32] PASSED [ 84%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-ax0-float64] PASSED [ 84%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-ax0-int32] PASSED [ 84%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-ax0-bool] PASSED [ 84%] +tests/test_stats.py::test_sum_to_int[scipy.sparse.csc_array-2d-ax0] PASSED [ 84%] +tests/test_stats.py::test_min_max[scipy.sparse.csc_array-2d-ax0-min] PASSED [ 84%] +tests/test_stats.py::test_min_max[scipy.sparse.csc_array-2d-ax0-max] PASSED [ 84%] +tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-ax0-float32] PASSED [ 84%] +tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-ax0-float64] PASSED [ 84%] +tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-ax0-int32] PASSED [ 84%] +tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-ax0-bool] PASSED [ 84%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-ax0-float32] PASSED [ 84%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-ax0-float64] PASSED [ 84%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-ax0-int32] PASSED [ 84%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-ax0-bool] PASSED [ 84%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float32-sum] PASSED [ 84%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float32-min] PASSED [ 84%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float32-max] PASSED [ 84%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float32-mean] PASSED [ 84%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float32-mean_var] PASSED [ 84%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float32-is_constant] PASSED [ 84%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float64-sum] PASSED [ 84%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float64-min] PASSED [ 84%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float64-max] PASSED [ 84%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float64-mean] PASSED [ 85%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float64-mean_var] PASSED [ 85%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float64-is_constant] PASSED [ 85%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-int32-sum] PASSED [ 85%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-int32-min] PASSED [ 85%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-int32-max] PASSED [ 85%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-int32-mean] PASSED [ 85%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-int32-mean_var] PASSED [ 85%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-int32-is_constant] PASSED [ 85%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-ax0-float32] PASSED [ 85%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-ax0-float64] PASSED [ 85%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-ax0-int32] PASSED [ 85%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-ax0-bool] PASSED [ 85%] +tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-ax0-float32] SKIPPED [ 85%] +tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-ax0-float64] SKIPPED [ 85%] +tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-ax0-int32] SKIPPED [ 85%] +tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-ax0-bool] SKIPPED [ 85%] +tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-ax0-float32] PASSED [ 85%] +tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-ax0-float64] PASSED [ 85%] +tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-ax0-int32] PASSED [ 85%] +tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-ax0-bool] PASSED [ 85%] +tests/test_stats.py::test_sum_to_int[scipy.sparse.csr_array-2d-ax0] PASSED [ 85%] +tests/test_stats.py::test_min_max[scipy.sparse.csr_array-2d-ax0-min] PASSED [ 85%] +tests/test_stats.py::test_min_max[scipy.sparse.csr_array-2d-ax0-max] PASSED [ 85%] +tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-ax0-float32] PASSED [ 85%] +tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-ax0-float64] PASSED [ 85%] +tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-ax0-int32] PASSED [ 85%] +tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-ax0-bool] PASSED [ 85%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-ax0-float32] PASSED [ 85%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-ax0-float64] PASSED [ 85%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-ax0-int32] PASSED [ 85%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-ax0-bool] PASSED [ 85%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float32-sum] PASSED [ 85%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float32-min] PASSED [ 86%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float32-max] PASSED [ 86%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float32-mean] PASSED [ 86%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float32-mean_var] PASSED [ 86%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float32-is_constant] PASSED [ 86%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float64-sum] PASSED [ 86%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float64-min] PASSED [ 86%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float64-max] PASSED [ 86%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float64-mean] PASSED [ 86%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float64-mean_var] PASSED [ 86%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float64-is_constant] PASSED [ 86%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-int32-sum] PASSED [ 86%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-int32-min] PASSED [ 86%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-int32-max] PASSED [ 86%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-int32-mean] PASSED [ 86%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-int32-mean_var] PASSED [ 86%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-int32-is_constant] PASSED [ 86%] +tests/test_stats.py::test_min_max[cupy.ndarray-2d-ax0-min] SKIPPED (...) [ 86%] +tests/test_stats.py::test_min_max[cupy.ndarray-2d-ax0-max] SKIPPED (...) [ 86%] +tests/test_stats.py::test_mean[cupy.ndarray-2d-ax0-float32] SKIPPED [ 86%] +tests/test_stats.py::test_mean[cupy.ndarray-2d-ax0-float64] SKIPPED [ 86%] +tests/test_stats.py::test_mean[cupy.ndarray-2d-ax0-int32] SKIPPED (c...) [ 86%] +tests/test_stats.py::test_mean[cupy.ndarray-2d-ax0-bool] SKIPPED (cu...) [ 86%] +tests/test_stats.py::test_mean_var[cupy.ndarray-2d-ax0-float32] SKIPPED [ 86%] +tests/test_stats.py::test_mean_var[cupy.ndarray-2d-ax0-float64] SKIPPED [ 86%] +tests/test_stats.py::test_mean_var[cupy.ndarray-2d-ax0-int32] SKIPPED [ 86%] +tests/test_stats.py::test_mean_var[cupy.ndarray-2d-ax0-bool] SKIPPED [ 86%] +tests/test_stats.py::test_sum_to_int[numpy.ndarray-2d-ax0] PASSED [ 86%] +tests/test_stats.py::test_min_max[numpy.ndarray-2d-ax0-min] PASSED [ 86%] +tests/test_stats.py::test_min_max[numpy.ndarray-2d-ax0-max] PASSED [ 86%] +tests/test_stats.py::test_mean[numpy.ndarray-2d-ax0-float32] PASSED [ 86%] +tests/test_stats.py::test_mean[numpy.ndarray-2d-ax0-float64] PASSED [ 86%] +tests/test_stats.py::test_mean[numpy.ndarray-2d-ax0-int32] PASSED [ 86%] +tests/test_stats.py::test_mean[numpy.ndarray-2d-ax0-bool] PASSED [ 87%] +tests/test_stats.py::test_mean_var[numpy.ndarray-2d-ax0-float32] PASSED [ 87%] +tests/test_stats.py::test_mean_var[numpy.ndarray-2d-ax0-float64] PASSED [ 87%] +tests/test_stats.py::test_mean_var[numpy.ndarray-2d-ax0-int32] PASSED [ 87%] +tests/test_stats.py::test_mean_var[numpy.ndarray-2d-ax0-bool] PASSED [ 87%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float32-sum] PASSED [ 87%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float32-min] PASSED [ 87%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float32-max] PASSED [ 87%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float32-mean] PASSED [ 87%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float32-mean_var] PASSED [ 87%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float32-is_constant] PASSED [ 87%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float64-sum] PASSED [ 87%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float64-min] PASSED [ 87%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float64-max] PASSED [ 87%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float64-mean] PASSED [ 87%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float64-mean_var] PASSED [ 87%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float64-is_constant] PASSED [ 87%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-int32-sum] PASSED [ 87%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-int32-min] PASSED [ 87%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-int32-max] PASSED [ 87%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-int32-mean] PASSED [ 87%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-int32-mean_var] PASSED [ 87%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-int32-is_constant] PASSED [ 87%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-all-float32] PASSED [ 87%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-all-float64] PASSED [ 87%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-all-int32] PASSED [ 87%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-all-bool] PASSED [ 87%] +tests/test_stats.py::test_sum_to_int[scipy.sparse.csr_matrix-2d-all] PASSED [ 87%] +tests/test_stats.py::test_min_max[scipy.sparse.csr_matrix-2d-all-min] PASSED [ 87%] +tests/test_stats.py::test_min_max[scipy.sparse.csr_matrix-2d-all-max] PASSED [ 87%] +tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-all-float32] PASSED [ 87%] +tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-all-float64] PASSED [ 87%] +tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-all-int32] PASSED [ 87%] +tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-all-bool] PASSED [ 88%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-all-float32] PASSED [ 88%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-all-float64] PASSED [ 88%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-all-int32] PASSED [ 88%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-all-bool] PASSED [ 88%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-1d-all-float32] SKIPPED [ 88%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-1d-all-float64] SKIPPED [ 88%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-1d-all-int32] SKIPPED [ 88%] +tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-1d-all-bool] SKIPPED [ 88%] +tests/test_stats.py::test_sum_to_int[scipy.sparse.csr_matrix-1d-all] PASSED [ 88%] +tests/test_stats.py::test_min_max[scipy.sparse.csr_matrix-1d-all-min] PASSED [ 88%] +tests/test_stats.py::test_min_max[scipy.sparse.csr_matrix-1d-all-max] PASSED [ 88%] +tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-1d-all-float32] SKIPPED [ 88%] +tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-1d-all-float64] SKIPPED [ 88%] +tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-1d-all-int32] SKIPPED [ 88%] +tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-1d-all-bool] SKIPPED [ 88%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-1d-all-float32] SKIPPED [ 88%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-1d-all-float64] SKIPPED [ 88%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-1d-all-int32] SKIPPED [ 88%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-1d-all-bool] SKIPPED [ 88%] +tests/test_sparse.py::test_to_dense[scipy.sparse.csr_matrix-float64-C] PASSED [ 88%] +tests/test_sparse.py::test_to_dense[scipy.sparse.csr_matrix-float64-F] PASSED [ 88%] +tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csr_matrix-float64-C] PASSED [ 88%] +tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csr_matrix-float64-F] PASSED [ 88%] +tests/test_sparse.py::test_to_dense[scipy.sparse.csr_matrix-float32-C] PASSED [ 88%] +tests/test_sparse.py::test_to_dense[scipy.sparse.csr_matrix-float32-F] PASSED [ 88%] +tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csr_matrix-float32-C] PASSED [ 88%] +tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csr_matrix-float32-F] PASSED [ 88%] +tests/test_numpy_scipy_sparse.py::test_ndim[scipy.sparse.csr_matrix] PASSED [ 88%] +tests/test_numpy_scipy_sparse.py::test_shape[scipy.sparse.csr_matrix] PASSED [ 88%] +tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csr_matrix-d=i64-i=32] PASSED [ 88%] +tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csr_matrix-d=i64-i=64] PASSED [ 88%] +tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csr_matrix-d=f64-i=32] PASSED [ 88%] +tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csr_matrix-d=f64-i=64] PASSED [ 89%] +tests/test_stats.py::test_is_constant[scipy.sparse.csr_matrix-None] PASSED [ 89%] +tests/test_stats.py::test_is_constant[scipy.sparse.csr_matrix-0] PASSED [ 89%] +tests/test_stats.py::test_is_constant[scipy.sparse.csr_matrix-1] PASSED [ 89%] +tests/test_test_utils.py::test_conv[scipy.sparse.csr_matrix-float32] PASSED [ 89%] +tests/test_test_utils.py::test_conv[scipy.sparse.csr_matrix-float64] PASSED [ 89%] +tests/test_test_utils.py::test_array_types[scipy.sparse.csr_matrix] PASSED [ 89%] +tests/test_test_utils.py::test_session_scoped_array[scipy.sparse.csr_matrix] PASSED [ 89%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_matrix-K-to_cpu_memory] PASSED [ 89%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_matrix-K-not_to_cpu_memory] PASSED [ 89%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_matrix-C-to_cpu_memory] PASSED [ 89%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_matrix-C-not_to_cpu_memory] PASSED [ 89%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_matrix-F-to_cpu_memory] PASSED [ 89%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_matrix-F-not_to_cpu_memory] PASSED [ 89%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-1d-all-float32] SKIPPED [ 89%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-1d-all-float64] SKIPPED [ 89%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-1d-all-int32] SKIPPED [ 89%] +tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-1d-all-bool] SKIPPED [ 89%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-1d-all-float32] PASSED [ 89%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-1d-all-float64] PASSED [ 89%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-1d-all-int32] PASSED [ 89%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-1d-all-bool] PASSED [ 89%] +tests/test_stats.py::test_sum[cupy.ndarray-float64-1d-all-float32] SKIPPED [ 89%] +tests/test_stats.py::test_sum[cupy.ndarray-float64-1d-all-float64] SKIPPED [ 89%] +tests/test_stats.py::test_sum[cupy.ndarray-float64-1d-all-int32] SKIPPED [ 89%] +tests/test_stats.py::test_sum[cupy.ndarray-float64-1d-all-bool] SKIPPED [ 89%] +tests/test_stats.py::test_sum[numpy.ndarray-float64-1d-all-float32] PASSED [ 89%] +tests/test_stats.py::test_sum[numpy.ndarray-float64-1d-all-float64] PASSED [ 89%] +tests/test_stats.py::test_sum[numpy.ndarray-float64-1d-all-int32] PASSED [ 89%] +tests/test_stats.py::test_sum[numpy.ndarray-float64-1d-all-bool] PASSED [ 89%] +tests/test_stats.py::test_sum_to_int[scipy.sparse.csc_array-2d-all] PASSED [ 89%] +tests/test_stats.py::test_min_max[scipy.sparse.csc_array-2d-all-min] PASSED [ 89%] +tests/test_stats.py::test_min_max[scipy.sparse.csc_array-2d-all-max] PASSED [ 89%] +tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-all-float32] PASSED [ 90%] +tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-all-float64] PASSED [ 90%] +tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-all-int32] PASSED [ 90%] +tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-all-bool] PASSED [ 90%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-all-float32] PASSED [ 90%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-all-float64] PASSED [ 90%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-all-int32] PASSED [ 90%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-all-bool] PASSED [ 90%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float32-sum] PASSED [ 90%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float32-min] PASSED [ 90%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float32-max] PASSED [ 90%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float32-mean] PASSED [ 90%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float32-mean_var] PASSED [ 90%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float32-is_constant] PASSED [ 90%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float64-sum] PASSED [ 90%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float64-min] PASSED [ 90%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float64-max] PASSED [ 90%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float64-mean] PASSED [ 90%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float64-mean_var] PASSED [ 90%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float64-is_constant] PASSED [ 90%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-int32-sum] PASSED [ 90%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-int32-min] PASSED [ 90%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-int32-max] PASSED [ 90%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-int32-mean] PASSED [ 90%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-int32-mean_var] PASSED [ 90%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-int32-is_constant] PASSED [ 90%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-all-float32] PASSED [ 90%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-all-float64] PASSED [ 90%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-all-int32] PASSED [ 90%] +tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-all-bool] PASSED [ 90%] +tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-all-float32] SKIPPED [ 90%] +tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-all-float64] SKIPPED [ 90%] +tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-all-int32] SKIPPED [ 90%] +tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-all-bool] SKIPPED [ 91%] +tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-all-float32] PASSED [ 91%] +tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-all-float64] PASSED [ 91%] +tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-all-int32] PASSED [ 91%] +tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-all-bool] PASSED [ 91%] +tests/test_stats.py::test_sum_to_int[scipy.sparse.csr_array-2d-all] PASSED [ 91%] +tests/test_stats.py::test_min_max[scipy.sparse.csr_array-2d-all-min] PASSED [ 91%] +tests/test_stats.py::test_min_max[scipy.sparse.csr_array-2d-all-max] PASSED [ 91%] +tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-all-float32] PASSED [ 91%] +tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-all-float64] PASSED [ 91%] +tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-all-int32] PASSED [ 91%] +tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-all-bool] PASSED [ 91%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-all-float32] PASSED [ 91%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-all-float64] PASSED [ 91%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-all-int32] PASSED [ 91%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-all-bool] PASSED [ 91%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float32-sum] PASSED [ 91%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float32-min] PASSED [ 91%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float32-max] PASSED [ 91%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float32-mean] PASSED [ 91%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float32-mean_var] PASSED [ 91%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float32-is_constant] PASSED [ 91%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float64-sum] PASSED [ 91%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float64-min] PASSED [ 91%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float64-max] PASSED [ 91%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float64-mean] PASSED [ 91%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float64-mean_var] PASSED [ 91%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float64-is_constant] PASSED [ 91%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-int32-sum] PASSED [ 91%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-int32-min] PASSED [ 91%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-int32-max] PASSED [ 91%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-int32-mean] PASSED [ 91%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-int32-mean_var] PASSED [ 91%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-int32-is_constant] PASSED [ 92%] +tests/test_stats.py::test_min_max[cupy.ndarray-2d-all-min] SKIPPED (...) [ 92%] +tests/test_stats.py::test_min_max[cupy.ndarray-2d-all-max] SKIPPED (...) [ 92%] +tests/test_stats.py::test_mean[cupy.ndarray-2d-all-float32] SKIPPED [ 92%] +tests/test_stats.py::test_mean[cupy.ndarray-2d-all-float64] SKIPPED [ 92%] +tests/test_stats.py::test_mean[cupy.ndarray-2d-all-int32] SKIPPED (c...) [ 92%] +tests/test_stats.py::test_mean[cupy.ndarray-2d-all-bool] SKIPPED (cu...) [ 92%] +tests/test_stats.py::test_mean_var[cupy.ndarray-2d-all-float32] SKIPPED [ 92%] +tests/test_stats.py::test_mean_var[cupy.ndarray-2d-all-float64] SKIPPED [ 92%] +tests/test_stats.py::test_mean_var[cupy.ndarray-2d-all-int32] SKIPPED [ 92%] +tests/test_stats.py::test_mean_var[cupy.ndarray-2d-all-bool] SKIPPED [ 92%] +tests/test_stats.py::test_sum_to_int[numpy.ndarray-2d-all] PASSED [ 92%] +tests/test_stats.py::test_min_max[numpy.ndarray-2d-all-min] PASSED [ 92%] +tests/test_stats.py::test_min_max[numpy.ndarray-2d-all-max] PASSED [ 92%] +tests/test_stats.py::test_mean[numpy.ndarray-2d-all-float32] PASSED [ 92%] +tests/test_stats.py::test_mean[numpy.ndarray-2d-all-float64] PASSED [ 92%] +tests/test_stats.py::test_mean[numpy.ndarray-2d-all-int32] PASSED [ 92%] +tests/test_stats.py::test_mean[numpy.ndarray-2d-all-bool] PASSED [ 92%] +tests/test_stats.py::test_mean_var[numpy.ndarray-2d-all-float32] PASSED [ 92%] +tests/test_stats.py::test_mean_var[numpy.ndarray-2d-all-float64] PASSED [ 92%] +tests/test_stats.py::test_mean_var[numpy.ndarray-2d-all-int32] PASSED [ 92%] +tests/test_stats.py::test_mean_var[numpy.ndarray-2d-all-bool] PASSED [ 92%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float32-sum] PASSED [ 92%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float32-min] PASSED [ 92%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float32-max] PASSED [ 92%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float32-mean] PASSED [ 92%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float32-mean_var] PASSED [ 92%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float32-is_constant] PASSED [ 92%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float64-sum] PASSED [ 92%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float64-min] PASSED [ 92%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float64-max] PASSED [ 92%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float64-mean] PASSED [ 92%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float64-mean_var] PASSED [ 92%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float64-is_constant] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-int32-sum] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-int32-min] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-int32-max] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-int32-mean] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-int32-mean_var] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-int32-is_constant] PASSED [ 93%] +tests/test_stats.py::test_sum_to_int[scipy.sparse.csc_array-1d-all] PASSED [ 93%] +tests/test_stats.py::test_min_max[scipy.sparse.csc_array-1d-all-min] PASSED [ 93%] +tests/test_stats.py::test_min_max[scipy.sparse.csc_array-1d-all-max] PASSED [ 93%] +tests/test_stats.py::test_mean[scipy.sparse.csc_array-1d-all-float32] SKIPPED [ 93%] +tests/test_stats.py::test_mean[scipy.sparse.csc_array-1d-all-float64] SKIPPED [ 93%] +tests/test_stats.py::test_mean[scipy.sparse.csc_array-1d-all-int32] SKIPPED [ 93%] +tests/test_stats.py::test_mean[scipy.sparse.csc_array-1d-all-bool] SKIPPED [ 93%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-1d-all-float32] SKIPPED [ 93%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-1d-all-float64] SKIPPED [ 93%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-1d-all-int32] SKIPPED [ 93%] +tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-1d-all-bool] SKIPPED [ 93%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float32-sum] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float32-min] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float32-max] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float32-mean] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float32-mean_var] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float32-is_constant] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float64-sum] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float64-min] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float64-max] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float64-mean] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float64-mean_var] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float64-is_constant] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-int32-sum] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-int32-min] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-int32-max] PASSED [ 93%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-int32-mean] PASSED [ 94%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-int32-mean_var] PASSED [ 94%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-int32-is_constant] PASSED [ 94%] +tests/test_sparse.py::test_to_dense[scipy.sparse.csc_array-float64-C] PASSED [ 94%] +tests/test_sparse.py::test_to_dense[scipy.sparse.csc_array-float64-F] PASSED [ 94%] +tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csc_array-float64-C] PASSED [ 94%] +tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csc_array-float64-F] PASSED [ 94%] +tests/test_sparse.py::test_to_dense[scipy.sparse.csc_array-float32-C] PASSED [ 94%] +tests/test_sparse.py::test_to_dense[scipy.sparse.csc_array-float32-F] PASSED [ 94%] +tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csc_array-float32-C] PASSED [ 94%] +tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csc_array-float32-F] PASSED [ 94%] +tests/test_numpy_scipy_sparse.py::test_ndim[scipy.sparse.csc_array] PASSED [ 94%] +tests/test_numpy_scipy_sparse.py::test_shape[scipy.sparse.csc_array] PASSED [ 94%] +tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csc_array-d=i64-i=32] PASSED [ 94%] +tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csc_array-d=i64-i=64] PASSED [ 94%] +tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csc_array-d=f64-i=32] PASSED [ 94%] +tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csc_array-d=f64-i=64] PASSED [ 94%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-1d-ax0-sum] SKIPPED [ 94%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-1d-ax0-min] SKIPPED [ 94%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-1d-ax0-max] SKIPPED [ 94%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-1d-ax0-mean] SKIPPED [ 94%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-1d-ax0-mean_var] SKIPPED [ 94%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-1d-ax0-is_constant] SKIPPED [ 94%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-ax3-sum] PASSED [ 94%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-ax3-min] PASSED [ 94%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-ax3-max] PASSED [ 94%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-ax3-mean] PASSED [ 94%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-ax3-mean_var] PASSED [ 94%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-ax3-is_constant] PASSED [ 94%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-axneg-sum] PASSED [ 94%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-axneg-min] PASSED [ 94%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-axneg-max] PASSED [ 94%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-axneg-mean] PASSED [ 94%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-axneg-mean_var] PASSED [ 95%] +tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-axneg-is_constant] PASSED [ 95%] +tests/test_stats.py::test_mean_var_sparse_64[scipy.sparse.csc_array-0] PASSED [ 95%] +tests/test_stats.py::test_mean_var_sparse_64[scipy.sparse.csc_array-1] PASSED [ 95%] +tests/test_stats.py::test_mean_var_sparse_32[scipy.sparse.csc_array] SUBPASSED(stat='mean') [ 95%] +tests/test_stats.py::test_mean_var_sparse_32[scipy.sparse.csc_array] SUBPASSED(stat='var') [ 95%] +tests/test_stats.py::test_mean_var_sparse_32[scipy.sparse.csc_array] PASSED [ 95%] +tests/test_stats.py::test_is_constant[scipy.sparse.csc_array-None] PASSED [ 95%] +tests/test_stats.py::test_is_constant[scipy.sparse.csc_array-0] PASSED [ 95%] +tests/test_stats.py::test_is_constant[scipy.sparse.csc_array-1] PASSED [ 95%] +tests/test_test_utils.py::test_conv[scipy.sparse.csc_array-float32] PASSED [ 95%] +tests/test_test_utils.py::test_conv[scipy.sparse.csc_array-float64] PASSED [ 95%] +tests/test_test_utils.py::test_array_types[scipy.sparse.csc_array] PASSED [ 95%] +tests/test_test_utils.py::test_session_scoped_array[scipy.sparse.csc_array] PASSED [ 95%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_array-K-to_cpu_memory] PASSED [ 95%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_array-K-not_to_cpu_memory] PASSED [ 95%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_array-C-to_cpu_memory] PASSED [ 95%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_array-C-not_to_cpu_memory] PASSED [ 95%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_array-F-to_cpu_memory] PASSED [ 95%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_array-F-not_to_cpu_memory] PASSED [ 95%] +tests/test_stats.py::test_sum_to_int[scipy.sparse.csr_array-1d-all] PASSED [ 95%] +tests/test_stats.py::test_min_max[scipy.sparse.csr_array-1d-all-min] PASSED [ 95%] +tests/test_stats.py::test_min_max[scipy.sparse.csr_array-1d-all-max] PASSED [ 95%] +tests/test_stats.py::test_mean[scipy.sparse.csr_array-1d-all-float32] PASSED [ 95%] +tests/test_stats.py::test_mean[scipy.sparse.csr_array-1d-all-float64] PASSED [ 95%] +tests/test_stats.py::test_mean[scipy.sparse.csr_array-1d-all-int32] PASSED [ 95%] +tests/test_stats.py::test_mean[scipy.sparse.csr_array-1d-all-bool] PASSED [ 95%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-1d-all-float32] PASSED [ 95%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-1d-all-float64] PASSED [ 95%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-1d-all-int32] PASSED [ 95%] +tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-1d-all-bool] PASSED [ 95%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float32-sum] PASSED [ 95%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float32-min] PASSED [ 95%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float32-max] PASSED [ 95%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float32-mean] PASSED [ 95%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float32-mean_var] PASSED [ 96%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float32-is_constant] PASSED [ 96%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float64-sum] PASSED [ 96%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float64-min] PASSED [ 96%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float64-max] PASSED [ 96%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float64-mean] PASSED [ 96%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float64-mean_var] PASSED [ 96%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float64-is_constant] PASSED [ 96%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-int32-sum] PASSED [ 96%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-int32-min] PASSED [ 96%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-int32-max] PASSED [ 96%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-int32-mean] PASSED [ 96%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-int32-mean_var] PASSED [ 96%] +tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-int32-is_constant] PASSED [ 96%] +tests/test_stats.py::test_min_max[cupy.ndarray-1d-all-min] SKIPPED (...) [ 96%] +tests/test_stats.py::test_min_max[cupy.ndarray-1d-all-max] SKIPPED (...) [ 96%] +tests/test_stats.py::test_mean[cupy.ndarray-1d-all-float32] SKIPPED [ 96%] +tests/test_stats.py::test_mean[cupy.ndarray-1d-all-float64] SKIPPED [ 96%] +tests/test_stats.py::test_mean[cupy.ndarray-1d-all-int32] SKIPPED (c...) [ 96%] +tests/test_stats.py::test_mean[cupy.ndarray-1d-all-bool] SKIPPED (cu...) [ 96%] +tests/test_stats.py::test_mean_var[cupy.ndarray-1d-all-float32] SKIPPED [ 96%] +tests/test_stats.py::test_mean_var[cupy.ndarray-1d-all-float64] SKIPPED [ 96%] +tests/test_stats.py::test_mean_var[cupy.ndarray-1d-all-int32] SKIPPED [ 96%] +tests/test_stats.py::test_mean_var[cupy.ndarray-1d-all-bool] SKIPPED [ 96%] +tests/test_stats.py::test_sum_to_int[numpy.ndarray-1d-all] PASSED [ 96%] +tests/test_stats.py::test_min_max[numpy.ndarray-1d-all-min] PASSED [ 96%] +tests/test_stats.py::test_min_max[numpy.ndarray-1d-all-max] PASSED [ 96%] +tests/test_stats.py::test_mean[numpy.ndarray-1d-all-float32] PASSED [ 96%] +tests/test_stats.py::test_mean[numpy.ndarray-1d-all-float64] PASSED [ 96%] +tests/test_stats.py::test_mean[numpy.ndarray-1d-all-int32] PASSED [ 96%] +tests/test_stats.py::test_mean[numpy.ndarray-1d-all-bool] PASSED [ 96%] +tests/test_stats.py::test_mean_var[numpy.ndarray-1d-all-float32] PASSED [ 96%] +tests/test_stats.py::test_mean_var[numpy.ndarray-1d-all-float64] PASSED [ 96%] +tests/test_stats.py::test_mean_var[numpy.ndarray-1d-all-int32] PASSED [ 97%] +tests/test_stats.py::test_mean_var[numpy.ndarray-1d-all-bool] PASSED [ 97%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float32-sum] PASSED [ 97%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float32-min] PASSED [ 97%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float32-max] PASSED [ 97%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float32-mean] PASSED [ 97%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float32-mean_var] PASSED [ 97%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float32-is_constant] PASSED [ 97%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float64-sum] PASSED [ 97%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float64-min] PASSED [ 97%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float64-max] PASSED [ 97%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float64-mean] PASSED [ 97%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float64-mean_var] PASSED [ 97%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float64-is_constant] PASSED [ 97%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-int32-sum] PASSED [ 97%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-int32-min] PASSED [ 97%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-int32-max] PASSED [ 97%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-int32-mean] PASSED [ 97%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-int32-mean_var] PASSED [ 97%] +tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-int32-is_constant] PASSED [ 97%] +tests/test_stats.py::test_mean_var_sparse_64[scipy.sparse.csr_array-0] PASSED [ 97%] +tests/test_stats.py::test_mean_var_sparse_64[scipy.sparse.csr_array-1] PASSED [ 97%] +tests/test_stats.py::test_mean_var_sparse_32[scipy.sparse.csr_array] SUBPASSED(stat='mean') [ 97%] +tests/test_stats.py::test_mean_var_sparse_32[scipy.sparse.csr_array] SUBPASSED(stat='var') [ 97%] +tests/test_stats.py::test_mean_var_sparse_32[scipy.sparse.csr_array] PASSED [ 97%] +tests/test_stats.py::test_is_constant[scipy.sparse.csr_array-None] PASSED [ 97%] +tests/test_stats.py::test_is_constant[scipy.sparse.csr_array-0] PASSED [ 97%] +tests/test_stats.py::test_is_constant[scipy.sparse.csr_array-1] PASSED [ 97%] +tests/test_test_utils.py::test_conv[scipy.sparse.csr_array-float32] PASSED [ 97%] +tests/test_test_utils.py::test_conv[scipy.sparse.csr_array-float64] PASSED [ 97%] +tests/test_test_utils.py::test_array_types[scipy.sparse.csr_array] PASSED [ 97%] +tests/test_test_utils.py::test_session_scoped_array[scipy.sparse.csr_array] PASSED [ 97%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_array-K-to_cpu_memory] PASSED [ 97%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_array-K-not_to_cpu_memory] PASSED [ 97%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_array-C-to_cpu_memory] PASSED [ 97%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_array-C-not_to_cpu_memory] PASSED [ 98%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_array-F-to_cpu_memory] PASSED [ 98%] +tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_array-F-not_to_cpu_memory] PASSED [ 98%] +tests/test_stats.py::test_ndim_error[cupy.ndarray-1d-ax0-sum] SKIPPED [ 98%] +tests/test_stats.py::test_ndim_error[cupy.ndarray-1d-ax0-min] SKIPPED [ 98%] +tests/test_stats.py::test_ndim_error[cupy.ndarray-1d-ax0-max] SKIPPED [ 98%] +tests/test_stats.py::test_ndim_error[cupy.ndarray-1d-ax0-mean] SKIPPED [ 98%] +tests/test_stats.py::test_ndim_error[cupy.ndarray-1d-ax0-mean_var] SKIPPED [ 98%] +tests/test_stats.py::test_ndim_error[cupy.ndarray-1d-ax0-is_constant] SKIPPED [ 98%] +tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-ax3-sum] SKIPPED [ 98%] +tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-ax3-min] SKIPPED [ 98%] +tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-ax3-max] SKIPPED [ 98%] +tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-ax3-mean] SKIPPED [ 98%] +tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-ax3-mean_var] SKIPPED [ 98%] +tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-ax3-is_constant] SKIPPED [ 98%] +tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-axneg-sum] SKIPPED [ 98%] +tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-axneg-min] SKIPPED [ 98%] +tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-axneg-max] SKIPPED [ 98%] +tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-axneg-mean] SKIPPED [ 98%] +tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-axneg-mean_var] SKIPPED [ 98%] +tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-axneg-is_constant] SKIPPED [ 98%] +tests/test_stats.py::test_is_constant[cupy.ndarray-None] SKIPPED (cu...) [ 98%] +tests/test_stats.py::test_is_constant[cupy.ndarray-0] SKIPPED (cupy ...) [ 98%] +tests/test_stats.py::test_is_constant[cupy.ndarray-1] SKIPPED (cupy ...) [ 98%] +tests/test_test_utils.py::test_conv[cupy.ndarray-float32] SKIPPED (c...) [ 98%] +tests/test_test_utils.py::test_conv[cupy.ndarray-float64] SKIPPED (c...) [ 98%] +tests/test_test_utils.py::test_array_types[cupy.ndarray] SKIPPED (cu...) [ 98%] +tests/test_test_utils.py::test_session_scoped_array[cupy.ndarray] SKIPPED [ 98%] +tests/test_to_dense.py::test_to_dense[cupy.ndarray-K-to_cpu_memory] SKIPPED [ 98%] +tests/test_to_dense.py::test_to_dense[cupy.ndarray-K-not_to_cpu_memory] SKIPPED [ 98%] +tests/test_to_dense.py::test_to_dense[cupy.ndarray-C-to_cpu_memory] SKIPPED [ 98%] +tests/test_to_dense.py::test_to_dense[cupy.ndarray-C-not_to_cpu_memory] SKIPPED [ 98%] +tests/test_to_dense.py::test_to_dense[cupy.ndarray-F-to_cpu_memory] SKIPPED [ 98%] +tests/test_to_dense.py::test_to_dense[cupy.ndarray-F-not_to_cpu_memory] SKIPPED [ 99%] +tests/test_stats.py::test_ndim_error[numpy.ndarray-1d-ax0-sum] PASSED [ 99%] +tests/test_stats.py::test_ndim_error[numpy.ndarray-1d-ax0-min] PASSED [ 99%] +tests/test_stats.py::test_ndim_error[numpy.ndarray-1d-ax0-max] PASSED [ 99%] +tests/test_stats.py::test_ndim_error[numpy.ndarray-1d-ax0-mean] PASSED [ 99%] +tests/test_stats.py::test_ndim_error[numpy.ndarray-1d-ax0-mean_var] PASSED [ 99%] +tests/test_stats.py::test_ndim_error[numpy.ndarray-1d-ax0-is_constant] PASSED [ 99%] +tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-ax3-sum] PASSED [ 99%] +tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-ax3-min] PASSED [ 99%] +tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-ax3-max] PASSED [ 99%] +tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-ax3-mean] PASSED [ 99%] +tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-ax3-mean_var] PASSED [ 99%] +tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-ax3-is_constant] PASSED [ 99%] +tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-axneg-sum] PASSED [ 99%] +tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-axneg-min] PASSED [ 99%] +tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-axneg-max] PASSED [ 99%] +tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-axneg-mean] PASSED [ 99%] +tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-axneg-mean_var] PASSED [ 99%] +tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-axneg-is_constant] PASSED [ 99%] +tests/test_stats.py::test_is_constant[numpy.ndarray-None] PASSED [ 99%] +tests/test_stats.py::test_is_constant[numpy.ndarray-0] PASSED [ 99%] +tests/test_stats.py::test_is_constant[numpy.ndarray-1] PASSED [ 99%] +tests/test_test_utils.py::test_conv[numpy.ndarray-float32] PASSED [ 99%] +tests/test_test_utils.py::test_conv[numpy.ndarray-float64] PASSED [ 99%] +tests/test_test_utils.py::test_array_types[numpy.ndarray] PASSED [ 99%] +tests/test_test_utils.py::test_session_scoped_array[numpy.ndarray] PASSED [ 99%] +tests/test_to_dense.py::test_to_dense[numpy.ndarray-K-to_cpu_memory] PASSED [ 99%] +tests/test_to_dense.py::test_to_dense[numpy.ndarray-K-not_to_cpu_memory] PASSED [ 99%] +tests/test_to_dense.py::test_to_dense[numpy.ndarray-C-to_cpu_memory] PASSED [ 99%] +tests/test_to_dense.py::test_to_dense[numpy.ndarray-C-not_to_cpu_memory] PASSED [ 99%] +tests/test_to_dense.py::test_to_dense[numpy.ndarray-F-to_cpu_memory] PASSED [ 99%] +tests/test_to_dense.py::test_to_dense[numpy.ndarray-F-not_to_cpu_memory] FAILED [ 99%] +tests/test_stats.py::tests.test_stats.pbmc64k_reduced_raw SKIPPED [100%] + +=================================== FAILURES =================================== +_______________ test_to_dense[numpy.ndarray-F-not_to_cpu_memory] _______________ + +array_type = numpy.ndarray + + @pytest.mark.parametrize("to_cpu_memory", [True, False], ids=["to_cpu_memory", "not_to_cpu_memory"]) + @pytest.mark.parametrize("order", argvalues=["K", "C", "F"]) # “A” behaves like “K” + def test_to_dense(array_type: ArrayType[Array], *, order: Literal["K", "C", "F"], to_cpu_memory: bool) -> None: + x = array_type([[1, 2, 3], [4, 5, 6]], dtype=np.float32) + if not to_cpu_memory and array_type.cls in {types.CSCDataset, types.CSRDataset}: + with pytest.raises(ValueError, match=r"to_cpu_memory must be True if x is an CS\{R,C\}Dataset"): + to_dense(x, order=order, to_cpu_memory=to_cpu_memory) + return + + with ( + pytest.warns(RuntimeWarning, match="Dask can not be made to emit F-contiguous arrays") + if (order == "F" and array_type.cls is types.DaskArray) + else nullcontext(), + WARNS_NUMBA if issubclass(array_type.cls, types.CSBase) and not find_spec("numba") else nullcontext(), + ): + arr = to_dense(x, order=order, to_cpu_memory=to_cpu_memory) + + assert_expected_cls(x, arr, to_cpu_memory=to_cpu_memory) + assert arr.shape == (2, 3) + # Dask is unreliable: for explicit “F”, we emit a warning (tested above), for “K” we just ignore the result + if not (array_type.cls is types.DaskArray and order in {"F", "K"}): +> assert_expected_order(x, arr, order=order) + +tests/test_to_dense.py:50: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +orig = array([[1., 2., 3.], + [4., 5., 6.]], dtype=float32) +converted = array([[1., 2., 3.], + [4., 5., 6.]], dtype=float32) + + def assert_expected_order(orig: ExtendedArray, converted: Array, *, order: Literal["K", "C", "F"]) -> None: + match converted: + case types.CupyArray() | np.ndarray(): + orders = {order_exp: converted.flags[f"{order_exp}_CONTIGUOUS"] for order_exp in (get_orders(orig) if order == "K" else {order})} # type: ignore[index] +> assert any(orders.values()), orders +E AssertionError: {'F': False} +E assert False +E + where False = any(dict_values([False])) +E + where dict_values([False]) = () +E + where = {'F': False}.values + +tests/test_to_dense.py:81: AssertionError +=========================== short test summary info ============================ +FAILED tests/test_to_dense.py::test_to_dense[numpy.ndarray-F-not_to_cpu_memory] += 1 failed, 2116 passed, 1179 skipped, 4 subtests passed in 241.21s (0:04:01) == diff --git a/pyproject.toml b/pyproject.toml index fd9457f..5b566ab 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,15 +23,16 @@ classifiers = [ "Programming Language :: Python :: 3.14", ] dynamic = [ "description", "readme", "version" ] -dependencies = [ "numpy>=2" ] +dependencies = [ "numpy>=2", "array-api-compat" ] optional-dependencies.accel = [ "numba>=0.57" ] optional-dependencies.dask = [ "dask>=2023.6.1" ] optional-dependencies.full = [ "fast-array-utils[accel,dask,sparse]", "h5py", "zarr" ] optional-dependencies.sparse = [ "scipy>=1.13" ] optional-dependencies.testing = [ "packaging" ] +optional-dependencies.jax = [ "jax", "jaxlib" ] +urls."Documentation" = "https://icb-fast-array-utils.readthedocs-hosted.com/" urls."Issue Tracker" = "https://github.com/scverse/fast-array-utils/issues" urls."Source Code" = "https://github.com/scverse/fast-array-utils" -urls.Documentation = "https://icb-fast-array-utils.readthedocs-hosted.com/" entry-points.pytest11.fast_array_utils = "testing.fast_array_utils.pytest" [dependency-groups] @@ -48,6 +49,15 @@ doc = [ "sphinx>=9.0.1", "sphinx-autofixture>=0.4.1", ] +# for update-mypy-hook +mypy = [ + "fast-array-utils[full]", + "scipy-stubs", + # TODO: replace sphinx with this: { include-group = "doc" }, + "sphinx", + "types-docutils", + { include-group = "test" }, +] test-min = [ "coverage[toml]", "fast-array-utils[sparse,testing]", # include sparse for testing numba-less to_dense @@ -64,7 +74,7 @@ envs.docs.dependency-groups = [ "doc" ] envs.docs.scripts.build = "sphinx-build -M html docs docs/_build" envs.docs.scripts.clean = "git clean -fdX docs" envs.docs.scripts.open = "python -m webbrowser -t docs/_build/html/index.html" -envs.hatch-test.default-args = [] +envs.hatch-test.default-args = [ ] envs.hatch-test.dependency-groups = [ "test-min" ] # TODO: remove scipy once https://github.com/pypa/hatch/pull/2127 is released envs.hatch-test.extra-dependencies = [ "ipykernel", "ipycytoscape", "scipy" ] @@ -89,7 +99,7 @@ metadata.hooks.docstring-description = {} metadata.hooks.fancy-pypi-readme.content-type = "text/x-rst" metadata.hooks.fancy-pypi-readme.fragments = [ { path = "README.rst", start-after = ".. begin" } ] version.source = "vcs" -version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version +version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version [tool.uv] override-dependencies = [ "sphinx>=9.0.1" ] @@ -130,7 +140,7 @@ lint.per-file-ignores."typings/**/*.pyi" = [ "A002", "F403", "F405", "N801" ] lint.allowed-confusables = [ "×", "’" ] lint.flake8-bugbear.extend-immutable-calls = [ "testing.fast_array_utils.Flags" ] lint.flake8-copyright.notice-rgx = "SPDX-License-Identifier: MPL-2\\.0" -lint.flake8-type-checking.exempt-modules = [] +lint.flake8-type-checking.exempt-modules = [ ] lint.flake8-type-checking.strict = true lint.isort.known-first-party = [ "fast_array_utils" ] lint.isort.lines-after-imports = 2 diff --git a/src/fast_array_utils/conv/_to_dense.py b/src/fast_array_utils/conv/_to_dense.py index 6b5de88..b4817e5 100644 --- a/src/fast_array_utils/conv/_to_dense.py +++ b/src/fast_array_utils/conv/_to_dense.py @@ -27,6 +27,13 @@ def to_dense_( order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: bool = False, ) -> NDArray[Any] | types.CupyArray | types.DaskArray: + import array_api_compat + + if not isinstance(x, np.ndarray) and array_api_compat.is_array_api_obj(x): + if to_cpu_memory: + return np.asarray(x, order=order) + return x # already dense + del to_cpu_memory # it already is return np.asarray(x, order=order) diff --git a/src/fast_array_utils/stats/_generic_ops.py b/src/fast_array_utils/stats/_generic_ops.py index 79df974..bcd9ca1 100644 --- a/src/fast_array_utils/stats/_generic_ops.py +++ b/src/fast_array_utils/stats/_generic_ops.py @@ -42,13 +42,20 @@ def generic_op( axis: Literal[0, 1] | None = None, dtype: DTypeLike | None = None, keep_cupy_as_array: bool = False, -) -> NDArray[Any] | np.number[Any] | types.CupyArray | types.DaskArray: +) -> NDArray[Any] | np.number[Any] | types.CupyArray | types.DaskArray: # switch to Any later del keep_cupy_as_array if TYPE_CHECKING: # these are never passed to this fallback function, but `singledispatch` wants them assert not isinstance(x, types.CSBase | types.DaskArray | types.CupyArray | types.CupyCSMatrix) # np supports these, but doesn’t know it. (TODO: test cupy) assert not isinstance(x, types.ZarrArray | types.H5Dataset) + + # doing array_api_compat first + import array_api_compat + + if array_api_compat.is_array_api_obj(x): + xp = array_api_compat.array_namespace(x) + return getattr(xp, op)(x, axis=axis, **_dtype_kw(dtype, op)) return cast("NDArray[Any] | np.number[Any]", _run_numpy_op(x, op, axis=axis, dtype=dtype)) diff --git a/src/fast_array_utils/stats/_is_constant.py b/src/fast_array_utils/stats/_is_constant.py index 1ac95d3..69bc2c6 100644 --- a/src/fast_array_utils/stats/_is_constant.py +++ b/src/fast_array_utils/stats/_is_constant.py @@ -15,6 +15,8 @@ from numpy.typing import NDArray +# checking if all values in an array are the same + @singledispatch def is_constant_( @@ -22,7 +24,20 @@ def is_constant_( /, *, axis: Literal[0, 1] | None = None, -) -> bool | NDArray[np.bool] | types.CupyArray | types.DaskArray: # pragma: no cover +) -> bool | NDArray[np.bool] | types.CupyArray | types.DaskArray: # switch to Any later + + import array_api_compat + + if array_api_compat.is_array_api_obj(a): + xp = array_api_compat.array_namespace(a) + match axis: + case None: + return bool((a == xp.reshape(a, (-1,))[0]).all()) + case 0: + return is_constant_(a.T, axis=1) # reusing axis = 1 + case 1: + b = xp.broadcast_to(a[:, 0:1], a.shape) + return (a == b).all(axis=1) raise NotImplementedError diff --git a/src/fast_array_utils/stats/_power.py b/src/fast_array_utils/stats/_power.py index 8387836..da10d56 100644 --- a/src/fast_array_utils/stats/_power.py +++ b/src/fast_array_utils/stats/_power.py @@ -28,6 +28,13 @@ def power[Arr: Array](x: Arr, n: int, /, dtype: DTypeLike | None = None) -> Arr: def _power(x: Array, n: int, /, dtype: DTypeLike | None = None) -> Array: if TYPE_CHECKING: assert not isinstance(x, types.DaskArray | types.CSBase | types.CupyCSMatrix) + + import array_api_compat + + if array_api_compat.is_array_api_obj(x): + xp = array_api_compat.array_namespace(x) + return xp.pow(x, n) if dtype is None else xp.pow(x.astype(dtype), n) + return x**n if dtype is None else np.power(x, n, dtype=dtype) # type: ignore[operator] diff --git a/tests/test_jax.py b/tests/test_jax.py new file mode 100644 index 0000000..0615116 --- /dev/null +++ b/tests/test_jax.py @@ -0,0 +1,121 @@ +# SPDX-License-Identifier: MPL-2.0 +from __future__ import annotations + +from importlib.util import find_spec +from typing import TYPE_CHECKING + +import numpy as np +import pytest + +from fast_array_utils import stats +from fast_array_utils.conv import to_dense + + +if TYPE_CHECKING: + from typing import Any, Literal + +pytestmark = pytest.mark.skipif(not find_spec("jax"), reason="jax not installed") + +if find_spec("jax"): + # enabling 64-bit precision in JAX as it defaults to 32-bit only + # problem as mean_var passes dtype= np.float64 internally, which crashes without this fix + import jax + + jax.config.update("jax_enable_x64", True) + + +@pytest.fixture +def jax_arr() -> Any: + import jax.numpy as jnp + + return jnp.array([[1, 0], [2, 0], [3, 0]], dtype=jnp.float32) + + +@pytest.mark.parametrize("axis", [None, 0, 1]) +def test_sum(jax_arr: Any, axis: Literal[0, 1] | None) -> None: + import jax.numpy as jnp + + result = stats.sum(jax_arr, axis=axis) + expected = jnp.sum(jax_arr, axis=axis) + assert jnp.array_equal(result, expected) + + +@pytest.mark.parametrize("axis", [None, 0, 1]) +def test_min(jax_arr: Any, axis: Literal[0, 1] | None) -> None: + import jax.numpy as jnp + + result = stats.min(jax_arr, axis=axis) + expected = jnp.min(jax_arr, axis=axis) + assert jnp.array_equal(result, expected) + + +@pytest.mark.parametrize("axis", [None, 0, 1]) +def test_max(jax_arr: Any, axis: Literal[0, 1] | None) -> None: + import jax.numpy as jnp + + result = stats.max(jax_arr, axis=axis) + expected = jnp.max(jax_arr, axis=axis) + assert jnp.array_equal(result, expected) + + +@pytest.mark.parametrize("axis", [None, 0, 1]) +def test_mean(jax_arr: Any, axis: Literal[0, 1] | None) -> None: + import jax.numpy as jnp + + result = stats.mean(jax_arr, axis=axis) + expected = jnp.mean(jax_arr, axis=axis) + assert jnp.allclose(result, expected) + + +@pytest.mark.parametrize("axis", [None, 0, 1]) +def test_is_constant(axis: Literal[0, 1] | None) -> None: + import jax.numpy as jnp + + x = jnp.array( + [ + [0, 0, 1, 1], + [0, 0, 1, 1], + [0, 0, 0, 0], + [0, 0, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 0], + ], + dtype=jnp.float32, + ) + result = stats.is_constant(x, axis=axis) + + if axis is None: + assert bool(result) is False + elif axis == 0: + expected = jnp.array([True, True, False, False]) + assert jnp.array_equal(result, expected) + else: + expected = jnp.array([False, False, True, True, False, True]) + assert jnp.array_equal(result, expected) + + +@pytest.mark.parametrize("axis", [None, 0, 1]) +def test_mean_var(jax_arr: Any, axis: Literal[0, 1] | None) -> None: + import jax.numpy as jnp + + mean, var = stats.mean_var(jax_arr, axis=axis, correction=1) + + mean_expected = jnp.mean(jax_arr, axis=axis) + n = jax_arr.size if axis is None else jax_arr.shape[axis] + var_expected = jnp.var(jax_arr, axis=axis) * n / (n - 1) + + assert jnp.allclose(mean, mean_expected) + assert jnp.allclose(var, var_expected) + + +def test_to_dense(jax_arr: Any) -> None: + import jax.numpy as jnp + + result = to_dense(jax_arr) + assert jnp.array_equal(result, jax_arr) + + +def test_to_dense_to_cpu(jax_arr: Any) -> None: + result = to_dense(jax_arr, to_cpu_memory=True) + assert isinstance(result, np.ndarray) + np.testing.assert_array_equal(result, np.asarray(jax_arr)) From 53730506d4c18b55076b72ff769274a4a0f23c7a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 10:37:24 +0000 Subject: [PATCH 02/36] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- 03_23_2026.log | 8 ++++---- pyproject.toml | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/03_23_2026.log b/03_23_2026.log index 82944c1..566206d 100644 --- a/03_23_2026.log +++ b/03_23_2026.log @@ -3321,7 +3321,7 @@ array_type = numpy.ndarray with pytest.raises(ValueError, match=r"to_cpu_memory must be True if x is an CS\{R,C\}Dataset"): to_dense(x, order=order, to_cpu_memory=to_cpu_memory) return - + with ( pytest.warns(RuntimeWarning, match="Dask can not be made to emit F-contiguous arrays") if (order == "F" and array_type.cls is types.DaskArray) @@ -3329,15 +3329,15 @@ array_type = numpy.ndarray WARNS_NUMBA if issubclass(array_type.cls, types.CSBase) and not find_spec("numba") else nullcontext(), ): arr = to_dense(x, order=order, to_cpu_memory=to_cpu_memory) - + assert_expected_cls(x, arr, to_cpu_memory=to_cpu_memory) assert arr.shape == (2, 3) # Dask is unreliable: for explicit “F”, we emit a warning (tested above), for “K” we just ignore the result if not (array_type.cls is types.DaskArray and order in {"F", "K"}): > assert_expected_order(x, arr, order=order) -tests/test_to_dense.py:50: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +tests/test_to_dense.py:50: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ orig = array([[1., 2., 3.], [4., 5., 6.]], dtype=float32) diff --git a/pyproject.toml b/pyproject.toml index 5b566ab..b235ceb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,16 +23,16 @@ classifiers = [ "Programming Language :: Python :: 3.14", ] dynamic = [ "description", "readme", "version" ] -dependencies = [ "numpy>=2", "array-api-compat" ] +dependencies = [ "array-api-compat", "numpy>=2" ] optional-dependencies.accel = [ "numba>=0.57" ] optional-dependencies.dask = [ "dask>=2023.6.1" ] optional-dependencies.full = [ "fast-array-utils[accel,dask,sparse]", "h5py", "zarr" ] +optional-dependencies.jax = [ "jax", "jaxlib" ] optional-dependencies.sparse = [ "scipy>=1.13" ] optional-dependencies.testing = [ "packaging" ] -optional-dependencies.jax = [ "jax", "jaxlib" ] -urls."Documentation" = "https://icb-fast-array-utils.readthedocs-hosted.com/" urls."Issue Tracker" = "https://github.com/scverse/fast-array-utils/issues" urls."Source Code" = "https://github.com/scverse/fast-array-utils" +urls.Documentation = "https://icb-fast-array-utils.readthedocs-hosted.com/" entry-points.pytest11.fast_array_utils = "testing.fast_array_utils.pytest" [dependency-groups] @@ -74,7 +74,7 @@ envs.docs.dependency-groups = [ "doc" ] envs.docs.scripts.build = "sphinx-build -M html docs docs/_build" envs.docs.scripts.clean = "git clean -fdX docs" envs.docs.scripts.open = "python -m webbrowser -t docs/_build/html/index.html" -envs.hatch-test.default-args = [ ] +envs.hatch-test.default-args = [] envs.hatch-test.dependency-groups = [ "test-min" ] # TODO: remove scipy once https://github.com/pypa/hatch/pull/2127 is released envs.hatch-test.extra-dependencies = [ "ipykernel", "ipycytoscape", "scipy" ] @@ -99,7 +99,7 @@ metadata.hooks.docstring-description = {} metadata.hooks.fancy-pypi-readme.content-type = "text/x-rst" metadata.hooks.fancy-pypi-readme.fragments = [ { path = "README.rst", start-after = ".. begin" } ] version.source = "vcs" -version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version +version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version [tool.uv] override-dependencies = [ "sphinx>=9.0.1" ] @@ -140,7 +140,7 @@ lint.per-file-ignores."typings/**/*.pyi" = [ "A002", "F403", "F405", "N801" ] lint.allowed-confusables = [ "×", "’" ] lint.flake8-bugbear.extend-immutable-calls = [ "testing.fast_array_utils.Flags" ] lint.flake8-copyright.notice-rgx = "SPDX-License-Identifier: MPL-2\\.0" -lint.flake8-type-checking.exempt-modules = [ ] +lint.flake8-type-checking.exempt-modules = [] lint.flake8-type-checking.strict = true lint.isort.known-first-party = [ "fast_array_utils" ] lint.isort.lines-after-imports = 2 From f016c39cedda3b5c6b6a919700bdd323a128b519 Mon Sep 17 00:00:00 2001 From: amalia-k510 Date: Wed, 15 Apr 2026 16:16:35 +0200 Subject: [PATCH 03/36] updates in regards to the handler and some array_api handling fixes --- 03_23_2026.log | 3361 -------------------- pyproject.toml | 7 +- src/fast_array_utils/conv/_to_dense.py | 4 +- src/fast_array_utils/stats/_generic_ops.py | 41 +- src/fast_array_utils/stats/_is_constant.py | 2 +- src/fast_array_utils/stats/_mean_var.py | 12 +- src/fast_array_utils/stats/_power.py | 6 +- src/fast_array_utils/types.py | 11 +- tests/test_jax.py | 14 +- 9 files changed, 62 insertions(+), 3396 deletions(-) delete mode 100644 03_23_2026.log diff --git a/03_23_2026.log b/03_23_2026.log deleted file mode 100644 index 566206d..0000000 --- a/03_23_2026.log +++ /dev/null @@ -1,3361 +0,0 @@ -============================= test session starts ============================== -platform darwin -- Python 3.13.9, pytest-9.0.2, pluggy-1.6.0 -- /Users/Amalia/fast-array-utils/fast/bin/python3.13 -codspeed: 4.3.0 (disabled, mode: walltime, callgraph: not supported, timer_resolution: 41.7ns) -cachedir: .pytest_cache -rootdir: /Users/Amalia/fast-array-utils -configfile: pyproject.toml -plugins: codspeed-4.3.0, fast-array-utils-0.1.dev118, xdist-3.8.0, doctestplus-1.7.1, zarr-3.1.5 -collecting ... collected 6045 items - -tests/test_jax.py::test_sum[None] PASSED [ 0%] -tests/test_jax.py::test_sum[0] PASSED [ 0%] -tests/test_jax.py::test_sum[1] PASSED [ 0%] -tests/test_jax.py::test_min[None] PASSED [ 0%] -tests/test_jax.py::test_min[0] PASSED [ 0%] -tests/test_jax.py::test_min[1] PASSED [ 0%] -tests/test_jax.py::test_max[None] PASSED [ 0%] -tests/test_jax.py::test_max[0] PASSED [ 0%] -tests/test_jax.py::test_max[1] PASSED [ 0%] -tests/test_jax.py::test_mean[None] PASSED [ 0%] -tests/test_jax.py::test_mean[0] PASSED [ 0%] -tests/test_jax.py::test_mean[1] PASSED [ 0%] -tests/test_jax.py::test_is_constant[None] PASSED [ 0%] -tests/test_jax.py::test_is_constant[0] PASSED [ 0%] -tests/test_jax.py::test_is_constant[1] PASSED [ 0%] -tests/test_jax.py::test_mean_var[None] PASSED [ 0%] -tests/test_jax.py::test_mean_var[0] PASSED [ 0%] -tests/test_jax.py::test_mean_var[1] PASSED [ 0%] -tests/test_jax.py::test_to_dense PASSED [ 0%] -tests/test_jax.py::test_to_dense_to_cpu PASSED [ 0%] -tests/test_sparse.py::test_to_dense[scipy.sparse.csr_array-float64-C] PASSED [ 0%] -tests/test_sparse.py::test_to_dense[scipy.sparse.csr_array-float64-F] PASSED [ 0%] -tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csr_array-float64-C] PASSED [ 0%] -tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csr_array-float64-F] PASSED [ 0%] -tests/test_sparse.py::test_to_dense[scipy.sparse.csr_array-float32-C] PASSED [ 0%] -tests/test_sparse.py::test_to_dense[scipy.sparse.csr_array-float32-F] PASSED [ 0%] -tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csr_array-float32-C] PASSED [ 0%] -tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csr_array-float32-F] PASSED [ 0%] -tests/test_numpy_scipy_sparse.py::test_ndim[scipy.sparse.csr_array] PASSED [ 0%] -tests/test_numpy_scipy_sparse.py::test_shape[scipy.sparse.csr_array] PASSED [ 0%] -tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csr_array-d=i64-i=32] PASSED [ 0%] -tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csr_array-d=i64-i=64] PASSED [ 0%] -tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csr_array-d=f64-i=32] PASSED [ 1%] -tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csr_array-d=f64-i=64] PASSED [ 1%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-1d-ax0-sum] PASSED [ 1%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-1d-ax0-min] PASSED [ 1%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-1d-ax0-max] PASSED [ 1%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-1d-ax0-mean] PASSED [ 1%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-1d-ax0-mean_var] PASSED [ 1%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-1d-ax0-is_constant] PASSED [ 1%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-ax3-sum] PASSED [ 1%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-ax3-min] PASSED [ 1%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-ax3-max] PASSED [ 1%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-ax3-mean] PASSED [ 1%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-ax3-mean_var] PASSED [ 1%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-ax3-is_constant] PASSED [ 1%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-axneg-sum] PASSED [ 1%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-axneg-min] PASSED [ 1%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-axneg-max] PASSED [ 1%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-axneg-mean] PASSED [ 1%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-axneg-mean_var] PASSED [ 1%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csr_array-2d-axneg-is_constant] PASSED [ 1%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-1d-all-float32] PASSED [ 1%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-1d-all-float64] PASSED [ 1%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-1d-all-int32] PASSED [ 1%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-1d-all-bool] PASSED [ 1%] -tests/test_stats.py::test_sum[cupy.ndarray-float32-1d-all-float32] SKIPPED [ 1%] -tests/test_stats.py::test_sum[cupy.ndarray-float32-1d-all-float64] SKIPPED [ 1%] -tests/test_stats.py::test_sum[cupy.ndarray-float32-1d-all-int32] SKIPPED [ 1%] -tests/test_stats.py::test_sum[cupy.ndarray-float32-1d-all-bool] SKIPPED [ 1%] -tests/test_stats.py::test_sum[numpy.ndarray-float32-1d-all-float32] PASSED [ 1%] -tests/test_stats.py::test_sum[numpy.ndarray-float32-1d-all-float64] PASSED [ 1%] -tests/test_stats.py::test_sum[numpy.ndarray-float32-1d-all-int32] PASSED [ 1%] -tests/test_stats.py::test_sum[numpy.ndarray-float32-1d-all-bool] PASSED [ 1%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-1d-all-float32] SKIPPED [ 1%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-1d-all-float64] SKIPPED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-1d-all-int32] SKIPPED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-1d-all-bool] SKIPPED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-all-float32] PASSED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-all-float64] PASSED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-all-int32] PASSED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-all-bool] PASSED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-all-float32] PASSED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-all-float64] PASSED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-all-int32] PASSED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-all-bool] PASSED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-all-float32] PASSED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-all-float64] PASSED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-all-int32] PASSED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-all-bool] PASSED [ 2%] -tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-all-float32] SKIPPED [ 2%] -tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-all-float64] SKIPPED [ 2%] -tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-all-int32] SKIPPED [ 2%] -tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-all-bool] SKIPPED [ 2%] -tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-all-float32] PASSED [ 2%] -tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-all-float64] PASSED [ 2%] -tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-all-int32] PASSED [ 2%] -tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-all-bool] PASSED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-all-float32] PASSED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-all-float64] PASSED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-all-int32] PASSED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-all-bool] PASSED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-1d-all-float32] SKIPPED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-1d-all-float64] SKIPPED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-1d-all-int32] SKIPPED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-1d-all-bool] SKIPPED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-ax0-float32] PASSED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-ax0-float64] PASSED [ 2%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-ax0-int32] PASSED [ 3%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-ax0-bool] PASSED [ 3%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-ax0-float32] PASSED [ 3%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-ax0-float64] PASSED [ 3%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-ax0-int32] PASSED [ 3%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-ax0-bool] PASSED [ 3%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-ax0-float32] PASSED [ 3%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-ax0-float64] PASSED [ 3%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-ax0-int32] PASSED [ 3%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-ax0-bool] PASSED [ 3%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-ax0-float32] PASSED [ 3%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-ax0-float64] PASSED [ 3%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-ax0-int32] PASSED [ 3%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-ax0-bool] PASSED [ 3%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-ax0-float32] PASSED [ 3%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-ax0-float64] PASSED [ 3%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-ax0-int32] PASSED [ 3%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-ax0-bool] PASSED [ 3%] -tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-ax0-float32] SKIPPED [ 3%] -tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-ax0-float64] SKIPPED [ 3%] -tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-ax0-int32] SKIPPED [ 3%] -tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-ax0-bool] SKIPPED [ 3%] -tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-ax0-float32] PASSED [ 3%] -tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-ax0-float64] PASSED [ 3%] -tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-ax0-int32] PASSED [ 3%] -tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-ax0-bool] PASSED [ 3%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-ax0-float32] SKIPPED [ 3%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-ax0-float64] SKIPPED [ 3%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-ax0-int32] SKIPPED [ 3%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-ax0-bool] SKIPPED [ 3%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-all-float32] SKIPPED [ 3%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-all-float64] SKIPPED [ 3%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-all-int32] SKIPPED [ 3%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-all-bool] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-1d-all-float32] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-1d-all-float64] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-1d-all-int32] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-1d-all-bool] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-ax1-float32] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-ax1-float64] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-ax1-int32] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-int64-2d-ax1-bool] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-ax1-float32] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-ax1-float64] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-ax1-int32] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-ax1-bool] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-ax1-float32] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-ax1-float64] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-ax1-int32] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-ax1-bool] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-ax1-float32] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-ax1-float64] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-ax1-int32] SKIPPED [ 4%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-ax1-bool] SKIPPED [ 4%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-ax1-float32] PASSED [ 4%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-ax1-float64] PASSED [ 4%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-ax1-int32] PASSED [ 4%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-ax1-bool] PASSED [ 4%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-ax1-float32] PASSED [ 4%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-ax1-float64] PASSED [ 4%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-ax1-int32] PASSED [ 4%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-ax1-bool] PASSED [ 4%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-ax1-float32] PASSED [ 4%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-ax1-float64] PASSED [ 4%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-ax1-int32] PASSED [ 4%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-ax1-bool] PASSED [ 4%] -tests/test_stats.py::test_sum[cupy.ndarray-None-2d-ax1-float32] SKIPPED [ 5%] -tests/test_stats.py::test_sum[cupy.ndarray-None-2d-ax1-float64] SKIPPED [ 5%] -tests/test_stats.py::test_sum[cupy.ndarray-None-2d-ax1-int32] SKIPPED [ 5%] -tests/test_stats.py::test_sum[cupy.ndarray-None-2d-ax1-bool] SKIPPED [ 5%] -tests/test_stats.py::test_sum[numpy.ndarray-None-2d-ax1-float32] PASSED [ 5%] -tests/test_stats.py::test_sum[numpy.ndarray-None-2d-ax1-float64] PASSED [ 5%] -tests/test_stats.py::test_sum[numpy.ndarray-None-2d-ax1-int32] PASSED [ 5%] -tests/test_stats.py::test_sum[numpy.ndarray-None-2d-ax1-bool] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-ax1-float32] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-ax1-float64] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-ax1-int32] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-ax1-bool] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-ax0-float32] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-ax0-float64] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-ax0-int32] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-ax0-bool] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-all-float32] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-all-float64] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-all-int32] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-2d-all-bool] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-1d-all-float32] SKIPPED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-1d-all-float64] SKIPPED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-1d-all-int32] SKIPPED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-None-1d-all-bool] SKIPPED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-ax1-float32] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-ax1-float64] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-ax1-int32] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-ax1-bool] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-ax1-float32] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-ax1-float64] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-ax1-int32] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-ax1-bool] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-ax1-float32] PASSED [ 5%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-ax1-float64] PASSED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-ax1-int32] PASSED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-ax1-bool] PASSED [ 6%] -tests/test_stats.py::test_sum_to_int[scipy.sparse.csc_matrix-2d-ax1] PASSED [ 6%] -tests/test_stats.py::test_min_max[scipy.sparse.csc_matrix-2d-ax1-min] PASSED [ 6%] -tests/test_stats.py::test_min_max[scipy.sparse.csc_matrix-2d-ax1-max] PASSED [ 6%] -tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-ax1-float32] PASSED [ 6%] -tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-ax1-float64] PASSED [ 6%] -tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-ax1-int32] PASSED [ 6%] -tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-ax1-bool] PASSED [ 6%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-ax1-float32] PASSED [ 6%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-ax1-float64] PASSED [ 6%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-ax1-int32] PASSED [ 6%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-ax1-bool] PASSED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-ax0-float32] PASSED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-ax0-float64] PASSED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-ax0-int32] PASSED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-ax0-bool] PASSED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-all-float32] PASSED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-all-float64] PASSED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-all-int32] PASSED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-2d-all-bool] PASSED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-1d-all-float32] SKIPPED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-1d-all-float64] SKIPPED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-1d-all-int32] SKIPPED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-int64-1d-all-bool] SKIPPED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-ax0-float32] PASSED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-ax0-float64] PASSED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-ax0-int32] PASSED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-ax0-bool] PASSED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-ax0-float32] PASSED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-ax0-float64] PASSED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-ax0-int32] PASSED [ 6%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-ax0-bool] PASSED [ 7%] -tests/test_stats.py::test_sum_to_int[scipy.sparse.csc_matrix-2d-ax0] PASSED [ 7%] -tests/test_stats.py::test_min_max[scipy.sparse.csc_matrix-2d-ax0-min] PASSED [ 7%] -tests/test_stats.py::test_min_max[scipy.sparse.csc_matrix-2d-ax0-max] PASSED [ 7%] -tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-ax0-float32] PASSED [ 7%] -tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-ax0-float64] PASSED [ 7%] -tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-ax0-int32] PASSED [ 7%] -tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-ax0-bool] PASSED [ 7%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-ax0-float32] PASSED [ 7%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-ax0-float64] PASSED [ 7%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-ax0-int32] PASSED [ 7%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-ax0-bool] PASSED [ 7%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-all-float32] PASSED [ 7%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-all-float64] PASSED [ 7%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-all-int32] PASSED [ 7%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-2d-all-bool] PASSED [ 7%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-1d-all-float32] SKIPPED [ 7%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-1d-all-float64] SKIPPED [ 7%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-1d-all-int32] SKIPPED [ 7%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float64-1d-all-bool] SKIPPED [ 7%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-all-float32] PASSED [ 7%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-all-float64] PASSED [ 7%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-all-int32] PASSED [ 7%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-2d-all-bool] PASSED [ 7%] -tests/test_stats.py::test_sum_to_int[scipy.sparse.csc_matrix-2d-all] PASSED [ 7%] -tests/test_stats.py::test_min_max[scipy.sparse.csc_matrix-2d-all-min] PASSED [ 7%] -tests/test_stats.py::test_min_max[scipy.sparse.csc_matrix-2d-all-max] PASSED [ 7%] -tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-all-float32] PASSED [ 7%] -tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-all-float64] PASSED [ 7%] -tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-all-int32] PASSED [ 7%] -tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-2d-all-bool] PASSED [ 7%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-all-float32] PASSED [ 7%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-all-float64] PASSED [ 7%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-all-int32] PASSED [ 8%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-2d-all-bool] PASSED [ 8%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-1d-all-float32] SKIPPED [ 8%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-1d-all-float64] SKIPPED [ 8%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-1d-all-int32] SKIPPED [ 8%] -tests/test_stats.py::test_sum[scipy.sparse.csc_matrix-float32-1d-all-bool] SKIPPED [ 8%] -tests/test_stats.py::test_sum_to_int[scipy.sparse.csc_matrix-1d-all] PASSED [ 8%] -tests/test_stats.py::test_min_max[scipy.sparse.csc_matrix-1d-all-min] PASSED [ 8%] -tests/test_stats.py::test_min_max[scipy.sparse.csc_matrix-1d-all-max] PASSED [ 8%] -tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-1d-all-float32] SKIPPED [ 8%] -tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-1d-all-float64] SKIPPED [ 8%] -tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-1d-all-int32] SKIPPED [ 8%] -tests/test_stats.py::test_mean[scipy.sparse.csc_matrix-1d-all-bool] SKIPPED [ 8%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-1d-all-float32] SKIPPED [ 8%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-1d-all-float64] SKIPPED [ 8%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-1d-all-int32] SKIPPED [ 8%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_matrix-1d-all-bool] SKIPPED [ 8%] -tests/test_sparse.py::test_to_dense[scipy.sparse.csc_matrix-float64-C] PASSED [ 8%] -tests/test_sparse.py::test_to_dense[scipy.sparse.csc_matrix-float64-F] PASSED [ 8%] -tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csc_matrix-float64-C] PASSED [ 8%] -tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csc_matrix-float64-F] PASSED [ 8%] -tests/test_sparse.py::test_to_dense[scipy.sparse.csc_matrix-float32-C] PASSED [ 8%] -tests/test_sparse.py::test_to_dense[scipy.sparse.csc_matrix-float32-F] PASSED [ 8%] -tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csc_matrix-float32-C] PASSED [ 8%] -tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csc_matrix-float32-F] PASSED [ 8%] -tests/test_numpy_scipy_sparse.py::test_ndim[scipy.sparse.csc_matrix] PASSED [ 8%] -tests/test_numpy_scipy_sparse.py::test_shape[scipy.sparse.csc_matrix] PASSED [ 8%] -tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csc_matrix-d=i64-i=32] PASSED [ 8%] -tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csc_matrix-d=i64-i=64] PASSED [ 8%] -tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csc_matrix-d=f64-i=32] PASSED [ 8%] -tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csc_matrix-d=f64-i=64] PASSED [ 8%] -tests/test_stats.py::test_is_constant[scipy.sparse.csc_matrix-None] PASSED [ 8%] -tests/test_stats.py::test_is_constant[scipy.sparse.csc_matrix-0] PASSED [ 8%] -tests/test_stats.py::test_is_constant[scipy.sparse.csc_matrix-1] PASSED [ 9%] -tests/test_test_utils.py::test_conv[scipy.sparse.csc_matrix-float32] PASSED [ 9%] -tests/test_test_utils.py::test_conv[scipy.sparse.csc_matrix-float64] PASSED [ 9%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-numpy.ndarray] PASSED [ 9%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-numpy.ndarray] SKIPPED [ 9%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-numpy.ndarray] PASSED [ 9%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-numpy.ndarray] PASSED [ 9%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-numpy.ndarray] PASSED [ 9%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-numpy.ndarray] SKIPPED [ 9%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-numpy.ndarray] PASSED [ 9%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-numpy.ndarray] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-ax1-float32] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-ax1-float64] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-ax1-int32] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-ax1-bool] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-ax0-float32] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-ax0-float64] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-ax0-int32] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-ax0-bool] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-all-float32] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-all-float64] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-all-int32] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-2d-all-bool] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-1d-all-float32] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-1d-all-float64] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-1d-all-int32] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-None-1d-all-bool] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-ax1-float32] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-ax1-float64] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-ax1-int32] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-ax1-bool] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-ax1-float32] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-ax1-float64] SKIPPED [ 9%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-ax1-int32] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-ax1-bool] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-ax1-float32] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-ax1-float64] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-ax1-int32] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-ax1-bool] SKIPPED [ 10%] -tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csc_matrix-2d-ax1-min] SKIPPED [ 10%] -tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csc_matrix-2d-ax1-max] SKIPPED [ 10%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-ax1-float32] SKIPPED [ 10%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-ax1-float64] SKIPPED [ 10%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-ax1-int32] SKIPPED [ 10%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-ax1-bool] SKIPPED [ 10%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-ax1-float32] SKIPPED [ 10%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-ax1-float64] SKIPPED [ 10%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-ax1-int32] SKIPPED [ 10%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-ax1-bool] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-ax0-float32] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-ax0-float64] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-ax0-int32] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-ax0-bool] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-all-float32] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-all-float64] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-all-int32] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-2d-all-bool] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-1d-all-float32] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-1d-all-float64] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-1d-all-int32] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-int64-1d-all-bool] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-ax0-float32] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-ax0-float64] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-ax0-int32] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-ax0-bool] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-ax0-float32] SKIPPED [ 10%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-ax0-float64] SKIPPED [ 11%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-ax0-int32] SKIPPED [ 11%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-ax0-bool] SKIPPED [ 11%] -tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csc_matrix-2d-ax0-min] SKIPPED [ 11%] -tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csc_matrix-2d-ax0-max] SKIPPED [ 11%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-ax0-float32] SKIPPED [ 11%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-ax0-float64] SKIPPED [ 11%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-ax0-int32] SKIPPED [ 11%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-ax0-bool] SKIPPED [ 11%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-ax0-float32] SKIPPED [ 11%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-ax0-float64] SKIPPED [ 11%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-ax0-int32] SKIPPED [ 11%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-ax0-bool] SKIPPED [ 11%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-all-float32] SKIPPED [ 11%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-all-float64] SKIPPED [ 11%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-all-int32] SKIPPED [ 11%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-2d-all-bool] SKIPPED [ 11%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-1d-all-float32] SKIPPED [ 11%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-1d-all-float64] SKIPPED [ 11%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-1d-all-int32] SKIPPED [ 11%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float64-1d-all-bool] SKIPPED [ 11%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-all-float32] SKIPPED [ 11%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-all-float64] SKIPPED [ 11%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-all-int32] SKIPPED [ 11%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-2d-all-bool] SKIPPED [ 11%] -tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csc_matrix-2d-all-min] SKIPPED [ 11%] -tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csc_matrix-2d-all-max] SKIPPED [ 11%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-all-float32] SKIPPED [ 11%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-all-float64] SKIPPED [ 11%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-all-int32] SKIPPED [ 11%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-2d-all-bool] SKIPPED [ 11%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-all-float32] SKIPPED [ 11%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-all-float64] SKIPPED [ 11%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-all-int32] SKIPPED [ 12%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-2d-all-bool] SKIPPED [ 12%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-1d-all-float32] SKIPPED [ 12%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-1d-all-float64] SKIPPED [ 12%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-1d-all-int32] SKIPPED [ 12%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csc_matrix-float32-1d-all-bool] SKIPPED [ 12%] -tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csc_matrix-1d-all-min] SKIPPED [ 12%] -tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csc_matrix-1d-all-max] SKIPPED [ 12%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-1d-all-float32] SKIPPED [ 12%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-1d-all-float64] SKIPPED [ 12%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-1d-all-int32] SKIPPED [ 12%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csc_matrix-1d-all-bool] SKIPPED [ 12%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-1d-all-float32] SKIPPED [ 12%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-1d-all-float64] SKIPPED [ 12%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-1d-all-int32] SKIPPED [ 12%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csc_matrix-1d-all-bool] SKIPPED [ 12%] -tests/test_test_utils.py::test_conv[cupyx.scipy.sparse.csc_matrix-float32] SKIPPED [ 12%] -tests/test_test_utils.py::test_conv[cupyx.scipy.sparse.csc_matrix-float64] SKIPPED [ 12%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-cupy.ndarray] SKIPPED [ 12%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-cupy.ndarray] SKIPPED [ 12%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-cupy.ndarray] SKIPPED [ 12%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-cupy.ndarray] SKIPPED [ 12%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-cupy.ndarray] SKIPPED [ 12%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-cupy.ndarray] SKIPPED [ 12%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-cupy.ndarray] SKIPPED [ 12%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-cupy.ndarray] SKIPPED [ 12%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-cupy.ndarray] SKIPPED [ 12%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-numpy.ndarray] PASSED [ 12%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-ax1-float32] PASSED [ 12%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-ax1-float64] PASSED [ 12%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-ax1-int32] PASSED [ 12%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-ax1-bool] PASSED [ 12%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-ax0-float32] PASSED [ 12%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-ax0-float64] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-ax0-int32] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-ax0-bool] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-all-float32] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-all-float64] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-all-int32] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-2d-all-bool] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-1d-all-float32] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-1d-all-float64] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-1d-all-int32] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-None-1d-all-bool] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-ax1-float32] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-ax1-float64] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-ax1-int32] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-ax1-bool] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-ax1-float32] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-ax1-float64] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-ax1-int32] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-ax1-bool] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-ax1-float32] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-ax1-float64] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-ax1-int32] PASSED [ 13%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-ax1-bool] PASSED [ 13%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[numpy.ndarray]-2d-ax1] PASSED [ 13%] -tests/test_stats.py::test_min_max[dask.array.Array[numpy.ndarray]-2d-ax1-min] PASSED [ 13%] -tests/test_stats.py::test_min_max[dask.array.Array[numpy.ndarray]-2d-ax1-max] PASSED [ 13%] -tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-ax1-float32] PASSED [ 13%] -tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-ax1-float64] PASSED [ 13%] -tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-ax1-int32] PASSED [ 13%] -tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-ax1-bool] PASSED [ 13%] -tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-ax1-float32] PASSED [ 13%] -tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-ax1-float64] PASSED [ 13%] -tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-ax1-int32] PASSED [ 13%] -tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-ax1-bool] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-ax0-float32] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-ax0-float64] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-ax0-int32] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-ax0-bool] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-all-float32] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-all-float64] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-all-int32] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-2d-all-bool] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-1d-all-float32] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-1d-all-float64] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-1d-all-int32] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-int64-1d-all-bool] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-ax0-float32] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-ax0-float64] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-ax0-int32] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-ax0-bool] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-ax0-float32] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-ax0-float64] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-ax0-int32] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-ax0-bool] PASSED [ 14%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[numpy.ndarray]-2d-ax0] PASSED [ 14%] -tests/test_stats.py::test_min_max[dask.array.Array[numpy.ndarray]-2d-ax0-min] PASSED [ 14%] -tests/test_stats.py::test_min_max[dask.array.Array[numpy.ndarray]-2d-ax0-max] PASSED [ 14%] -tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-ax0-float32] PASSED [ 14%] -tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-ax0-float64] PASSED [ 14%] -tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-ax0-int32] PASSED [ 14%] -tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-ax0-bool] PASSED [ 14%] -tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-ax0-float32] PASSED [ 14%] -tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-ax0-float64] PASSED [ 14%] -tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-ax0-int32] PASSED [ 14%] -tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-ax0-bool] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-all-float32] PASSED [ 14%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-all-float64] PASSED [ 15%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-all-int32] PASSED [ 15%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-2d-all-bool] PASSED [ 15%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-1d-all-float32] PASSED [ 15%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-1d-all-float64] PASSED [ 15%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-1d-all-int32] PASSED [ 15%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float64-1d-all-bool] PASSED [ 15%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-all-float32] PASSED [ 15%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-all-float64] PASSED [ 15%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-all-int32] PASSED [ 15%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-2d-all-bool] PASSED [ 15%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[numpy.ndarray]-2d-all] PASSED [ 15%] -tests/test_stats.py::test_min_max[dask.array.Array[numpy.ndarray]-2d-all-min] PASSED [ 15%] -tests/test_stats.py::test_min_max[dask.array.Array[numpy.ndarray]-2d-all-max] PASSED [ 15%] -tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-all-float32] PASSED [ 15%] -tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-all-float64] PASSED [ 15%] -tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-all-int32] PASSED [ 15%] -tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-2d-all-bool] PASSED [ 15%] -tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-all-float32] PASSED [ 15%] -tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-all-float64] PASSED [ 15%] -tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-all-int32] PASSED [ 15%] -tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-2d-all-bool] PASSED [ 15%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-1d-all-float32] PASSED [ 15%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-1d-all-float64] PASSED [ 15%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-1d-all-int32] PASSED [ 15%] -tests/test_stats.py::test_sum[dask.array.Array[numpy.ndarray]-float32-1d-all-bool] PASSED [ 15%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[numpy.ndarray]-1d-all] PASSED [ 15%] -tests/test_stats.py::test_min_max[dask.array.Array[numpy.ndarray]-1d-all-min] PASSED [ 15%] -tests/test_stats.py::test_min_max[dask.array.Array[numpy.ndarray]-1d-all-max] PASSED [ 15%] -tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-1d-all-float32] PASSED [ 15%] -tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-1d-all-float64] PASSED [ 15%] -tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-1d-all-int32] PASSED [ 15%] -tests/test_stats.py::test_mean[dask.array.Array[numpy.ndarray]-1d-all-bool] PASSED [ 15%] -tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-1d-all-float32] PASSED [ 16%] -tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-1d-all-float64] PASSED [ 16%] -tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-1d-all-int32] PASSED [ 16%] -tests/test_stats.py::test_mean_var[dask.array.Array[numpy.ndarray]-1d-all-bool] PASSED [ 16%] -tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-1d-ax0-sum] PASSED [ 16%] -tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-1d-ax0-min] PASSED [ 16%] -tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-1d-ax0-max] PASSED [ 16%] -tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-1d-ax0-mean] PASSED [ 16%] -tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-1d-ax0-mean_var] PASSED [ 16%] -tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-1d-ax0-is_constant] PASSED [ 16%] -tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-ax3-sum] PASSED [ 16%] -tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-ax3-min] PASSED [ 16%] -tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-ax3-max] PASSED [ 16%] -tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-ax3-mean] PASSED [ 16%] -tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-ax3-mean_var] PASSED [ 16%] -tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-ax3-is_constant] PASSED [ 16%] -tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-axneg-sum] PASSED [ 16%] -tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-axneg-min] PASSED [ 16%] -tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-axneg-max] PASSED [ 16%] -tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-axneg-mean] PASSED [ 16%] -tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-axneg-mean_var] PASSED [ 16%] -tests/test_stats.py::test_ndim_error[dask.array.Array[numpy.ndarray]-2d-axneg-is_constant] PASSED [ 16%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-0-3x2-sum] PASSED [ 16%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-0-3x2-min] PASSED [ 16%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-0-3x2-max] PASSED [ 16%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-0-2x3-sum] PASSED [ 16%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-0-2x3-min] PASSED [ 16%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-0-2x3-max] PASSED [ 16%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-0-2x2-sum] PASSED [ 16%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-0-2x2-min] PASSED [ 16%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-0-2x2-max] PASSED [ 16%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-1-3x2-sum] PASSED [ 16%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-1-3x2-min] PASSED [ 16%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-1-3x2-max] PASSED [ 17%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-1-2x3-sum] PASSED [ 17%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-1-2x3-min] PASSED [ 17%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-1-2x3-max] PASSED [ 17%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-1-2x2-sum] PASSED [ 17%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-1-2x2-min] PASSED [ 17%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[numpy.ndarray]-1-2x2-max] PASSED [ 17%] -tests/test_stats.py::test_is_constant[dask.array.Array[numpy.ndarray]-None] PASSED [ 17%] -tests/test_stats.py::test_is_constant[dask.array.Array[numpy.ndarray]-0] PASSED [ 17%] -tests/test_stats.py::test_is_constant[dask.array.Array[numpy.ndarray]-1] PASSED [ 17%] -tests/test_stats.py::test_dask_constant_blocks[dask.array.Array[numpy.ndarray]] PASSED [ 17%] -tests/test_test_utils.py::test_conv[dask.array.Array[numpy.ndarray]-float32] PASSED [ 17%] -tests/test_test_utils.py::test_conv[dask.array.Array[numpy.ndarray]-float64] PASSED [ 17%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-scipy.sparse.csr_array] PASSED [ 17%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-scipy.sparse.csr_array] SKIPPED [ 17%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-scipy.sparse.csr_array] PASSED [ 17%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-scipy.sparse.csr_array] SKIPPED [ 17%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-scipy.sparse.csr_array] PASSED [ 17%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-scipy.sparse.csr_array] PASSED [ 17%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-scipy.sparse.csr_array] PASSED [ 17%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-scipy.sparse.csr_array] SKIPPED [ 17%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-scipy.sparse.csr_array] PASSED [ 17%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-scipy.sparse.csr_array] SKIPPED [ 17%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-cupy.ndarray] SKIPPED [ 17%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-numpy.ndarray] SKIPPED [ 17%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-ax1-float32] SKIPPED [ 17%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-ax1-float64] SKIPPED [ 17%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-ax1-int32] SKIPPED [ 17%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-ax1-bool] SKIPPED [ 17%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-ax0-float32] SKIPPED [ 17%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-ax0-float64] SKIPPED [ 17%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-ax0-int32] SKIPPED [ 17%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-ax0-bool] SKIPPED [ 17%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-all-float32] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-all-float64] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-all-int32] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-2d-all-bool] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-1d-all-float32] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-1d-all-float64] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-1d-all-int32] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-None-1d-all-bool] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-ax1-float32] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-ax1-float64] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-ax1-int32] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-ax1-bool] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-ax1-float32] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-ax1-float64] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-ax1-int32] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-ax1-bool] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-ax1-float32] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-ax1-float64] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-ax1-int32] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-ax1-bool] SKIPPED [ 18%] -tests/test_stats.py::test_min_max[dask.array.Array[cupy.ndarray]-2d-ax1-min] SKIPPED [ 18%] -tests/test_stats.py::test_min_max[dask.array.Array[cupy.ndarray]-2d-ax1-max] SKIPPED [ 18%] -tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-ax1-float32] SKIPPED [ 18%] -tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-ax1-float64] SKIPPED [ 18%] -tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-ax1-int32] SKIPPED [ 18%] -tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-ax1-bool] SKIPPED [ 18%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-ax1-float32] SKIPPED [ 18%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-ax1-float64] SKIPPED [ 18%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-ax1-int32] SKIPPED [ 18%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-ax1-bool] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-ax0-float32] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-ax0-float64] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-ax0-int32] SKIPPED [ 18%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-ax0-bool] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-all-float32] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-all-float64] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-all-int32] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-2d-all-bool] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-1d-all-float32] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-1d-all-float64] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-1d-all-int32] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-int64-1d-all-bool] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-ax0-float32] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-ax0-float64] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-ax0-int32] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-ax0-bool] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-ax0-float32] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-ax0-float64] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-ax0-int32] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-ax0-bool] SKIPPED [ 19%] -tests/test_stats.py::test_min_max[dask.array.Array[cupy.ndarray]-2d-ax0-min] SKIPPED [ 19%] -tests/test_stats.py::test_min_max[dask.array.Array[cupy.ndarray]-2d-ax0-max] SKIPPED [ 19%] -tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-ax0-float32] SKIPPED [ 19%] -tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-ax0-float64] SKIPPED [ 19%] -tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-ax0-int32] SKIPPED [ 19%] -tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-ax0-bool] SKIPPED [ 19%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-ax0-float32] SKIPPED [ 19%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-ax0-float64] SKIPPED [ 19%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-ax0-int32] SKIPPED [ 19%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-ax0-bool] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-all-float32] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-all-float64] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-all-int32] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-2d-all-bool] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-1d-all-float32] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-1d-all-float64] SKIPPED [ 19%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-1d-all-int32] SKIPPED [ 20%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float64-1d-all-bool] SKIPPED [ 20%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-all-float32] SKIPPED [ 20%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-all-float64] SKIPPED [ 20%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-all-int32] SKIPPED [ 20%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-2d-all-bool] SKIPPED [ 20%] -tests/test_stats.py::test_min_max[dask.array.Array[cupy.ndarray]-2d-all-min] SKIPPED [ 20%] -tests/test_stats.py::test_min_max[dask.array.Array[cupy.ndarray]-2d-all-max] SKIPPED [ 20%] -tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-all-float32] SKIPPED [ 20%] -tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-all-float64] SKIPPED [ 20%] -tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-all-int32] SKIPPED [ 20%] -tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-2d-all-bool] SKIPPED [ 20%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-all-float32] SKIPPED [ 20%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-all-float64] SKIPPED [ 20%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-all-int32] SKIPPED [ 20%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-2d-all-bool] SKIPPED [ 20%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-1d-all-float32] SKIPPED [ 20%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-1d-all-float64] SKIPPED [ 20%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-1d-all-int32] SKIPPED [ 20%] -tests/test_stats.py::test_sum[dask.array.Array[cupy.ndarray]-float32-1d-all-bool] SKIPPED [ 20%] -tests/test_stats.py::test_min_max[dask.array.Array[cupy.ndarray]-1d-all-min] SKIPPED [ 20%] -tests/test_stats.py::test_min_max[dask.array.Array[cupy.ndarray]-1d-all-max] SKIPPED [ 20%] -tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-1d-all-float32] SKIPPED [ 20%] -tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-1d-all-float64] SKIPPED [ 20%] -tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-1d-all-int32] SKIPPED [ 20%] -tests/test_stats.py::test_mean[dask.array.Array[cupy.ndarray]-1d-all-bool] SKIPPED [ 20%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-1d-all-float32] SKIPPED [ 20%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-1d-all-float64] SKIPPED [ 20%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-1d-all-int32] SKIPPED [ 20%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupy.ndarray]-1d-all-bool] SKIPPED [ 20%] -tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-1d-ax0-sum] SKIPPED [ 20%] -tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-1d-ax0-min] SKIPPED [ 20%] -tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-1d-ax0-max] SKIPPED [ 20%] -tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-1d-ax0-mean] SKIPPED [ 21%] -tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-1d-ax0-mean_var] SKIPPED [ 21%] -tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-1d-ax0-is_constant] SKIPPED [ 21%] -tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-ax3-sum] SKIPPED [ 21%] -tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-ax3-min] SKIPPED [ 21%] -tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-ax3-max] SKIPPED [ 21%] -tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-ax3-mean] SKIPPED [ 21%] -tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-ax3-mean_var] SKIPPED [ 21%] -tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-ax3-is_constant] SKIPPED [ 21%] -tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-axneg-sum] SKIPPED [ 21%] -tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-axneg-min] SKIPPED [ 21%] -tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-axneg-max] SKIPPED [ 21%] -tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-axneg-mean] SKIPPED [ 21%] -tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-axneg-mean_var] SKIPPED [ 21%] -tests/test_stats.py::test_ndim_error[dask.array.Array[cupy.ndarray]-2d-axneg-is_constant] SKIPPED [ 21%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-0-3x2-sum] SKIPPED [ 21%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-0-3x2-min] SKIPPED [ 21%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-0-3x2-max] SKIPPED [ 21%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-0-2x3-sum] SKIPPED [ 21%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-0-2x3-min] SKIPPED [ 21%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-0-2x3-max] SKIPPED [ 21%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-0-2x2-sum] SKIPPED [ 21%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-0-2x2-min] SKIPPED [ 21%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-0-2x2-max] SKIPPED [ 21%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-1-3x2-sum] SKIPPED [ 21%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-1-3x2-min] SKIPPED [ 21%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-1-3x2-max] SKIPPED [ 21%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-1-2x3-sum] SKIPPED [ 21%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-1-2x3-min] SKIPPED [ 21%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-1-2x3-max] SKIPPED [ 21%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-1-2x2-sum] SKIPPED [ 21%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-1-2x2-min] SKIPPED [ 21%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupy.ndarray]-1-2x2-max] SKIPPED [ 21%] -tests/test_stats.py::test_is_constant[dask.array.Array[cupy.ndarray]-None] SKIPPED [ 22%] -tests/test_stats.py::test_is_constant[dask.array.Array[cupy.ndarray]-0] SKIPPED [ 22%] -tests/test_stats.py::test_is_constant[dask.array.Array[cupy.ndarray]-1] SKIPPED [ 22%] -tests/test_stats.py::test_dask_constant_blocks[dask.array.Array[cupy.ndarray]] SKIPPED [ 22%] -tests/test_test_utils.py::test_conv[dask.array.Array[cupy.ndarray]-float32] SKIPPED [ 22%] -tests/test_test_utils.py::test_conv[dask.array.Array[cupy.ndarray]-float64] SKIPPED [ 22%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-scipy.sparse.csc_array] SKIPPED [ 22%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-scipy.sparse.csc_array] PASSED [ 22%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-scipy.sparse.csc_array] SKIPPED [ 22%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-scipy.sparse.csc_array] PASSED [ 22%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-scipy.sparse.csc_array] SKIPPED [ 22%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-scipy.sparse.csc_array] PASSED [ 22%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-scipy.sparse.csc_array] PASSED [ 22%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-scipy.sparse.csc_array] PASSED [ 22%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-scipy.sparse.csc_array] SKIPPED [ 22%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-scipy.sparse.csc_array] PASSED [ 22%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-scipy.sparse.csc_array] PASSED [ 22%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-scipy.sparse.csr_array] PASSED [ 22%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-cupy.ndarray] SKIPPED [ 22%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-numpy.ndarray] PASSED [ 22%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-ax1-float32] PASSED [ 22%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-ax1-float64] PASSED [ 22%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-ax1-int32] PASSED [ 22%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-ax1-bool] PASSED [ 22%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-ax0-float32] PASSED [ 22%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-ax0-float64] PASSED [ 22%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-ax0-int32] PASSED [ 22%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-ax0-bool] PASSED [ 22%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-all-float32] PASSED [ 22%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-all-float64] PASSED [ 22%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-all-int32] PASSED [ 22%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-2d-all-bool] PASSED [ 22%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-1d-all-float32] PASSED [ 22%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-1d-all-float64] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-1d-all-int32] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-None-1d-all-bool] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-ax1-float32] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-ax1-float64] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-ax1-int32] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-ax1-bool] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-ax1-float32] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-ax1-float64] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-ax1-int32] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-ax1-bool] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-ax1-float32] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-ax1-float64] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-ax1-int32] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-ax1-bool] PASSED [ 23%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csr_array]-2d-ax1] PASSED [ 23%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-min] PASSED [ 23%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-max] PASSED [ 23%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-float32] PASSED [ 23%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-float64] PASSED [ 23%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-int32] PASSED [ 23%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-bool] PASSED [ 23%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-float32] PASSED [ 23%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-float64] PASSED [ 23%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-int32] PASSED [ 23%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-ax1-bool] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-ax0-float32] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-ax0-float64] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-ax0-int32] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-ax0-bool] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-all-float32] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-all-float64] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-all-int32] PASSED [ 23%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-2d-all-bool] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-1d-all-float32] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-1d-all-float64] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-1d-all-int32] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-int64-1d-all-bool] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-ax0-float32] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-ax0-float64] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-ax0-int32] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-ax0-bool] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-ax0-float32] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-ax0-float64] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-ax0-int32] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-ax0-bool] PASSED [ 24%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csr_array]-2d-ax0] PASSED [ 24%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-min] PASSED [ 24%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-max] PASSED [ 24%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-float32] PASSED [ 24%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-float64] PASSED [ 24%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-int32] PASSED [ 24%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-bool] PASSED [ 24%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-float32] PASSED [ 24%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-float64] PASSED [ 24%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-int32] PASSED [ 24%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-ax0-bool] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-all-float32] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-all-float64] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-all-int32] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-2d-all-bool] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-1d-all-float32] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-1d-all-float64] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-1d-all-int32] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float64-1d-all-bool] PASSED [ 24%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-all-float32] PASSED [ 25%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-all-float64] PASSED [ 25%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-all-int32] PASSED [ 25%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-2d-all-bool] PASSED [ 25%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csr_array]-2d-all] PASSED [ 25%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_array]-2d-all-min] PASSED [ 25%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_array]-2d-all-max] PASSED [ 25%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-all-float32] PASSED [ 25%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-all-float64] PASSED [ 25%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-all-int32] PASSED [ 25%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-2d-all-bool] PASSED [ 25%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-all-float32] PASSED [ 25%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-all-float64] PASSED [ 25%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-all-int32] PASSED [ 25%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-2d-all-bool] PASSED [ 25%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-1d-all-float32] PASSED [ 25%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-1d-all-float64] PASSED [ 25%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-1d-all-int32] PASSED [ 25%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_array]-float32-1d-all-bool] PASSED [ 25%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csr_array]-1d-all] PASSED [ 25%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_array]-1d-all-min] PASSED [ 25%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_array]-1d-all-max] PASSED [ 25%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-1d-all-float32] PASSED [ 25%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-1d-all-float64] PASSED [ 25%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-1d-all-int32] PASSED [ 25%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_array]-1d-all-bool] PASSED [ 25%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-1d-all-float32] PASSED [ 25%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-1d-all-float64] PASSED [ 25%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-1d-all-int32] PASSED [ 25%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_array]-1d-all-bool] PASSED [ 25%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-1d-ax0-sum] PASSED [ 25%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-1d-ax0-min] PASSED [ 25%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-1d-ax0-max] PASSED [ 25%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-1d-ax0-mean] PASSED [ 26%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-1d-ax0-mean_var] PASSED [ 26%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-1d-ax0-is_constant] PASSED [ 26%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-ax3-sum] PASSED [ 26%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-ax3-min] PASSED [ 26%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-ax3-max] PASSED [ 26%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-ax3-mean] PASSED [ 26%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-ax3-mean_var] PASSED [ 26%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-ax3-is_constant] PASSED [ 26%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-axneg-sum] PASSED [ 26%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-axneg-min] PASSED [ 26%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-axneg-max] PASSED [ 26%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-axneg-mean] PASSED [ 26%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-axneg-mean_var] PASSED [ 26%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csr_array]-2d-axneg-is_constant] PASSED [ 26%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-0-3x2-sum] PASSED [ 26%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-0-3x2-min] PASSED [ 26%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-0-3x2-max] PASSED [ 26%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-0-2x3-sum] PASSED [ 26%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-0-2x3-min] PASSED [ 26%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-0-2x3-max] PASSED [ 26%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-0-2x2-sum] PASSED [ 26%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-0-2x2-min] PASSED [ 26%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-0-2x2-max] PASSED [ 26%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-1-3x2-sum] PASSED [ 26%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-1-3x2-min] PASSED [ 26%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-1-3x2-max] PASSED [ 26%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-1-2x3-sum] PASSED [ 26%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-1-2x3-min] PASSED [ 26%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-1-2x3-max] PASSED [ 26%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-1-2x2-sum] PASSED [ 26%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-1-2x2-min] PASSED [ 26%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_array]-1-2x2-max] PASSED [ 26%] -tests/test_stats.py::test_mean_var_pbmc_dask[dask.array.Array[scipy.sparse.csr_array]] PASSED [ 27%] -tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csr_array]-None] PASSED [ 27%] -tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csr_array]-0] PASSED [ 27%] -tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csr_array]-1] PASSED [ 27%] -tests/test_stats.py::test_dask_constant_blocks[dask.array.Array[scipy.sparse.csr_array]] PASSED [ 27%] -tests/test_test_utils.py::test_conv[dask.array.Array[scipy.sparse.csr_array]-float32] PASSED [ 27%] -tests/test_test_utils.py::test_conv[dask.array.Array[scipy.sparse.csr_array]-float64] PASSED [ 27%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-scipy.sparse.csr_matrix] PASSED [ 27%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-scipy.sparse.csr_matrix] SKIPPED [ 27%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-scipy.sparse.csr_matrix] PASSED [ 27%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-scipy.sparse.csr_matrix] SKIPPED [ 27%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-scipy.sparse.csr_matrix] PASSED [ 27%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-scipy.sparse.csr_matrix] SKIPPED [ 27%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-scipy.sparse.csr_matrix] PASSED [ 27%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-scipy.sparse.csr_matrix] PASSED [ 27%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-scipy.sparse.csr_matrix] PASSED [ 27%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-scipy.sparse.csr_matrix] SKIPPED [ 27%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-scipy.sparse.csr_matrix] PASSED [ 27%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-scipy.sparse.csr_matrix] PASSED [ 27%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-scipy.sparse.csc_array] PASSED [ 27%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-scipy.sparse.csr_array] PASSED [ 27%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-cupy.ndarray] SKIPPED [ 27%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-numpy.ndarray] PASSED [ 27%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-ax1-float32] PASSED [ 27%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-ax1-float64] PASSED [ 27%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-ax1-int32] PASSED [ 27%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-ax1-bool] PASSED [ 27%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-ax0-float32] PASSED [ 27%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-ax0-float64] PASSED [ 27%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-ax0-int32] PASSED [ 27%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-ax0-bool] PASSED [ 27%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-all-float32] PASSED [ 27%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-all-float64] PASSED [ 27%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-all-int32] PASSED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-2d-all-bool] PASSED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-1d-all-float32] SKIPPED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-1d-all-float64] SKIPPED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-1d-all-int32] SKIPPED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-None-1d-all-bool] SKIPPED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-ax1-float32] PASSED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-ax1-float64] PASSED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-ax1-int32] PASSED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-ax1-bool] PASSED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-ax1-float32] PASSED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-ax1-float64] PASSED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-ax1-int32] PASSED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-ax1-bool] PASSED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-ax1-float32] PASSED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-ax1-float64] PASSED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-ax1-int32] PASSED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-ax1-bool] PASSED [ 28%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csc_array]-2d-ax1] PASSED [ 28%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-min] PASSED [ 28%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-max] PASSED [ 28%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-float32] PASSED [ 28%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-float64] PASSED [ 28%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-int32] PASSED [ 28%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-bool] PASSED [ 28%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-float32] PASSED [ 28%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-float64] PASSED [ 28%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-int32] PASSED [ 28%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-ax1-bool] PASSED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-ax0-float32] PASSED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-ax0-float64] PASSED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-ax0-int32] PASSED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-ax0-bool] PASSED [ 28%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-all-float32] PASSED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-all-float64] PASSED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-all-int32] PASSED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-2d-all-bool] PASSED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-1d-all-float32] SKIPPED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-1d-all-float64] SKIPPED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-1d-all-int32] SKIPPED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-int64-1d-all-bool] SKIPPED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-ax0-float32] PASSED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-ax0-float64] PASSED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-ax0-int32] PASSED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-ax0-bool] PASSED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-ax0-float32] PASSED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-ax0-float64] PASSED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-ax0-int32] PASSED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-ax0-bool] PASSED [ 29%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csc_array]-2d-ax0] PASSED [ 29%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-min] PASSED [ 29%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-max] PASSED [ 29%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-float32] PASSED [ 29%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-float64] PASSED [ 29%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-int32] PASSED [ 29%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-bool] PASSED [ 29%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-float32] PASSED [ 29%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-float64] PASSED [ 29%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-int32] PASSED [ 29%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-ax0-bool] PASSED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-all-float32] PASSED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-all-float64] PASSED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-all-int32] PASSED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-2d-all-bool] PASSED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-1d-all-float32] SKIPPED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-1d-all-float64] SKIPPED [ 29%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-1d-all-int32] SKIPPED [ 30%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float64-1d-all-bool] SKIPPED [ 30%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-all-float32] PASSED [ 30%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-all-float64] PASSED [ 30%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-all-int32] PASSED [ 30%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-2d-all-bool] PASSED [ 30%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csc_array]-2d-all] PASSED [ 30%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_array]-2d-all-min] PASSED [ 30%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_array]-2d-all-max] PASSED [ 30%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-all-float32] PASSED [ 30%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-all-float64] PASSED [ 30%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-all-int32] PASSED [ 30%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-2d-all-bool] PASSED [ 30%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-all-float32] PASSED [ 30%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-all-float64] PASSED [ 30%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-all-int32] PASSED [ 30%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-2d-all-bool] PASSED [ 30%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-1d-all-float32] SKIPPED [ 30%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-1d-all-float64] SKIPPED [ 30%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-1d-all-int32] SKIPPED [ 30%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_array]-float32-1d-all-bool] SKIPPED [ 30%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csc_array]-1d-all] PASSED [ 30%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_array]-1d-all-min] PASSED [ 30%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_array]-1d-all-max] PASSED [ 30%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-1d-all-float32] SKIPPED [ 30%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-1d-all-float64] SKIPPED [ 30%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-1d-all-int32] SKIPPED [ 30%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_array]-1d-all-bool] SKIPPED [ 30%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-1d-all-float32] SKIPPED [ 30%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-1d-all-float64] SKIPPED [ 30%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-1d-all-int32] SKIPPED [ 30%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_array]-1d-all-bool] SKIPPED [ 30%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-1d-ax0-sum] SKIPPED [ 30%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-1d-ax0-min] SKIPPED [ 31%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-1d-ax0-max] SKIPPED [ 31%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-1d-ax0-mean] SKIPPED [ 31%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-1d-ax0-mean_var] SKIPPED [ 31%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-1d-ax0-is_constant] SKIPPED [ 31%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-ax3-sum] PASSED [ 31%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-ax3-min] PASSED [ 31%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-ax3-max] PASSED [ 31%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-ax3-mean] PASSED [ 31%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-ax3-mean_var] PASSED [ 31%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-ax3-is_constant] PASSED [ 31%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-axneg-sum] PASSED [ 31%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-axneg-min] PASSED [ 31%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-axneg-max] PASSED [ 31%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-axneg-mean] PASSED [ 31%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-axneg-mean_var] PASSED [ 31%] -tests/test_stats.py::test_ndim_error[dask.array.Array[scipy.sparse.csc_array]-2d-axneg-is_constant] PASSED [ 31%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-0-3x2-sum] PASSED [ 31%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-0-3x2-min] PASSED [ 31%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-0-3x2-max] PASSED [ 31%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-0-2x3-sum] PASSED [ 31%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-0-2x3-min] PASSED [ 31%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-0-2x3-max] PASSED [ 31%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-0-2x2-sum] PASSED [ 31%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-0-2x2-min] PASSED [ 31%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-0-2x2-max] PASSED [ 31%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-1-3x2-sum] PASSED [ 31%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-1-3x2-min] PASSED [ 31%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-1-3x2-max] PASSED [ 31%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-1-2x3-sum] PASSED [ 31%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-1-2x3-min] PASSED [ 31%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-1-2x3-max] PASSED [ 31%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-1-2x2-sum] PASSED [ 31%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-1-2x2-min] PASSED [ 32%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_array]-1-2x2-max] PASSED [ 32%] -tests/test_stats.py::test_mean_var_pbmc_dask[dask.array.Array[scipy.sparse.csc_array]] PASSED [ 32%] -tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csc_array]-None] PASSED [ 32%] -tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csc_array]-0] PASSED [ 32%] -tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csc_array]-1] PASSED [ 32%] -tests/test_stats.py::test_dask_constant_blocks[dask.array.Array[scipy.sparse.csc_array]] PASSED [ 32%] -tests/test_test_utils.py::test_conv[dask.array.Array[scipy.sparse.csc_array]-float32] PASSED [ 32%] -tests/test_test_utils.py::test_conv[dask.array.Array[scipy.sparse.csc_array]-float64] PASSED [ 32%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 32%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-scipy.sparse.csr_matrix] PASSED [ 32%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-scipy.sparse.csc_array] PASSED [ 32%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-scipy.sparse.csr_array] PASSED [ 32%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-cupy.ndarray] SKIPPED [ 32%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-numpy.ndarray] PASSED [ 32%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-ax1-float32] PASSED [ 32%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-ax1-float64] PASSED [ 32%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-ax1-int32] PASSED [ 32%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-ax1-bool] PASSED [ 32%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-ax0-float32] PASSED [ 32%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-ax0-float64] PASSED [ 32%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-ax0-int32] PASSED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-ax0-bool] PASSED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-all-float32] PASSED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-all-float64] PASSED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-all-int32] PASSED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-2d-all-bool] PASSED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-1d-all-float32] SKIPPED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-1d-all-float64] SKIPPED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-1d-all-int32] SKIPPED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-None-1d-all-bool] SKIPPED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-ax1-float32] PASSED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-ax1-float64] PASSED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-ax1-int32] PASSED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-ax1-bool] PASSED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-ax1-float32] PASSED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-ax1-float64] PASSED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-ax1-int32] PASSED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-ax1-bool] PASSED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-ax1-float32] PASSED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-ax1-float64] PASSED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-ax1-int32] PASSED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-ax1-bool] PASSED [ 33%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1] PASSED [ 33%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-min] PASSED [ 33%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-max] PASSED [ 33%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-float32] PASSED [ 33%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-float64] PASSED [ 33%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-int32] PASSED [ 33%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-bool] PASSED [ 33%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-float32] PASSED [ 33%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-float64] PASSED [ 33%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-int32] PASSED [ 33%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax1-bool] PASSED [ 33%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-ax0-float32] PASSED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-ax0-float64] PASSED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-ax0-int32] PASSED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-ax0-bool] PASSED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-all-float32] PASSED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-all-float64] PASSED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-all-int32] PASSED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-2d-all-bool] PASSED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-1d-all-float32] SKIPPED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-1d-all-float64] SKIPPED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-1d-all-int32] SKIPPED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-int64-1d-all-bool] SKIPPED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-ax0-float32] PASSED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-ax0-float64] PASSED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-ax0-int32] PASSED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-ax0-bool] PASSED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-ax0-float32] PASSED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-ax0-float64] PASSED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-ax0-int32] PASSED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-ax0-bool] PASSED [ 34%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0] PASSED [ 34%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-min] PASSED [ 34%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-max] PASSED [ 34%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-float32] PASSED [ 34%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-float64] PASSED [ 34%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-int32] PASSED [ 34%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-bool] PASSED [ 34%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-float32] PASSED [ 34%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-float64] PASSED [ 34%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-int32] PASSED [ 34%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-ax0-bool] PASSED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-all-float32] PASSED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-all-float64] PASSED [ 34%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-all-int32] PASSED [ 35%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-2d-all-bool] PASSED [ 35%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-1d-all-float32] SKIPPED [ 35%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-1d-all-float64] SKIPPED [ 35%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-1d-all-int32] SKIPPED [ 35%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float64-1d-all-bool] SKIPPED [ 35%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-all-float32] PASSED [ 35%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-all-float64] PASSED [ 35%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-all-int32] PASSED [ 35%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-2d-all-bool] PASSED [ 35%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csr_matrix]-2d-all] PASSED [ 35%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-min] PASSED [ 35%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-max] PASSED [ 35%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-float32] PASSED [ 35%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-float64] PASSED [ 35%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-int32] PASSED [ 35%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-bool] PASSED [ 35%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-float32] PASSED [ 35%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-float64] PASSED [ 35%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-int32] PASSED [ 35%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-2d-all-bool] PASSED [ 35%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-1d-all-float32] SKIPPED [ 35%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-1d-all-float64] SKIPPED [ 35%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-1d-all-int32] SKIPPED [ 35%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csr_matrix]-float32-1d-all-bool] SKIPPED [ 35%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csr_matrix]-1d-all] PASSED [ 35%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-min] PASSED [ 35%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-max] PASSED [ 35%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-float32] SKIPPED [ 35%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-float64] SKIPPED [ 35%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-int32] SKIPPED [ 35%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-bool] SKIPPED [ 35%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-float32] SKIPPED [ 35%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-float64] SKIPPED [ 36%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-int32] SKIPPED [ 36%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csr_matrix]-1d-all-bool] SKIPPED [ 36%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-0-3x2-sum] PASSED [ 36%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-0-3x2-min] PASSED [ 36%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-0-3x2-max] PASSED [ 36%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-0-2x3-sum] PASSED [ 36%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-0-2x3-min] PASSED [ 36%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-0-2x3-max] PASSED [ 36%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-0-2x2-sum] PASSED [ 36%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-0-2x2-min] PASSED [ 36%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-0-2x2-max] PASSED [ 36%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-1-3x2-sum] PASSED [ 36%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-1-3x2-min] PASSED [ 36%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-1-3x2-max] PASSED [ 36%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-1-2x3-sum] PASSED [ 36%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-1-2x3-min] PASSED [ 36%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-1-2x3-max] PASSED [ 36%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-1-2x2-sum] PASSED [ 36%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-1-2x2-min] PASSED [ 36%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csr_matrix]-1-2x2-max] PASSED [ 36%] -tests/test_stats.py::test_mean_var_pbmc_dask[dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 36%] -tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csr_matrix]-None] PASSED [ 36%] -tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csr_matrix]-0] PASSED [ 36%] -tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csr_matrix]-1] PASSED [ 36%] -tests/test_stats.py::test_dask_constant_blocks[dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 36%] -tests/test_test_utils.py::test_conv[dask.array.Array[scipy.sparse.csr_matrix]-float32] PASSED [ 36%] -tests/test_test_utils.py::test_conv[dask.array.Array[scipy.sparse.csr_matrix]-float64] PASSED [ 36%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-scipy.sparse.csc_matrix] PASSED [ 36%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-scipy.sparse.csc_matrix] PASSED [ 36%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-scipy.sparse.csc_matrix] PASSED [ 36%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-scipy.sparse.csc_matrix] SKIPPED [ 36%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-scipy.sparse.csc_matrix] PASSED [ 36%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-scipy.sparse.csc_matrix] SKIPPED [ 37%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-scipy.sparse.csc_matrix] PASSED [ 37%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-scipy.sparse.csc_matrix] SKIPPED [ 37%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-scipy.sparse.csc_matrix] PASSED [ 37%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-scipy.sparse.csc_matrix] PASSED [ 37%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-scipy.sparse.csc_matrix] PASSED [ 37%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-scipy.sparse.csc_matrix] SKIPPED [ 37%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-scipy.sparse.csc_matrix] PASSED [ 37%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-scipy.sparse.csc_matrix] SKIPPED [ 37%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 37%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-scipy.sparse.csr_matrix] SKIPPED [ 37%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-scipy.sparse.csc_array] SKIPPED [ 37%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-scipy.sparse.csr_array] SKIPPED [ 37%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-cupy.ndarray] SKIPPED [ 37%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-numpy.ndarray] SKIPPED [ 37%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-ax1-float32] SKIPPED [ 37%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-ax1-float64] SKIPPED [ 37%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-ax1-int32] SKIPPED [ 37%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-ax1-bool] SKIPPED [ 37%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-ax0-float32] SKIPPED [ 37%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-ax0-float64] SKIPPED [ 37%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-ax0-int32] SKIPPED [ 37%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-ax0-bool] SKIPPED [ 37%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-all-float32] SKIPPED [ 37%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-all-float64] SKIPPED [ 37%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-all-int32] SKIPPED [ 37%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-2d-all-bool] SKIPPED [ 37%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-1d-all-float32] SKIPPED [ 37%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-1d-all-float64] SKIPPED [ 37%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-1d-all-int32] SKIPPED [ 37%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-None-1d-all-bool] SKIPPED [ 37%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-ax1-float32] SKIPPED [ 37%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-ax1-float64] SKIPPED [ 37%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-ax1-int32] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-ax1-bool] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-ax1-float32] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-ax1-float64] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-ax1-int32] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-ax1-bool] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-ax1-float32] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-ax1-float64] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-ax1-int32] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-ax1-bool] SKIPPED [ 38%] -tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-min] SKIPPED [ 38%] -tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-max] SKIPPED [ 38%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-float32] SKIPPED [ 38%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-float64] SKIPPED [ 38%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-int32] SKIPPED [ 38%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-bool] SKIPPED [ 38%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-float32] SKIPPED [ 38%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-float64] SKIPPED [ 38%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-int32] SKIPPED [ 38%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax1-bool] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-ax0-float32] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-ax0-float64] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-ax0-int32] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-ax0-bool] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-all-float32] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-all-float64] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-all-int32] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-2d-all-bool] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-1d-all-float32] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-1d-all-float64] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-1d-all-int32] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-int64-1d-all-bool] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-ax0-float32] SKIPPED [ 38%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-ax0-float64] SKIPPED [ 39%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-ax0-int32] SKIPPED [ 39%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-ax0-bool] SKIPPED [ 39%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-ax0-float32] SKIPPED [ 39%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-ax0-float64] SKIPPED [ 39%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-ax0-int32] SKIPPED [ 39%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-ax0-bool] SKIPPED [ 39%] -tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-min] SKIPPED [ 39%] -tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-max] SKIPPED [ 39%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-float32] SKIPPED [ 39%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-float64] SKIPPED [ 39%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-int32] SKIPPED [ 39%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-bool] SKIPPED [ 39%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-float32] SKIPPED [ 39%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-float64] SKIPPED [ 39%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-int32] SKIPPED [ 39%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-ax0-bool] SKIPPED [ 39%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-all-float32] SKIPPED [ 39%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-all-float64] SKIPPED [ 39%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-all-int32] SKIPPED [ 39%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-2d-all-bool] SKIPPED [ 39%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-1d-all-float32] SKIPPED [ 39%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-1d-all-float64] SKIPPED [ 39%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-1d-all-int32] SKIPPED [ 39%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64-1d-all-bool] SKIPPED [ 39%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-all-float32] SKIPPED [ 39%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-all-float64] SKIPPED [ 39%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-all-int32] SKIPPED [ 39%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-2d-all-bool] SKIPPED [ 39%] -tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-min] SKIPPED [ 39%] -tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-max] SKIPPED [ 39%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-float32] SKIPPED [ 39%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-float64] SKIPPED [ 39%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-int32] SKIPPED [ 40%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-bool] SKIPPED [ 40%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-float32] SKIPPED [ 40%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-float64] SKIPPED [ 40%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-int32] SKIPPED [ 40%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-2d-all-bool] SKIPPED [ 40%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-1d-all-float32] SKIPPED [ 40%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-1d-all-float64] SKIPPED [ 40%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-1d-all-int32] SKIPPED [ 40%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32-1d-all-bool] SKIPPED [ 40%] -tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-min] SKIPPED [ 40%] -tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-max] SKIPPED [ 40%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-float32] SKIPPED [ 40%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-float64] SKIPPED [ 40%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-int32] SKIPPED [ 40%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-bool] SKIPPED [ 40%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-float32] SKIPPED [ 40%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-float64] SKIPPED [ 40%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-int32] SKIPPED [ 40%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1d-all-bool] SKIPPED [ 40%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-0-3x2-sum] SKIPPED [ 40%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-0-3x2-min] SKIPPED [ 40%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-0-3x2-max] SKIPPED [ 40%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-0-2x3-sum] SKIPPED [ 40%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-0-2x3-min] SKIPPED [ 40%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-0-2x3-max] SKIPPED [ 40%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-0-2x2-sum] SKIPPED [ 40%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-0-2x2-min] SKIPPED [ 40%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-0-2x2-max] SKIPPED [ 40%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1-3x2-sum] SKIPPED [ 40%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1-3x2-min] SKIPPED [ 40%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1-3x2-max] SKIPPED [ 40%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1-2x3-sum] SKIPPED [ 40%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1-2x3-min] SKIPPED [ 41%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1-2x3-max] SKIPPED [ 41%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1-2x2-sum] SKIPPED [ 41%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1-2x2-min] SKIPPED [ 41%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-1-2x2-max] SKIPPED [ 41%] -tests/test_stats.py::test_mean_var_pbmc_dask[dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float32] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-float64] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-scipy.sparse.csc_matrix] PASSED [ 41%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-scipy.sparse.csr_matrix] PASSED [ 41%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-scipy.sparse.csc_array] PASSED [ 41%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-scipy.sparse.csr_array] PASSED [ 41%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-cupy.ndarray] SKIPPED [ 41%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-numpy.ndarray] PASSED [ 41%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-ax1-float32] PASSED [ 41%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-ax1-float64] PASSED [ 41%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-ax1-int32] PASSED [ 41%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-ax1-bool] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-ax0-float32] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-ax0-float64] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-ax0-int32] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-ax0-bool] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-all-float32] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-all-float64] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-all-int32] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-2d-all-bool] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-1d-all-float32] SKIPPED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-1d-all-float64] SKIPPED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-1d-all-int32] SKIPPED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-None-1d-all-bool] SKIPPED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-ax1-float32] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-ax1-float64] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-ax1-int32] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-ax1-bool] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-ax1-float32] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-ax1-float64] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-ax1-int32] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-ax1-bool] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-ax1-float32] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-ax1-float64] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-ax1-int32] PASSED [ 42%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-ax1-bool] PASSED [ 42%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1] PASSED [ 42%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-min] PASSED [ 42%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-max] PASSED [ 42%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-float32] PASSED [ 42%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-float64] PASSED [ 42%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-int32] PASSED [ 42%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-bool] PASSED [ 42%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-float32] PASSED [ 42%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-float64] PASSED [ 43%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-int32] PASSED [ 43%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax1-bool] PASSED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-ax0-float32] PASSED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-ax0-float64] PASSED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-ax0-int32] PASSED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-ax0-bool] PASSED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-all-float32] PASSED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-all-float64] PASSED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-all-int32] PASSED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-2d-all-bool] PASSED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-1d-all-float32] SKIPPED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-1d-all-float64] SKIPPED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-1d-all-int32] SKIPPED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-int64-1d-all-bool] SKIPPED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-ax0-float32] PASSED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-ax0-float64] PASSED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-ax0-int32] PASSED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-ax0-bool] PASSED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-ax0-float32] PASSED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-ax0-float64] PASSED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-ax0-int32] PASSED [ 43%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-ax0-bool] PASSED [ 43%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0] PASSED [ 43%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-min] PASSED [ 43%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-max] PASSED [ 43%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-float32] PASSED [ 43%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-float64] PASSED [ 43%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-int32] PASSED [ 43%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-bool] PASSED [ 43%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-float32] PASSED [ 43%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-float64] PASSED [ 43%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-int32] PASSED [ 43%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-ax0-bool] PASSED [ 44%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-all-float32] PASSED [ 44%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-all-float64] PASSED [ 44%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-all-int32] PASSED [ 44%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-2d-all-bool] PASSED [ 44%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-1d-all-float32] SKIPPED [ 44%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-1d-all-float64] SKIPPED [ 44%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-1d-all-int32] SKIPPED [ 44%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float64-1d-all-bool] SKIPPED [ 44%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-all-float32] PASSED [ 44%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-all-float64] PASSED [ 44%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-all-int32] PASSED [ 44%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-2d-all-bool] PASSED [ 44%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csc_matrix]-2d-all] PASSED [ 44%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-min] PASSED [ 44%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-max] PASSED [ 44%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-float32] PASSED [ 44%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-float64] PASSED [ 44%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-int32] PASSED [ 44%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-bool] PASSED [ 44%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-float32] PASSED [ 44%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-float64] PASSED [ 44%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-int32] PASSED [ 44%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-2d-all-bool] PASSED [ 44%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-1d-all-float32] SKIPPED [ 44%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-1d-all-float64] SKIPPED [ 44%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-1d-all-int32] SKIPPED [ 44%] -tests/test_stats.py::test_sum[dask.array.Array[scipy.sparse.csc_matrix]-float32-1d-all-bool] SKIPPED [ 44%] -tests/test_stats.py::test_sum_to_int[dask.array.Array[scipy.sparse.csc_matrix]-1d-all] PASSED [ 44%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-min] PASSED [ 44%] -tests/test_stats.py::test_min_max[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-max] PASSED [ 44%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-float32] SKIPPED [ 44%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-float64] SKIPPED [ 44%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-int32] SKIPPED [ 45%] -tests/test_stats.py::test_mean[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-bool] SKIPPED [ 45%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-float32] SKIPPED [ 45%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-float64] SKIPPED [ 45%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-int32] SKIPPED [ 45%] -tests/test_stats.py::test_mean_var[dask.array.Array[scipy.sparse.csc_matrix]-1d-all-bool] SKIPPED [ 45%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-0-3x2-sum] PASSED [ 45%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-0-3x2-min] PASSED [ 45%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-0-3x2-max] PASSED [ 45%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-0-2x3-sum] PASSED [ 45%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-0-2x3-min] PASSED [ 45%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-0-2x3-max] PASSED [ 45%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-0-2x2-sum] PASSED [ 45%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-0-2x2-min] PASSED [ 45%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-0-2x2-max] PASSED [ 45%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-1-3x2-sum] PASSED [ 45%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-1-3x2-min] PASSED [ 45%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-1-3x2-max] PASSED [ 45%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-1-2x3-sum] PASSED [ 45%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-1-2x3-min] PASSED [ 45%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-1-2x3-max] PASSED [ 45%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-1-2x2-sum] PASSED [ 45%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-1-2x2-min] PASSED [ 45%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[scipy.sparse.csc_matrix]-1-2x2-max] PASSED [ 45%] -tests/test_stats.py::test_mean_var_pbmc_dask[dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 45%] -tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csc_matrix]-None] PASSED [ 45%] -tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csc_matrix]-0] PASSED [ 45%] -tests/test_stats.py::test_is_constant[dask.array.Array[scipy.sparse.csc_matrix]-1] PASSED [ 45%] -tests/test_stats.py::test_dask_constant_blocks[dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 45%] -tests/test_test_utils.py::test_conv[dask.array.Array[scipy.sparse.csc_matrix]-float32] PASSED [ 45%] -tests/test_test_utils.py::test_conv[dask.array.Array[scipy.sparse.csc_matrix]-float64] PASSED [ 45%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-dask.array.Array[numpy.ndarray]] PASSED [ 45%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-dask.array.Array[numpy.ndarray]] SKIPPED [ 45%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-dask.array.Array[numpy.ndarray]] PASSED [ 46%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-dask.array.Array[numpy.ndarray]] PASSED [ 46%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-dask.array.Array[numpy.ndarray]] PASSED [ 46%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-dask.array.Array[numpy.ndarray]] SKIPPED [ 46%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-dask.array.Array[numpy.ndarray]] PASSED [ 46%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-dask.array.Array[numpy.ndarray]] SKIPPED [ 46%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-dask.array.Array[numpy.ndarray]] PASSED [ 46%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-dask.array.Array[numpy.ndarray]] SKIPPED [ 46%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-dask.array.Array[numpy.ndarray]] PASSED [ 46%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-dask.array.Array[numpy.ndarray]] PASSED [ 46%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-dask.array.Array[numpy.ndarray]] PASSED [ 46%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-dask.array.Array[numpy.ndarray]] SKIPPED [ 46%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-dask.array.Array[numpy.ndarray]] PASSED [ 46%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-dask.array.Array[numpy.ndarray]] SKIPPED [ 46%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 46%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-scipy.sparse.csc_matrix] SKIPPED [ 46%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 46%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-scipy.sparse.csr_matrix] SKIPPED [ 46%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-scipy.sparse.csc_array] SKIPPED [ 46%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-scipy.sparse.csr_array] SKIPPED [ 46%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-cupy.ndarray] SKIPPED [ 46%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-numpy.ndarray] SKIPPED [ 46%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-ax1-float32] SKIPPED [ 46%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-ax1-float64] SKIPPED [ 46%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-ax1-int32] SKIPPED [ 46%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-ax1-bool] SKIPPED [ 46%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-ax0-float32] SKIPPED [ 46%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-ax0-float64] SKIPPED [ 46%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-ax0-int32] SKIPPED [ 46%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-ax0-bool] SKIPPED [ 46%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-all-float32] SKIPPED [ 46%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-all-float64] SKIPPED [ 46%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-all-int32] SKIPPED [ 46%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-2d-all-bool] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-1d-all-float32] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-1d-all-float64] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-1d-all-int32] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-None-1d-all-bool] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-ax1-float32] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-ax1-float64] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-ax1-int32] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-ax1-bool] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-ax1-float32] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-ax1-float64] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-ax1-int32] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-ax1-bool] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-ax1-float32] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-ax1-float64] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-ax1-int32] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-ax1-bool] SKIPPED [ 47%] -tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-min] SKIPPED [ 47%] -tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-max] SKIPPED [ 47%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-float32] SKIPPED [ 47%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-float64] SKIPPED [ 47%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-int32] SKIPPED [ 47%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-bool] SKIPPED [ 47%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-float32] SKIPPED [ 47%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-float64] SKIPPED [ 47%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-int32] SKIPPED [ 47%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax1-bool] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-ax0-float32] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-ax0-float64] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-ax0-int32] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-ax0-bool] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-all-float32] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-all-float64] SKIPPED [ 47%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-all-int32] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-2d-all-bool] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-1d-all-float32] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-1d-all-float64] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-1d-all-int32] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-int64-1d-all-bool] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-ax0-float32] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-ax0-float64] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-ax0-int32] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-ax0-bool] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-ax0-float32] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-ax0-float64] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-ax0-int32] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-ax0-bool] SKIPPED [ 48%] -tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-min] SKIPPED [ 48%] -tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-max] SKIPPED [ 48%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-float32] SKIPPED [ 48%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-float64] SKIPPED [ 48%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-int32] SKIPPED [ 48%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-bool] SKIPPED [ 48%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-float32] SKIPPED [ 48%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-float64] SKIPPED [ 48%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-int32] SKIPPED [ 48%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-ax0-bool] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-all-float32] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-all-float64] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-all-int32] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-2d-all-bool] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-1d-all-float32] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-1d-all-float64] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-1d-all-int32] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64-1d-all-bool] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-all-float32] SKIPPED [ 48%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-all-float64] SKIPPED [ 49%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-all-int32] SKIPPED [ 49%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-2d-all-bool] SKIPPED [ 49%] -tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-min] SKIPPED [ 49%] -tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-max] SKIPPED [ 49%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-float32] SKIPPED [ 49%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-float64] SKIPPED [ 49%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-int32] SKIPPED [ 49%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-bool] SKIPPED [ 49%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-float32] SKIPPED [ 49%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-float64] SKIPPED [ 49%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-int32] SKIPPED [ 49%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-2d-all-bool] SKIPPED [ 49%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-1d-all-float32] SKIPPED [ 49%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-1d-all-float64] SKIPPED [ 49%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-1d-all-int32] SKIPPED [ 49%] -tests/test_stats.py::test_sum[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32-1d-all-bool] SKIPPED [ 49%] -tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-min] SKIPPED [ 49%] -tests/test_stats.py::test_min_max[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-max] SKIPPED [ 49%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-float32] SKIPPED [ 49%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-float64] SKIPPED [ 49%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-int32] SKIPPED [ 49%] -tests/test_stats.py::test_mean[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-bool] SKIPPED [ 49%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-float32] SKIPPED [ 49%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-float64] SKIPPED [ 49%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-int32] SKIPPED [ 49%] -tests/test_stats.py::test_mean_var[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1d-all-bool] SKIPPED [ 49%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-0-3x2-sum] SKIPPED [ 49%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-0-3x2-min] SKIPPED [ 49%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-0-3x2-max] SKIPPED [ 49%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-0-2x3-sum] SKIPPED [ 49%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-0-2x3-min] SKIPPED [ 49%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-0-2x3-max] SKIPPED [ 50%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-0-2x2-sum] SKIPPED [ 50%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-0-2x2-min] SKIPPED [ 50%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-0-2x2-max] SKIPPED [ 50%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1-3x2-sum] SKIPPED [ 50%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1-3x2-min] SKIPPED [ 50%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1-3x2-max] SKIPPED [ 50%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1-2x3-sum] SKIPPED [ 50%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1-2x3-min] SKIPPED [ 50%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1-2x3-max] SKIPPED [ 50%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1-2x2-sum] SKIPPED [ 50%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1-2x2-min] SKIPPED [ 50%] -tests/test_stats.py::test_dask_shapes[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-1-2x2-max] SKIPPED [ 50%] -tests/test_stats.py::test_mean_var_pbmc_dask[dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float32] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-float64] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-dask.array.Array[cupy.ndarray]] SKIPPED [ 50%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-dask.array.Array[numpy.ndarray]] PASSED [ 51%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 51%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-scipy.sparse.csc_matrix] PASSED [ 51%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 51%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-scipy.sparse.csr_matrix] PASSED [ 51%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-scipy.sparse.csc_array] PASSED [ 51%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-scipy.sparse.csr_array] PASSED [ 51%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-cupy.ndarray] SKIPPED [ 51%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-numpy.ndarray] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-None-2d-ax1-float32] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-None-2d-ax1-float64] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-None-2d-ax1-int32] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-None-2d-ax1-bool] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-None-2d-ax0-float32] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-None-2d-ax0-float64] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-None-2d-ax0-int32] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-None-2d-ax0-bool] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-None-2d-all-float32] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-None-2d-all-float64] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-None-2d-all-int32] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-None-2d-all-bool] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-None-1d-all-float32] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-None-1d-all-float64] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-None-1d-all-int32] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-None-1d-all-bool] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-ax1-float32] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-ax1-float64] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-ax1-int32] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-ax1-bool] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-ax1-float32] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-ax1-float64] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-ax1-int32] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-ax1-bool] PASSED [ 51%] -tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-ax1-float32] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-ax1-float64] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-ax1-int32] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-ax1-bool] PASSED [ 52%] -tests/test_stats.py::test_sum_to_int[h5py.Dataset-2d-ax1] PASSED [ 52%] -tests/test_stats.py::test_min_max[h5py.Dataset-2d-ax1-min] PASSED [ 52%] -tests/test_stats.py::test_min_max[h5py.Dataset-2d-ax1-max] PASSED [ 52%] -tests/test_stats.py::test_mean[h5py.Dataset-2d-ax1-float32] PASSED [ 52%] -tests/test_stats.py::test_mean[h5py.Dataset-2d-ax1-float64] PASSED [ 52%] -tests/test_stats.py::test_mean[h5py.Dataset-2d-ax1-int32] PASSED [ 52%] -tests/test_stats.py::test_mean[h5py.Dataset-2d-ax1-bool] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-ax0-float32] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-ax0-float64] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-ax0-int32] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-ax0-bool] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-all-float32] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-all-float64] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-all-int32] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-int64-2d-all-bool] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-int64-1d-all-float32] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-int64-1d-all-float64] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-int64-1d-all-int32] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-int64-1d-all-bool] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-ax0-float32] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-ax0-float64] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-ax0-int32] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-ax0-bool] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-ax0-float32] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-ax0-float64] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-ax0-int32] PASSED [ 52%] -tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-ax0-bool] PASSED [ 52%] -tests/test_stats.py::test_sum_to_int[h5py.Dataset-2d-ax0] PASSED [ 52%] -tests/test_stats.py::test_min_max[h5py.Dataset-2d-ax0-min] PASSED [ 52%] -tests/test_stats.py::test_min_max[h5py.Dataset-2d-ax0-max] PASSED [ 53%] -tests/test_stats.py::test_mean[h5py.Dataset-2d-ax0-float32] PASSED [ 53%] -tests/test_stats.py::test_mean[h5py.Dataset-2d-ax0-float64] PASSED [ 53%] -tests/test_stats.py::test_mean[h5py.Dataset-2d-ax0-int32] PASSED [ 53%] -tests/test_stats.py::test_mean[h5py.Dataset-2d-ax0-bool] PASSED [ 53%] -tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-all-float32] PASSED [ 53%] -tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-all-float64] PASSED [ 53%] -tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-all-int32] PASSED [ 53%] -tests/test_stats.py::test_sum[h5py.Dataset-float64-2d-all-bool] PASSED [ 53%] -tests/test_stats.py::test_sum[h5py.Dataset-float64-1d-all-float32] PASSED [ 53%] -tests/test_stats.py::test_sum[h5py.Dataset-float64-1d-all-float64] PASSED [ 53%] -tests/test_stats.py::test_sum[h5py.Dataset-float64-1d-all-int32] PASSED [ 53%] -tests/test_stats.py::test_sum[h5py.Dataset-float64-1d-all-bool] PASSED [ 53%] -tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-all-float32] PASSED [ 53%] -tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-all-float64] PASSED [ 53%] -tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-all-int32] PASSED [ 53%] -tests/test_stats.py::test_sum[h5py.Dataset-float32-2d-all-bool] PASSED [ 53%] -tests/test_stats.py::test_sum_to_int[h5py.Dataset-2d-all] PASSED [ 53%] -tests/test_stats.py::test_min_max[h5py.Dataset-2d-all-min] PASSED [ 53%] -tests/test_stats.py::test_min_max[h5py.Dataset-2d-all-max] PASSED [ 53%] -tests/test_stats.py::test_mean[h5py.Dataset-2d-all-float32] PASSED [ 53%] -tests/test_stats.py::test_mean[h5py.Dataset-2d-all-float64] PASSED [ 53%] -tests/test_stats.py::test_mean[h5py.Dataset-2d-all-int32] PASSED [ 53%] -tests/test_stats.py::test_mean[h5py.Dataset-2d-all-bool] PASSED [ 53%] -tests/test_stats.py::test_sum[h5py.Dataset-float32-1d-all-float32] PASSED [ 53%] -tests/test_stats.py::test_sum[h5py.Dataset-float32-1d-all-float64] PASSED [ 53%] -tests/test_stats.py::test_sum[h5py.Dataset-float32-1d-all-int32] PASSED [ 53%] -tests/test_stats.py::test_sum[h5py.Dataset-float32-1d-all-bool] PASSED [ 53%] -tests/test_stats.py::test_sum_to_int[h5py.Dataset-1d-all] PASSED [ 53%] -tests/test_stats.py::test_min_max[h5py.Dataset-1d-all-min] PASSED [ 53%] -tests/test_stats.py::test_min_max[h5py.Dataset-1d-all-max] PASSED [ 53%] -tests/test_stats.py::test_mean[h5py.Dataset-1d-all-float32] PASSED [ 53%] -tests/test_stats.py::test_mean[h5py.Dataset-1d-all-float64] PASSED [ 53%] -tests/test_stats.py::test_mean[h5py.Dataset-1d-all-int32] PASSED [ 54%] -tests/test_stats.py::test_mean[h5py.Dataset-1d-all-bool] PASSED [ 54%] -tests/test_stats.py::test_ndim_error[h5py.Dataset-1d-ax0-sum] PASSED [ 54%] -tests/test_stats.py::test_ndim_error[h5py.Dataset-1d-ax0-min] PASSED [ 54%] -tests/test_stats.py::test_ndim_error[h5py.Dataset-1d-ax0-max] PASSED [ 54%] -tests/test_stats.py::test_ndim_error[h5py.Dataset-1d-ax0-mean] PASSED [ 54%] -tests/test_stats.py::test_ndim_error[h5py.Dataset-1d-ax0-mean_var] PASSED [ 54%] -tests/test_stats.py::test_ndim_error[h5py.Dataset-1d-ax0-is_constant] PASSED [ 54%] -tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-ax3-sum] PASSED [ 54%] -tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-ax3-min] PASSED [ 54%] -tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-ax3-max] PASSED [ 54%] -tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-ax3-mean] PASSED [ 54%] -tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-ax3-mean_var] PASSED [ 54%] -tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-ax3-is_constant] PASSED [ 54%] -tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-axneg-sum] PASSED [ 54%] -tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-axneg-min] PASSED [ 54%] -tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-axneg-max] PASSED [ 54%] -tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-axneg-mean] PASSED [ 54%] -tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-axneg-mean_var] PASSED [ 54%] -tests/test_stats.py::test_ndim_error[h5py.Dataset-2d-axneg-is_constant] PASSED [ 54%] -tests/test_test_utils.py::test_conv[h5py.Dataset-float32] PASSED [ 54%] -tests/test_test_utils.py::test_conv[h5py.Dataset-float64] PASSED [ 54%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 54%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-dask.array.Array[scipy.sparse.csr_array]] SKIPPED [ 54%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 54%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-dask.array.Array[scipy.sparse.csr_array]] SKIPPED [ 54%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 54%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 54%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 54%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-dask.array.Array[scipy.sparse.csr_array]] SKIPPED [ 54%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 54%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-dask.array.Array[scipy.sparse.csr_array]] SKIPPED [ 54%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 54%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-dask.array.Array[scipy.sparse.csr_array]] SKIPPED [ 55%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 55%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 55%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 55%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-dask.array.Array[scipy.sparse.csr_array]] SKIPPED [ 55%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 55%] -tests/test_test_utils.py::test_conv_other[zarr.Array-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 55%] -tests/test_test_utils.py::test_conv_other[zarr.Array-dask.array.Array[cupy.ndarray]] SKIPPED [ 55%] -tests/test_test_utils.py::test_conv_other[zarr.Array-dask.array.Array[numpy.ndarray]] PASSED [ 55%] -tests/test_test_utils.py::test_conv_other[zarr.Array-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 55%] -tests/test_test_utils.py::test_conv_other[zarr.Array-scipy.sparse.csc_matrix] PASSED [ 55%] -tests/test_test_utils.py::test_conv_other[zarr.Array-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 55%] -tests/test_test_utils.py::test_conv_other[zarr.Array-scipy.sparse.csr_matrix] PASSED [ 55%] -tests/test_test_utils.py::test_conv_other[zarr.Array-scipy.sparse.csc_array] PASSED [ 55%] -tests/test_test_utils.py::test_conv_other[zarr.Array-scipy.sparse.csr_array] PASSED [ 55%] -tests/test_test_utils.py::test_conv_other[zarr.Array-cupy.ndarray] SKIPPED [ 55%] -tests/test_test_utils.py::test_conv_other[zarr.Array-numpy.ndarray] PASSED [ 55%] -tests/test_stats.py::test_sum[zarr.Array-None-2d-ax1-float32] PASSED [ 55%] -tests/test_stats.py::test_sum[zarr.Array-None-2d-ax1-float64] PASSED [ 55%] -tests/test_stats.py::test_sum[zarr.Array-None-2d-ax1-int32] PASSED [ 55%] -tests/test_stats.py::test_sum[zarr.Array-None-2d-ax1-bool] PASSED [ 55%] -tests/test_stats.py::test_sum[zarr.Array-None-2d-ax0-float32] PASSED [ 55%] -tests/test_stats.py::test_sum[zarr.Array-None-2d-ax0-float64] PASSED [ 55%] -tests/test_stats.py::test_sum[zarr.Array-None-2d-ax0-int32] PASSED [ 55%] -tests/test_stats.py::test_sum[zarr.Array-None-2d-ax0-bool] PASSED [ 55%] -tests/test_stats.py::test_sum[zarr.Array-None-2d-all-float32] PASSED [ 55%] -tests/test_stats.py::test_sum[zarr.Array-None-2d-all-float64] PASSED [ 55%] -tests/test_stats.py::test_sum[zarr.Array-None-2d-all-int32] PASSED [ 55%] -tests/test_stats.py::test_sum[zarr.Array-None-2d-all-bool] PASSED [ 55%] -tests/test_stats.py::test_sum[zarr.Array-None-1d-all-float32] PASSED [ 55%] -tests/test_stats.py::test_sum[zarr.Array-None-1d-all-float64] PASSED [ 55%] -tests/test_stats.py::test_sum[zarr.Array-None-1d-all-int32] PASSED [ 55%] -tests/test_stats.py::test_sum[zarr.Array-None-1d-all-bool] PASSED [ 55%] -tests/test_stats.py::test_sum[zarr.Array-int64-2d-ax1-float32] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-int64-2d-ax1-float64] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-int64-2d-ax1-int32] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-int64-2d-ax1-bool] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-float64-2d-ax1-float32] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-float64-2d-ax1-float64] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-float64-2d-ax1-int32] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-float64-2d-ax1-bool] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-float32-2d-ax1-float32] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-float32-2d-ax1-float64] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-float32-2d-ax1-int32] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-float32-2d-ax1-bool] PASSED [ 56%] -tests/test_stats.py::test_sum_to_int[zarr.Array-2d-ax1] PASSED [ 56%] -tests/test_stats.py::test_min_max[zarr.Array-2d-ax1-min] PASSED [ 56%] -tests/test_stats.py::test_min_max[zarr.Array-2d-ax1-max] PASSED [ 56%] -tests/test_stats.py::test_mean[zarr.Array-2d-ax1-float32] PASSED [ 56%] -tests/test_stats.py::test_mean[zarr.Array-2d-ax1-float64] PASSED [ 56%] -tests/test_stats.py::test_mean[zarr.Array-2d-ax1-int32] PASSED [ 56%] -tests/test_stats.py::test_mean[zarr.Array-2d-ax1-bool] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-int64-2d-ax0-float32] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-int64-2d-ax0-float64] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-int64-2d-ax0-int32] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-int64-2d-ax0-bool] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-int64-2d-all-float32] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-int64-2d-all-float64] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-int64-2d-all-int32] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-int64-2d-all-bool] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-int64-1d-all-float32] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-int64-1d-all-float64] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-int64-1d-all-int32] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-int64-1d-all-bool] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-float64-2d-ax0-float32] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-float64-2d-ax0-float64] PASSED [ 56%] -tests/test_stats.py::test_sum[zarr.Array-float64-2d-ax0-int32] PASSED [ 57%] -tests/test_stats.py::test_sum[zarr.Array-float64-2d-ax0-bool] PASSED [ 57%] -tests/test_stats.py::test_sum[zarr.Array-float32-2d-ax0-float32] PASSED [ 57%] -tests/test_stats.py::test_sum[zarr.Array-float32-2d-ax0-float64] PASSED [ 57%] -tests/test_stats.py::test_sum[zarr.Array-float32-2d-ax0-int32] PASSED [ 57%] -tests/test_stats.py::test_sum[zarr.Array-float32-2d-ax0-bool] PASSED [ 57%] -tests/test_stats.py::test_sum_to_int[zarr.Array-2d-ax0] PASSED [ 57%] -tests/test_stats.py::test_min_max[zarr.Array-2d-ax0-min] PASSED [ 57%] -tests/test_stats.py::test_min_max[zarr.Array-2d-ax0-max] PASSED [ 57%] -tests/test_stats.py::test_mean[zarr.Array-2d-ax0-float32] PASSED [ 57%] -tests/test_stats.py::test_mean[zarr.Array-2d-ax0-float64] PASSED [ 57%] -tests/test_stats.py::test_mean[zarr.Array-2d-ax0-int32] PASSED [ 57%] -tests/test_stats.py::test_mean[zarr.Array-2d-ax0-bool] PASSED [ 57%] -tests/test_stats.py::test_sum[zarr.Array-float64-2d-all-float32] PASSED [ 57%] -tests/test_stats.py::test_sum[zarr.Array-float64-2d-all-float64] PASSED [ 57%] -tests/test_stats.py::test_sum[zarr.Array-float64-2d-all-int32] PASSED [ 57%] -tests/test_stats.py::test_sum[zarr.Array-float64-2d-all-bool] PASSED [ 57%] -tests/test_stats.py::test_sum[zarr.Array-float64-1d-all-float32] PASSED [ 57%] -tests/test_stats.py::test_sum[zarr.Array-float64-1d-all-float64] PASSED [ 57%] -tests/test_stats.py::test_sum[zarr.Array-float64-1d-all-int32] PASSED [ 57%] -tests/test_stats.py::test_sum[zarr.Array-float64-1d-all-bool] PASSED [ 57%] -tests/test_stats.py::test_sum[zarr.Array-float32-2d-all-float32] PASSED [ 57%] -tests/test_stats.py::test_sum[zarr.Array-float32-2d-all-float64] PASSED [ 57%] -tests/test_stats.py::test_sum[zarr.Array-float32-2d-all-int32] PASSED [ 57%] -tests/test_stats.py::test_sum[zarr.Array-float32-2d-all-bool] PASSED [ 57%] -tests/test_stats.py::test_sum_to_int[zarr.Array-2d-all] PASSED [ 57%] -tests/test_stats.py::test_min_max[zarr.Array-2d-all-min] PASSED [ 57%] -tests/test_stats.py::test_min_max[zarr.Array-2d-all-max] PASSED [ 57%] -tests/test_stats.py::test_mean[zarr.Array-2d-all-float32] PASSED [ 57%] -tests/test_stats.py::test_mean[zarr.Array-2d-all-float64] PASSED [ 57%] -tests/test_stats.py::test_mean[zarr.Array-2d-all-int32] PASSED [ 57%] -tests/test_stats.py::test_mean[zarr.Array-2d-all-bool] PASSED [ 57%] -tests/test_stats.py::test_sum[zarr.Array-float32-1d-all-float32] PASSED [ 57%] -tests/test_stats.py::test_sum[zarr.Array-float32-1d-all-float64] PASSED [ 58%] -tests/test_stats.py::test_sum[zarr.Array-float32-1d-all-int32] PASSED [ 58%] -tests/test_stats.py::test_sum[zarr.Array-float32-1d-all-bool] PASSED [ 58%] -tests/test_stats.py::test_sum_to_int[zarr.Array-1d-all] PASSED [ 58%] -tests/test_stats.py::test_min_max[zarr.Array-1d-all-min] PASSED [ 58%] -tests/test_stats.py::test_min_max[zarr.Array-1d-all-max] PASSED [ 58%] -tests/test_stats.py::test_mean[zarr.Array-1d-all-float32] PASSED [ 58%] -tests/test_stats.py::test_mean[zarr.Array-1d-all-float64] PASSED [ 58%] -tests/test_stats.py::test_mean[zarr.Array-1d-all-int32] PASSED [ 58%] -tests/test_stats.py::test_mean[zarr.Array-1d-all-bool] PASSED [ 58%] -tests/test_stats.py::test_ndim_error[zarr.Array-1d-ax0-sum] PASSED [ 58%] -tests/test_stats.py::test_ndim_error[zarr.Array-1d-ax0-min] PASSED [ 58%] -tests/test_stats.py::test_ndim_error[zarr.Array-1d-ax0-max] PASSED [ 58%] -tests/test_stats.py::test_ndim_error[zarr.Array-1d-ax0-mean] PASSED [ 58%] -tests/test_stats.py::test_ndim_error[zarr.Array-1d-ax0-mean_var] PASSED [ 58%] -tests/test_stats.py::test_ndim_error[zarr.Array-1d-ax0-is_constant] PASSED [ 58%] -tests/test_stats.py::test_ndim_error[zarr.Array-2d-ax3-sum] PASSED [ 58%] -tests/test_stats.py::test_ndim_error[zarr.Array-2d-ax3-min] PASSED [ 58%] -tests/test_stats.py::test_ndim_error[zarr.Array-2d-ax3-max] PASSED [ 58%] -tests/test_stats.py::test_ndim_error[zarr.Array-2d-ax3-mean] PASSED [ 58%] -tests/test_stats.py::test_ndim_error[zarr.Array-2d-ax3-mean_var] PASSED [ 58%] -tests/test_stats.py::test_ndim_error[zarr.Array-2d-ax3-is_constant] PASSED [ 58%] -tests/test_stats.py::test_ndim_error[zarr.Array-2d-axneg-sum] PASSED [ 58%] -tests/test_stats.py::test_ndim_error[zarr.Array-2d-axneg-min] PASSED [ 58%] -tests/test_stats.py::test_ndim_error[zarr.Array-2d-axneg-max] PASSED [ 58%] -tests/test_stats.py::test_ndim_error[zarr.Array-2d-axneg-mean] PASSED [ 58%] -tests/test_stats.py::test_ndim_error[zarr.Array-2d-axneg-mean_var] PASSED [ 58%] -tests/test_stats.py::test_ndim_error[zarr.Array-2d-axneg-is_constant] PASSED [ 58%] -tests/test_test_utils.py::test_conv[zarr.Array-float32] PASSED [ 58%] -tests/test_test_utils.py::test_conv[zarr.Array-float64] PASSED [ 58%] -tests/test_test_utils.py::test_conv_other[zarr.Array-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 58%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 58%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-dask.array.Array[scipy.sparse.csc_array]] SKIPPED [ 58%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-dask.array.Array[scipy.sparse.csc_array]] SKIPPED [ 59%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-dask.array.Array[scipy.sparse.csc_array]] SKIPPED [ 59%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-dask.array.Array[scipy.sparse.csc_array]] SKIPPED [ 59%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-dask.array.Array[scipy.sparse.csc_array]] SKIPPED [ 59%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-dask.array.Array[scipy.sparse.csc_array]] SKIPPED [ 59%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-dask.array.Array[cupy.ndarray]] SKIPPED [ 59%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-dask.array.Array[numpy.ndarray]] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 59%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-scipy.sparse.csc_matrix] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 59%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-scipy.sparse.csr_matrix] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-scipy.sparse.csc_array] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-scipy.sparse.csr_array] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-cupy.ndarray] SKIPPED [ 59%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-numpy.ndarray] PASSED [ 59%] -tests/test_test_utils.py::test_conv[anndata.abc.CSRDataset[h5py.Dataset]-float32] PASSED [ 59%] -tests/test_test_utils.py::test_conv[anndata.abc.CSRDataset[h5py.Dataset]-float64] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[zarr.Array-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 59%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-dask.array.Array[scipy.sparse.csr_matrix]] SKIPPED [ 59%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-dask.array.Array[scipy.sparse.csr_matrix]] SKIPPED [ 60%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-dask.array.Array[scipy.sparse.csr_matrix]] SKIPPED [ 60%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-dask.array.Array[scipy.sparse.csr_matrix]] SKIPPED [ 60%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-dask.array.Array[scipy.sparse.csr_matrix]] SKIPPED [ 60%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-dask.array.Array[scipy.sparse.csr_matrix]] SKIPPED [ 60%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 60%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 60%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 60%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-dask.array.Array[cupy.ndarray]] SKIPPED [ 60%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-dask.array.Array[numpy.ndarray]] PASSED [ 60%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 60%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-scipy.sparse.csc_matrix] PASSED [ 60%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 60%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-scipy.sparse.csr_matrix] PASSED [ 60%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-scipy.sparse.csc_array] PASSED [ 60%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-scipy.sparse.csr_array] PASSED [ 60%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-cupy.ndarray] SKIPPED [ 60%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-numpy.ndarray] PASSED [ 60%] -tests/test_test_utils.py::test_conv[anndata.abc.CSCDataset[h5py.Dataset]-float32] PASSED [ 60%] -tests/test_test_utils.py::test_conv[anndata.abc.CSCDataset[h5py.Dataset]-float64] PASSED [ 60%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 60%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 60%] -tests/test_test_utils.py::test_conv_other[zarr.Array-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 60%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 61%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 61%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 61%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-dask.array.Array[cupy.ndarray]] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-dask.array.Array[numpy.ndarray]] PASSED [ 61%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-scipy.sparse.csc_matrix] PASSED [ 61%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-scipy.sparse.csr_matrix] PASSED [ 61%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-scipy.sparse.csc_array] PASSED [ 61%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-scipy.sparse.csr_array] PASSED [ 61%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-cupy.ndarray] SKIPPED [ 61%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-numpy.ndarray] PASSED [ 61%] -tests/test_test_utils.py::test_conv[anndata.abc.CSRDataset[zarr.Array]-float32] PASSED [ 61%] -tests/test_test_utils.py::test_conv[anndata.abc.CSRDataset[zarr.Array]-float64] PASSED [ 61%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[zarr.Array-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-dask.array.Array[scipy.sparse.csc_matrix]] SKIPPED [ 62%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-dask.array.Array[scipy.sparse.csc_matrix]] SKIPPED [ 62%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-dask.array.Array[scipy.sparse.csc_matrix]] SKIPPED [ 62%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-dask.array.Array[scipy.sparse.csc_matrix]] SKIPPED [ 62%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-dask.array.Array[scipy.sparse.csc_matrix]] SKIPPED [ 62%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-dask.array.Array[scipy.sparse.csc_matrix]] SKIPPED [ 62%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 62%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-dask.array.Array[scipy.sparse.csc_array]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-dask.array.Array[scipy.sparse.csr_array]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-dask.array.Array[cupy.ndarray]] SKIPPED [ 62%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-dask.array.Array[numpy.ndarray]] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-cupyx.scipy.sparse.csc_matrix] SKIPPED [ 62%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-scipy.sparse.csc_matrix] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-cupyx.scipy.sparse.csr_matrix] SKIPPED [ 62%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-scipy.sparse.csr_matrix] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-scipy.sparse.csc_array] PASSED [ 62%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-scipy.sparse.csr_array] PASSED [ 63%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-cupy.ndarray] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-numpy.ndarray] PASSED [ 63%] -tests/test_test_utils.py::test_conv[anndata.abc.CSCDataset[zarr.Array]-float32] PASSED [ 63%] -tests/test_test_utils.py::test_conv[anndata.abc.CSCDataset[zarr.Array]-float64] PASSED [ 63%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[zarr.Array-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 63%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-h5py.Dataset] PASSED [ 63%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-h5py.Dataset] PASSED [ 63%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-h5py.Dataset] PASSED [ 63%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-h5py.Dataset] PASSED [ 63%] -tests/test_test_utils.py::test_conv_other[zarr.Array-h5py.Dataset] PASSED [ 63%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-h5py.Dataset] PASSED [ 63%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-h5py.Dataset] SKIPPED [ 64%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-h5py.Dataset] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-h5py.Dataset] SKIPPED [ 64%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-h5py.Dataset] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-h5py.Dataset] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-h5py.Dataset] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-h5py.Dataset] SKIPPED [ 64%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-h5py.Dataset] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-h5py.Dataset] SKIPPED [ 64%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-h5py.Dataset] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-h5py.Dataset] SKIPPED [ 64%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-h5py.Dataset] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-h5py.Dataset] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-h5py.Dataset] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-h5py.Dataset] SKIPPED [ 64%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-h5py.Dataset] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-zarr.Array] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-zarr.Array] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-zarr.Array] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-zarr.Array] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[zarr.Array-zarr.Array] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-zarr.Array] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-zarr.Array] SKIPPED [ 64%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-zarr.Array] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-zarr.Array] SKIPPED [ 64%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-zarr.Array] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-zarr.Array] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-zarr.Array] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-zarr.Array] SKIPPED [ 64%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-zarr.Array] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-zarr.Array] SKIPPED [ 64%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-zarr.Array] PASSED [ 64%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-zarr.Array] SKIPPED [ 64%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-zarr.Array] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-zarr.Array] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-zarr.Array] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-zarr.Array] SKIPPED [ 65%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-zarr.Array] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[zarr.Array-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-anndata.abc.CSRDataset[h5py.Dataset]] SKIPPED [ 65%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-anndata.abc.CSRDataset[h5py.Dataset]] SKIPPED [ 65%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-anndata.abc.CSRDataset[h5py.Dataset]] SKIPPED [ 65%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-anndata.abc.CSRDataset[h5py.Dataset]] SKIPPED [ 65%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-anndata.abc.CSRDataset[h5py.Dataset]] SKIPPED [ 65%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-anndata.abc.CSRDataset[h5py.Dataset]] SKIPPED [ 65%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[zarr.Array-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 65%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-anndata.abc.CSCDataset[h5py.Dataset]] SKIPPED [ 66%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-anndata.abc.CSCDataset[h5py.Dataset]] SKIPPED [ 66%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-anndata.abc.CSCDataset[h5py.Dataset]] SKIPPED [ 66%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-anndata.abc.CSCDataset[h5py.Dataset]] SKIPPED [ 66%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-anndata.abc.CSCDataset[h5py.Dataset]] SKIPPED [ 66%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-anndata.abc.CSCDataset[h5py.Dataset]] SKIPPED [ 66%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[zarr.Array-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-anndata.abc.CSRDataset[zarr.Array]] SKIPPED [ 66%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-anndata.abc.CSRDataset[zarr.Array]] SKIPPED [ 66%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-anndata.abc.CSRDataset[zarr.Array]] SKIPPED [ 66%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-anndata.abc.CSRDataset[zarr.Array]] SKIPPED [ 66%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 66%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-anndata.abc.CSRDataset[zarr.Array]] SKIPPED [ 66%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-anndata.abc.CSRDataset[zarr.Array]] SKIPPED [ 67%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-anndata.abc.CSRDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[zarr.Array]-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[zarr.Array]-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSCDataset[h5py.Dataset]-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_other[anndata.abc.CSRDataset[h5py.Dataset]-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_other[zarr.Array-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_other[h5py.Dataset-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-anndata.abc.CSCDataset[zarr.Array]] SKIPPED [ 67%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_matrix]-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-anndata.abc.CSCDataset[zarr.Array]] SKIPPED [ 67%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_matrix]-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csc_array]-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[scipy.sparse.csr_array]-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[cupy.ndarray]-anndata.abc.CSCDataset[zarr.Array]] SKIPPED [ 67%] -tests/test_test_utils.py::test_conv_other[dask.array.Array[numpy.ndarray]-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csc_matrix-anndata.abc.CSCDataset[zarr.Array]] SKIPPED [ 67%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_matrix-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_other[cupyx.scipy.sparse.csr_matrix-anndata.abc.CSCDataset[zarr.Array]] SKIPPED [ 67%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_matrix-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csc_array-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_other[scipy.sparse.csr_array-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_other[cupy.ndarray-anndata.abc.CSCDataset[zarr.Array]] SKIPPED [ 67%] -tests/test_test_utils.py::test_conv_other[numpy.ndarray-anndata.abc.CSCDataset[zarr.Array]] PASSED [ 67%] -tests/test_test_utils.py::test_conv_extra[scipy.sparse.csc_matrix-scipy.sparse.coo_matrix] PASSED [ 67%] -tests/test_test_utils.py::test_conv_extra[scipy.sparse.csr_matrix-scipy.sparse.coo_matrix] PASSED [ 67%] -tests/test_test_utils.py::test_conv_extra[scipy.sparse.csc_array-scipy.sparse.coo_matrix] PASSED [ 67%] -tests/test_test_utils.py::test_conv_extra[scipy.sparse.csr_array-scipy.sparse.coo_matrix] PASSED [ 67%] -tests/test_test_utils.py::test_conv_extra[numpy.ndarray-scipy.sparse.coo_matrix] PASSED [ 67%] -tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_matrix-K-to_cpu_memory] PASSED [ 67%] -tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_matrix-K-not_to_cpu_memory] PASSED [ 68%] -tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_matrix-C-to_cpu_memory] PASSED [ 68%] -tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_matrix-C-not_to_cpu_memory] PASSED [ 68%] -tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_matrix-F-to_cpu_memory] PASSED [ 68%] -tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_matrix-F-not_to_cpu_memory] PASSED [ 68%] -tests/test_test_utils.py::test_conv_extra[scipy.sparse.csc_matrix-scipy.sparse.coo_array] PASSED [ 68%] -tests/test_test_utils.py::test_conv_extra[scipy.sparse.csr_matrix-scipy.sparse.coo_array] PASSED [ 68%] -tests/test_test_utils.py::test_conv_extra[scipy.sparse.csc_array-scipy.sparse.coo_array] PASSED [ 68%] -tests/test_test_utils.py::test_conv_extra[scipy.sparse.csr_array-scipy.sparse.coo_array] PASSED [ 68%] -tests/test_test_utils.py::test_conv_extra[numpy.ndarray-scipy.sparse.coo_array] PASSED [ 68%] -tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_array-K-to_cpu_memory] PASSED [ 68%] -tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_array-K-not_to_cpu_memory] PASSED [ 68%] -tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_array-C-to_cpu_memory] PASSED [ 68%] -tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_array-C-not_to_cpu_memory] PASSED [ 68%] -tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_array-F-to_cpu_memory] PASSED [ 68%] -tests/test_to_dense.py::test_to_dense_extra[scipy.sparse.coo_array-F-not_to_cpu_memory] PASSED [ 68%] -tests/test_test_utils.py::test_conv_extra[scipy.sparse.csc_matrix-cupyx.scipy.sparse.coo_matrix] SKIPPED [ 68%] -tests/test_test_utils.py::test_conv_extra[scipy.sparse.csr_matrix-cupyx.scipy.sparse.coo_matrix] SKIPPED [ 68%] -tests/test_test_utils.py::test_conv_extra[scipy.sparse.csc_array-cupyx.scipy.sparse.coo_matrix] SKIPPED [ 68%] -tests/test_test_utils.py::test_conv_extra[scipy.sparse.csr_array-cupyx.scipy.sparse.coo_matrix] SKIPPED [ 68%] -tests/test_test_utils.py::test_conv_extra[numpy.ndarray-cupyx.scipy.sparse.coo_matrix] SKIPPED [ 68%] -tests/test_to_dense.py::test_to_dense_extra[cupyx.scipy.sparse.coo_matrix-K-to_cpu_memory] SKIPPED [ 68%] -tests/test_to_dense.py::test_to_dense_extra[cupyx.scipy.sparse.coo_matrix-K-not_to_cpu_memory] SKIPPED [ 68%] -tests/test_to_dense.py::test_to_dense_extra[cupyx.scipy.sparse.coo_matrix-C-to_cpu_memory] SKIPPED [ 68%] -tests/test_to_dense.py::test_to_dense_extra[cupyx.scipy.sparse.coo_matrix-C-not_to_cpu_memory] SKIPPED [ 68%] -tests/test_to_dense.py::test_to_dense_extra[cupyx.scipy.sparse.coo_matrix-F-to_cpu_memory] SKIPPED [ 68%] -tests/test_to_dense.py::test_to_dense_extra[cupyx.scipy.sparse.coo_matrix-F-not_to_cpu_memory] SKIPPED [ 68%] -tests/test_test_utils.py::test_array_types[anndata.abc.CSCDataset[zarr.Array]] PASSED [ 68%] -tests/test_test_utils.py::test_session_scoped_array[anndata.abc.CSCDataset[zarr.Array]] PASSED [ 68%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[zarr.Array]-K-to_cpu_memory] PASSED [ 68%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[zarr.Array]-K-not_to_cpu_memory] PASSED [ 68%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[zarr.Array]-C-to_cpu_memory] PASSED [ 68%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[zarr.Array]-C-not_to_cpu_memory] PASSED [ 68%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[zarr.Array]-F-to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[zarr.Array]-F-not_to_cpu_memory] PASSED [ 69%] -tests/test_test_utils.py::test_array_types[anndata.abc.CSRDataset[zarr.Array]] PASSED [ 69%] -tests/test_test_utils.py::test_session_scoped_array[anndata.abc.CSRDataset[zarr.Array]] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[zarr.Array]-K-to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[zarr.Array]-K-not_to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[zarr.Array]-C-to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[zarr.Array]-C-not_to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[zarr.Array]-F-to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[zarr.Array]-F-not_to_cpu_memory] PASSED [ 69%] -tests/test_test_utils.py::test_array_types[anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 69%] -tests/test_test_utils.py::test_session_scoped_array[anndata.abc.CSCDataset[h5py.Dataset]] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[h5py.Dataset]-K-to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[h5py.Dataset]-K-not_to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[h5py.Dataset]-C-to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[h5py.Dataset]-C-not_to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[h5py.Dataset]-F-to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSCDataset[h5py.Dataset]-F-not_to_cpu_memory] PASSED [ 69%] -tests/test_test_utils.py::test_array_types[anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 69%] -tests/test_test_utils.py::test_session_scoped_array[anndata.abc.CSRDataset[h5py.Dataset]] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[h5py.Dataset]-K-to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[h5py.Dataset]-K-not_to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[h5py.Dataset]-C-to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[h5py.Dataset]-C-not_to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[h5py.Dataset]-F-to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[anndata.abc.CSRDataset[h5py.Dataset]-F-not_to_cpu_memory] PASSED [ 69%] -tests/test_test_utils.py::test_array_types[zarr.Array] PASSED [ 69%] -tests/test_test_utils.py::test_session_scoped_array[zarr.Array] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[zarr.Array-K-to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[zarr.Array-K-not_to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[zarr.Array-C-to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[zarr.Array-C-not_to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[zarr.Array-F-to_cpu_memory] PASSED [ 69%] -tests/test_to_dense.py::test_to_dense[zarr.Array-F-not_to_cpu_memory] PASSED [ 70%] -tests/test_test_utils.py::test_array_types[h5py.Dataset] PASSED [ 70%] -tests/test_test_utils.py::test_session_scoped_array[h5py.Dataset] PASSED [ 70%] -tests/test_to_dense.py::test_to_dense[h5py.Dataset-K-to_cpu_memory] PASSED [ 70%] -tests/test_to_dense.py::test_to_dense[h5py.Dataset-K-not_to_cpu_memory] PASSED [ 70%] -tests/test_to_dense.py::test_to_dense[h5py.Dataset-C-to_cpu_memory] PASSED [ 70%] -tests/test_to_dense.py::test_to_dense[h5py.Dataset-C-not_to_cpu_memory] PASSED [ 70%] -tests/test_to_dense.py::test_to_dense[h5py.Dataset-F-to_cpu_memory] PASSED [ 70%] -tests/test_to_dense.py::test_to_dense[h5py.Dataset-F-not_to_cpu_memory] PASSED [ 70%] -tests/test_test_utils.py::test_array_types[dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 70%] -tests/test_test_utils.py::test_session_scoped_array[dask.array.Array[cupyx.scipy.sparse.csc_matrix]] SKIPPED [ 70%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-K-to_cpu_memory] SKIPPED [ 70%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-K-not_to_cpu_memory] SKIPPED [ 70%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-C-to_cpu_memory] SKIPPED [ 70%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-C-not_to_cpu_memory] SKIPPED [ 70%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-F-to_cpu_memory] SKIPPED [ 70%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csc_matrix]-F-not_to_cpu_memory] SKIPPED [ 70%] -tests/test_test_utils.py::test_array_types[dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 70%] -tests/test_test_utils.py::test_session_scoped_array[dask.array.Array[scipy.sparse.csc_matrix]] PASSED [ 70%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_matrix]-K-to_cpu_memory] PASSED [ 70%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_matrix]-K-not_to_cpu_memory] PASSED [ 70%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_matrix]-C-to_cpu_memory] PASSED [ 70%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_matrix]-C-not_to_cpu_memory] PASSED [ 70%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_matrix]-F-to_cpu_memory] PASSED [ 70%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_matrix]-F-not_to_cpu_memory] PASSED [ 70%] -tests/test_test_utils.py::test_array_types[dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 70%] -tests/test_test_utils.py::test_session_scoped_array[dask.array.Array[cupyx.scipy.sparse.csr_matrix]] SKIPPED [ 70%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-K-to_cpu_memory] SKIPPED [ 70%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-K-not_to_cpu_memory] SKIPPED [ 70%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-C-to_cpu_memory] SKIPPED [ 70%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-C-not_to_cpu_memory] SKIPPED [ 70%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-F-to_cpu_memory] SKIPPED [ 70%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[cupyx.scipy.sparse.csr_matrix]-F-not_to_cpu_memory] SKIPPED [ 70%] -tests/test_test_utils.py::test_array_types[dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 71%] -tests/test_test_utils.py::test_session_scoped_array[dask.array.Array[scipy.sparse.csr_matrix]] PASSED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_matrix]-K-to_cpu_memory] PASSED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_matrix]-K-not_to_cpu_memory] PASSED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_matrix]-C-to_cpu_memory] PASSED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_matrix]-C-not_to_cpu_memory] PASSED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_matrix]-F-to_cpu_memory] PASSED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_matrix]-F-not_to_cpu_memory] PASSED [ 71%] -tests/test_test_utils.py::test_array_types[dask.array.Array[scipy.sparse.csc_array]] PASSED [ 71%] -tests/test_test_utils.py::test_session_scoped_array[dask.array.Array[scipy.sparse.csc_array]] PASSED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_array]-K-to_cpu_memory] PASSED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_array]-K-not_to_cpu_memory] PASSED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_array]-C-to_cpu_memory] PASSED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_array]-C-not_to_cpu_memory] PASSED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_array]-F-to_cpu_memory] PASSED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csc_array]-F-not_to_cpu_memory] PASSED [ 71%] -tests/test_test_utils.py::test_array_types[dask.array.Array[scipy.sparse.csr_array]] PASSED [ 71%] -tests/test_test_utils.py::test_session_scoped_array[dask.array.Array[scipy.sparse.csr_array]] PASSED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_array]-K-to_cpu_memory] PASSED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_array]-K-not_to_cpu_memory] PASSED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_array]-C-to_cpu_memory] PASSED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_array]-C-not_to_cpu_memory] PASSED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_array]-F-to_cpu_memory] PASSED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[scipy.sparse.csr_array]-F-not_to_cpu_memory] PASSED [ 71%] -tests/test_test_utils.py::test_array_types[dask.array.Array[cupy.ndarray]] SKIPPED [ 71%] -tests/test_test_utils.py::test_session_scoped_array[dask.array.Array[cupy.ndarray]] SKIPPED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[cupy.ndarray]-K-to_cpu_memory] SKIPPED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[cupy.ndarray]-K-not_to_cpu_memory] SKIPPED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[cupy.ndarray]-C-to_cpu_memory] SKIPPED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[cupy.ndarray]-C-not_to_cpu_memory] SKIPPED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[cupy.ndarray]-F-to_cpu_memory] SKIPPED [ 71%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[cupy.ndarray]-F-not_to_cpu_memory] SKIPPED [ 71%] -tests/test_test_utils.py::test_array_types[dask.array.Array[numpy.ndarray]] PASSED [ 71%] -tests/test_test_utils.py::test_session_scoped_array[dask.array.Array[numpy.ndarray]] PASSED [ 72%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[numpy.ndarray]-K-to_cpu_memory] PASSED [ 72%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[numpy.ndarray]-K-not_to_cpu_memory] PASSED [ 72%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[numpy.ndarray]-C-to_cpu_memory] PASSED [ 72%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[numpy.ndarray]-C-not_to_cpu_memory] PASSED [ 72%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[numpy.ndarray]-F-to_cpu_memory] PASSED [ 72%] -tests/test_to_dense.py::test_to_dense[dask.array.Array[numpy.ndarray]-F-not_to_cpu_memory] PASSED [ 72%] -tests/test_test_utils.py::test_array_types[cupyx.scipy.sparse.csc_matrix] SKIPPED [ 72%] -tests/test_test_utils.py::test_session_scoped_array[cupyx.scipy.sparse.csc_matrix] SKIPPED [ 72%] -tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csc_matrix-K-to_cpu_memory] SKIPPED [ 72%] -tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csc_matrix-K-not_to_cpu_memory] SKIPPED [ 72%] -tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csc_matrix-C-to_cpu_memory] SKIPPED [ 72%] -tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csc_matrix-C-not_to_cpu_memory] SKIPPED [ 72%] -tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csc_matrix-F-to_cpu_memory] SKIPPED [ 72%] -tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csc_matrix-F-not_to_cpu_memory] SKIPPED [ 72%] -tests/test_test_utils.py::test_array_types[scipy.sparse.csc_matrix] PASSED [ 72%] -tests/test_test_utils.py::test_session_scoped_array[scipy.sparse.csc_matrix] PASSED [ 72%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_matrix-K-to_cpu_memory] PASSED [ 72%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_matrix-K-not_to_cpu_memory] PASSED [ 72%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_matrix-C-to_cpu_memory] PASSED [ 72%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_matrix-C-not_to_cpu_memory] PASSED [ 72%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_matrix-F-to_cpu_memory] PASSED [ 72%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_matrix-F-not_to_cpu_memory] PASSED [ 72%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-ax0-float32] SKIPPED [ 72%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-ax0-float64] SKIPPED [ 72%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-ax0-int32] SKIPPED [ 72%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-ax0-bool] SKIPPED [ 72%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-all-float32] SKIPPED [ 72%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-all-float64] SKIPPED [ 72%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-all-int32] SKIPPED [ 72%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-2d-all-bool] SKIPPED [ 72%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-1d-all-float32] SKIPPED [ 72%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-1d-all-float64] SKIPPED [ 72%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-1d-all-int32] SKIPPED [ 73%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-None-1d-all-bool] SKIPPED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-ax0-float32] PASSED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-ax0-float64] PASSED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-ax0-int32] PASSED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-ax0-bool] PASSED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-ax0-float32] PASSED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-ax0-float64] PASSED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-ax0-int32] PASSED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-ax0-bool] PASSED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-ax0-float32] PASSED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-ax0-float64] PASSED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-ax0-int32] PASSED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-ax0-bool] PASSED [ 73%] -tests/test_stats.py::test_sum[cupy.ndarray-None-2d-ax0-float32] SKIPPED [ 73%] -tests/test_stats.py::test_sum[cupy.ndarray-None-2d-ax0-float64] SKIPPED [ 73%] -tests/test_stats.py::test_sum[cupy.ndarray-None-2d-ax0-int32] SKIPPED [ 73%] -tests/test_stats.py::test_sum[cupy.ndarray-None-2d-ax0-bool] SKIPPED [ 73%] -tests/test_stats.py::test_sum[numpy.ndarray-None-2d-ax0-float32] PASSED [ 73%] -tests/test_stats.py::test_sum[numpy.ndarray-None-2d-ax0-float64] PASSED [ 73%] -tests/test_stats.py::test_sum[numpy.ndarray-None-2d-ax0-int32] PASSED [ 73%] -tests/test_stats.py::test_sum[numpy.ndarray-None-2d-ax0-bool] PASSED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-all-float32] PASSED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-all-float64] PASSED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-all-int32] PASSED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-2d-all-bool] PASSED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-1d-all-float32] SKIPPED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-1d-all-float64] SKIPPED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-1d-all-int32] SKIPPED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-None-1d-all-bool] SKIPPED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-all-float32] PASSED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-all-float64] PASSED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-all-int32] PASSED [ 73%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-2d-all-bool] PASSED [ 74%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-all-float32] PASSED [ 74%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-all-float64] PASSED [ 74%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-all-int32] PASSED [ 74%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-2d-all-bool] PASSED [ 74%] -tests/test_stats.py::test_sum[cupy.ndarray-None-2d-all-float32] SKIPPED [ 74%] -tests/test_stats.py::test_sum[cupy.ndarray-None-2d-all-float64] SKIPPED [ 74%] -tests/test_stats.py::test_sum[cupy.ndarray-None-2d-all-int32] SKIPPED [ 74%] -tests/test_stats.py::test_sum[cupy.ndarray-None-2d-all-bool] SKIPPED [ 74%] -tests/test_stats.py::test_sum[numpy.ndarray-None-2d-all-float32] PASSED [ 74%] -tests/test_stats.py::test_sum[numpy.ndarray-None-2d-all-float64] PASSED [ 74%] -tests/test_stats.py::test_sum[numpy.ndarray-None-2d-all-int32] PASSED [ 74%] -tests/test_stats.py::test_sum[numpy.ndarray-None-2d-all-bool] PASSED [ 74%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-1d-all-float32] SKIPPED [ 74%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-1d-all-float64] SKIPPED [ 74%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-1d-all-int32] SKIPPED [ 74%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-None-1d-all-bool] SKIPPED [ 74%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-1d-all-float32] PASSED [ 74%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-1d-all-float64] PASSED [ 74%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-1d-all-int32] PASSED [ 74%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-None-1d-all-bool] PASSED [ 74%] -tests/test_stats.py::test_sum[cupy.ndarray-None-1d-all-float32] SKIPPED [ 74%] -tests/test_stats.py::test_sum[cupy.ndarray-None-1d-all-float64] SKIPPED [ 74%] -tests/test_stats.py::test_sum[cupy.ndarray-None-1d-all-int32] SKIPPED [ 74%] -tests/test_stats.py::test_sum[cupy.ndarray-None-1d-all-bool] SKIPPED [ 74%] -tests/test_stats.py::test_sum[numpy.ndarray-None-1d-all-float32] PASSED [ 74%] -tests/test_stats.py::test_sum[numpy.ndarray-None-1d-all-float64] PASSED [ 74%] -tests/test_stats.py::test_sum[numpy.ndarray-None-1d-all-int32] PASSED [ 74%] -tests/test_stats.py::test_sum[numpy.ndarray-None-1d-all-bool] PASSED [ 74%] -tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csr_matrix-2d-ax1-min] SKIPPED [ 74%] -tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csr_matrix-2d-ax1-max] SKIPPED [ 74%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-ax1-float32] SKIPPED [ 74%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-ax1-float64] SKIPPED [ 75%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-ax1-int32] SKIPPED [ 75%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-ax1-bool] SKIPPED [ 75%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-ax1-float32] SKIPPED [ 75%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-ax1-float64] SKIPPED [ 75%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-ax1-int32] SKIPPED [ 75%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-ax1-bool] SKIPPED [ 75%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-ax1-float32] PASSED [ 75%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-ax1-float64] PASSED [ 75%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-ax1-int32] PASSED [ 75%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-ax1-bool] PASSED [ 75%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-ax1-float32] PASSED [ 75%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-ax1-float64] PASSED [ 75%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-ax1-int32] PASSED [ 75%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-ax1-bool] PASSED [ 75%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-ax1-float32] PASSED [ 75%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-ax1-float64] PASSED [ 75%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-ax1-int32] PASSED [ 75%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-ax1-bool] PASSED [ 75%] -tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-ax1-float32] SKIPPED [ 75%] -tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-ax1-float64] SKIPPED [ 75%] -tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-ax1-int32] SKIPPED [ 75%] -tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-ax1-bool] SKIPPED [ 75%] -tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-ax1-float32] PASSED [ 75%] -tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-ax1-float64] PASSED [ 75%] -tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-ax1-int32] PASSED [ 75%] -tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-ax1-bool] PASSED [ 75%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-ax1-float32] PASSED [ 75%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-ax1-float64] PASSED [ 75%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-ax1-int32] PASSED [ 75%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float64-2d-ax1-bool] PASSED [ 75%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-ax1-float32] PASSED [ 75%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-ax1-float64] PASSED [ 75%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-ax1-int32] PASSED [ 76%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-ax1-bool] PASSED [ 76%] -tests/test_stats.py::test_sum_to_int[scipy.sparse.csr_matrix-2d-ax1] PASSED [ 76%] -tests/test_stats.py::test_min_max[scipy.sparse.csr_matrix-2d-ax1-min] PASSED [ 76%] -tests/test_stats.py::test_min_max[scipy.sparse.csr_matrix-2d-ax1-max] PASSED [ 76%] -tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-ax1-float32] PASSED [ 76%] -tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-ax1-float64] PASSED [ 76%] -tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-ax1-int32] PASSED [ 76%] -tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-ax1-bool] PASSED [ 76%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-ax1-float32] PASSED [ 76%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-ax1-float64] PASSED [ 76%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-ax1-int32] PASSED [ 76%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-ax1-bool] PASSED [ 76%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-ax1-float32] PASSED [ 76%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-ax1-float64] PASSED [ 76%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-ax1-int32] PASSED [ 76%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-ax1-bool] PASSED [ 76%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-ax1-float32] PASSED [ 76%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-ax1-float64] PASSED [ 76%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-ax1-int32] PASSED [ 76%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-ax1-bool] PASSED [ 76%] -tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-ax1-float32] SKIPPED [ 76%] -tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-ax1-float64] SKIPPED [ 76%] -tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-ax1-int32] SKIPPED [ 76%] -tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-ax1-bool] SKIPPED [ 76%] -tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-ax1-float32] PASSED [ 76%] -tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-ax1-float64] PASSED [ 76%] -tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-ax1-int32] PASSED [ 76%] -tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-ax1-bool] PASSED [ 76%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-ax1-float32] PASSED [ 76%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-ax1-float64] PASSED [ 76%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-ax1-int32] PASSED [ 76%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-ax1-bool] PASSED [ 76%] -tests/test_stats.py::test_sum_to_int[scipy.sparse.csc_array-2d-ax1] PASSED [ 77%] -tests/test_stats.py::test_min_max[scipy.sparse.csc_array-2d-ax1-min] PASSED [ 77%] -tests/test_stats.py::test_min_max[scipy.sparse.csc_array-2d-ax1-max] PASSED [ 77%] -tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-ax1-float32] PASSED [ 77%] -tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-ax1-float64] PASSED [ 77%] -tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-ax1-int32] PASSED [ 77%] -tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-ax1-bool] PASSED [ 77%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-ax1-float32] PASSED [ 77%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-ax1-float64] PASSED [ 77%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-ax1-int32] PASSED [ 77%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-ax1-bool] PASSED [ 77%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float32-sum] PASSED [ 77%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float32-min] PASSED [ 77%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float32-max] PASSED [ 77%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float32-mean] PASSED [ 77%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float32-mean_var] PASSED [ 77%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float32-is_constant] PASSED [ 77%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float64-sum] PASSED [ 77%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float64-min] PASSED [ 77%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float64-max] PASSED [ 77%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float64-mean] PASSED [ 77%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float64-mean_var] PASSED [ 77%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-float64-is_constant] PASSED [ 77%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-int32-sum] PASSED [ 77%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-int32-min] PASSED [ 77%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-int32-max] PASSED [ 77%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-int32-mean] PASSED [ 77%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-int32-mean_var] PASSED [ 77%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax1-int32-is_constant] PASSED [ 77%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-ax1-float32] PASSED [ 77%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-ax1-float64] PASSED [ 77%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-ax1-int32] PASSED [ 77%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-ax1-bool] PASSED [ 77%] -tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-ax1-float32] SKIPPED [ 78%] -tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-ax1-float64] SKIPPED [ 78%] -tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-ax1-int32] SKIPPED [ 78%] -tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-ax1-bool] SKIPPED [ 78%] -tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-ax1-float32] PASSED [ 78%] -tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-ax1-float64] PASSED [ 78%] -tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-ax1-int32] PASSED [ 78%] -tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-ax1-bool] PASSED [ 78%] -tests/test_stats.py::test_sum_to_int[scipy.sparse.csr_array-2d-ax1] PASSED [ 78%] -tests/test_stats.py::test_min_max[scipy.sparse.csr_array-2d-ax1-min] PASSED [ 78%] -tests/test_stats.py::test_min_max[scipy.sparse.csr_array-2d-ax1-max] PASSED [ 78%] -tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-ax1-float32] PASSED [ 78%] -tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-ax1-float64] PASSED [ 78%] -tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-ax1-int32] PASSED [ 78%] -tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-ax1-bool] PASSED [ 78%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-ax1-float32] PASSED [ 78%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-ax1-float64] PASSED [ 78%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-ax1-int32] PASSED [ 78%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-ax1-bool] PASSED [ 78%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float32-sum] PASSED [ 78%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float32-min] PASSED [ 78%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float32-max] PASSED [ 78%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float32-mean] PASSED [ 78%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float32-mean_var] PASSED [ 78%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float32-is_constant] PASSED [ 78%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float64-sum] PASSED [ 78%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float64-min] PASSED [ 78%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float64-max] PASSED [ 78%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float64-mean] PASSED [ 78%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float64-mean_var] PASSED [ 78%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-float64-is_constant] PASSED [ 78%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-int32-sum] PASSED [ 78%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-int32-min] PASSED [ 78%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-int32-max] PASSED [ 79%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-int32-mean] PASSED [ 79%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-int32-mean_var] PASSED [ 79%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax1-int32-is_constant] PASSED [ 79%] -tests/test_stats.py::test_min_max[cupy.ndarray-2d-ax1-min] SKIPPED (...) [ 79%] -tests/test_stats.py::test_min_max[cupy.ndarray-2d-ax1-max] SKIPPED (...) [ 79%] -tests/test_stats.py::test_mean[cupy.ndarray-2d-ax1-float32] SKIPPED [ 79%] -tests/test_stats.py::test_mean[cupy.ndarray-2d-ax1-float64] SKIPPED [ 79%] -tests/test_stats.py::test_mean[cupy.ndarray-2d-ax1-int32] SKIPPED (c...) [ 79%] -tests/test_stats.py::test_mean[cupy.ndarray-2d-ax1-bool] SKIPPED (cu...) [ 79%] -tests/test_stats.py::test_mean_var[cupy.ndarray-2d-ax1-float32] SKIPPED [ 79%] -tests/test_stats.py::test_mean_var[cupy.ndarray-2d-ax1-float64] SKIPPED [ 79%] -tests/test_stats.py::test_mean_var[cupy.ndarray-2d-ax1-int32] SKIPPED [ 79%] -tests/test_stats.py::test_mean_var[cupy.ndarray-2d-ax1-bool] SKIPPED [ 79%] -tests/test_stats.py::test_sum_to_int[numpy.ndarray-2d-ax1] PASSED [ 79%] -tests/test_stats.py::test_min_max[numpy.ndarray-2d-ax1-min] PASSED [ 79%] -tests/test_stats.py::test_min_max[numpy.ndarray-2d-ax1-max] PASSED [ 79%] -tests/test_stats.py::test_mean[numpy.ndarray-2d-ax1-float32] PASSED [ 79%] -tests/test_stats.py::test_mean[numpy.ndarray-2d-ax1-float64] PASSED [ 79%] -tests/test_stats.py::test_mean[numpy.ndarray-2d-ax1-int32] PASSED [ 79%] -tests/test_stats.py::test_mean[numpy.ndarray-2d-ax1-bool] PASSED [ 79%] -tests/test_stats.py::test_mean_var[numpy.ndarray-2d-ax1-float32] PASSED [ 79%] -tests/test_stats.py::test_mean_var[numpy.ndarray-2d-ax1-float64] PASSED [ 79%] -tests/test_stats.py::test_mean_var[numpy.ndarray-2d-ax1-int32] PASSED [ 79%] -tests/test_stats.py::test_mean_var[numpy.ndarray-2d-ax1-bool] PASSED [ 79%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float32-sum] PASSED [ 79%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float32-min] PASSED [ 79%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float32-max] PASSED [ 79%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float32-mean] PASSED [ 79%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float32-mean_var] PASSED [ 79%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float32-is_constant] PASSED [ 79%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float64-sum] PASSED [ 79%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float64-min] PASSED [ 79%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float64-max] PASSED [ 80%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float64-mean] PASSED [ 80%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float64-mean_var] PASSED [ 80%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-float64-is_constant] PASSED [ 80%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-int32-sum] PASSED [ 80%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-int32-min] PASSED [ 80%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-int32-max] PASSED [ 80%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-int32-mean] PASSED [ 80%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-int32-mean_var] PASSED [ 80%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax1-int32-is_constant] PASSED [ 80%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-ax0-float32] SKIPPED [ 80%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-ax0-float64] SKIPPED [ 80%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-ax0-int32] SKIPPED [ 80%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-ax0-bool] SKIPPED [ 80%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-ax0-float32] SKIPPED [ 80%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-ax0-float64] SKIPPED [ 80%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-ax0-int32] SKIPPED [ 80%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-ax0-bool] SKIPPED [ 80%] -tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csr_matrix-2d-ax0-min] SKIPPED [ 80%] -tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csr_matrix-2d-ax0-max] SKIPPED [ 80%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-ax0-float32] SKIPPED [ 80%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-ax0-float64] SKIPPED [ 80%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-ax0-int32] SKIPPED [ 80%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-ax0-bool] SKIPPED [ 80%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-ax0-float32] SKIPPED [ 80%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-ax0-float64] SKIPPED [ 80%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-ax0-int32] SKIPPED [ 80%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-ax0-bool] SKIPPED [ 80%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-all-float32] SKIPPED [ 80%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-all-float64] SKIPPED [ 80%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-all-int32] SKIPPED [ 80%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-2d-all-bool] SKIPPED [ 80%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-1d-all-float32] SKIPPED [ 80%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-1d-all-float64] SKIPPED [ 81%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-1d-all-int32] SKIPPED [ 81%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float64-1d-all-bool] SKIPPED [ 81%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-all-float32] SKIPPED [ 81%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-all-float64] SKIPPED [ 81%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-all-int32] SKIPPED [ 81%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-2d-all-bool] SKIPPED [ 81%] -tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csr_matrix-2d-all-min] SKIPPED [ 81%] -tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csr_matrix-2d-all-max] SKIPPED [ 81%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-all-float32] SKIPPED [ 81%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-all-float64] SKIPPED [ 81%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-all-int32] SKIPPED [ 81%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-2d-all-bool] SKIPPED [ 81%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-all-float32] SKIPPED [ 81%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-all-float64] SKIPPED [ 81%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-all-int32] SKIPPED [ 81%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-2d-all-bool] SKIPPED [ 81%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-1d-all-float32] SKIPPED [ 81%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-1d-all-float64] SKIPPED [ 81%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-1d-all-int32] SKIPPED [ 81%] -tests/test_stats.py::test_sum[cupyx.scipy.sparse.csr_matrix-float32-1d-all-bool] SKIPPED [ 81%] -tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csr_matrix-1d-all-min] SKIPPED [ 81%] -tests/test_stats.py::test_min_max[cupyx.scipy.sparse.csr_matrix-1d-all-max] SKIPPED [ 81%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-1d-all-float32] SKIPPED [ 81%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-1d-all-float64] SKIPPED [ 81%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-1d-all-int32] SKIPPED [ 81%] -tests/test_stats.py::test_mean[cupyx.scipy.sparse.csr_matrix-1d-all-bool] SKIPPED [ 81%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-1d-all-float32] SKIPPED [ 81%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-1d-all-float64] SKIPPED [ 81%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-1d-all-int32] SKIPPED [ 81%] -tests/test_stats.py::test_mean_var[cupyx.scipy.sparse.csr_matrix-1d-all-bool] SKIPPED [ 81%] -tests/test_test_utils.py::test_conv[cupyx.scipy.sparse.csr_matrix-float32] SKIPPED [ 81%] -tests/test_test_utils.py::test_conv[cupyx.scipy.sparse.csr_matrix-float64] SKIPPED [ 81%] -tests/test_test_utils.py::test_array_types[cupyx.scipy.sparse.csr_matrix] SKIPPED [ 82%] -tests/test_test_utils.py::test_session_scoped_array[cupyx.scipy.sparse.csr_matrix] SKIPPED [ 82%] -tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csr_matrix-K-to_cpu_memory] SKIPPED [ 82%] -tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csr_matrix-K-not_to_cpu_memory] SKIPPED [ 82%] -tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csr_matrix-C-to_cpu_memory] SKIPPED [ 82%] -tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csr_matrix-C-not_to_cpu_memory] SKIPPED [ 82%] -tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csr_matrix-F-to_cpu_memory] SKIPPED [ 82%] -tests/test_to_dense.py::test_to_dense[cupyx.scipy.sparse.csr_matrix-F-not_to_cpu_memory] SKIPPED [ 82%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-all-float32] PASSED [ 82%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-all-float64] PASSED [ 82%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-all-int32] PASSED [ 82%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-2d-all-bool] PASSED [ 82%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-1d-all-float32] SKIPPED [ 82%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-1d-all-float64] SKIPPED [ 82%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-1d-all-int32] SKIPPED [ 82%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-int64-1d-all-bool] SKIPPED [ 82%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-all-float32] PASSED [ 82%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-all-float64] PASSED [ 82%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-all-int32] PASSED [ 82%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-2d-all-bool] PASSED [ 82%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-all-float32] PASSED [ 82%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-all-float64] PASSED [ 82%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-all-int32] PASSED [ 82%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-2d-all-bool] PASSED [ 82%] -tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-all-float32] SKIPPED [ 82%] -tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-all-float64] SKIPPED [ 82%] -tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-all-int32] SKIPPED [ 82%] -tests/test_stats.py::test_sum[cupy.ndarray-int64-2d-all-bool] SKIPPED [ 82%] -tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-all-float32] PASSED [ 82%] -tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-all-float64] PASSED [ 82%] -tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-all-int32] PASSED [ 82%] -tests/test_stats.py::test_sum[numpy.ndarray-int64-2d-all-bool] PASSED [ 82%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-1d-all-float32] SKIPPED [ 82%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-1d-all-float64] SKIPPED [ 83%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-1d-all-int32] SKIPPED [ 83%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-int64-1d-all-bool] SKIPPED [ 83%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-1d-all-float32] PASSED [ 83%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-1d-all-float64] PASSED [ 83%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-1d-all-int32] PASSED [ 83%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-int64-1d-all-bool] PASSED [ 83%] -tests/test_stats.py::test_sum[cupy.ndarray-int64-1d-all-float32] SKIPPED [ 83%] -tests/test_stats.py::test_sum[cupy.ndarray-int64-1d-all-float64] SKIPPED [ 83%] -tests/test_stats.py::test_sum[cupy.ndarray-int64-1d-all-int32] SKIPPED [ 83%] -tests/test_stats.py::test_sum[cupy.ndarray-int64-1d-all-bool] SKIPPED [ 83%] -tests/test_stats.py::test_sum[numpy.ndarray-int64-1d-all-float32] PASSED [ 83%] -tests/test_stats.py::test_sum[numpy.ndarray-int64-1d-all-float64] PASSED [ 83%] -tests/test_stats.py::test_sum[numpy.ndarray-int64-1d-all-int32] PASSED [ 83%] -tests/test_stats.py::test_sum[numpy.ndarray-int64-1d-all-bool] PASSED [ 83%] -tests/test_stats.py::test_sum_to_int[scipy.sparse.csr_matrix-2d-ax0] PASSED [ 83%] -tests/test_stats.py::test_min_max[scipy.sparse.csr_matrix-2d-ax0-min] PASSED [ 83%] -tests/test_stats.py::test_min_max[scipy.sparse.csr_matrix-2d-ax0-max] PASSED [ 83%] -tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-ax0-float32] PASSED [ 83%] -tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-ax0-float64] PASSED [ 83%] -tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-ax0-int32] PASSED [ 83%] -tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-ax0-bool] PASSED [ 83%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-ax0-float32] PASSED [ 83%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-ax0-float64] PASSED [ 83%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-ax0-int32] PASSED [ 83%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-ax0-bool] PASSED [ 83%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-ax0-float32] PASSED [ 83%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-ax0-float64] PASSED [ 83%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-ax0-int32] PASSED [ 83%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-2d-ax0-bool] PASSED [ 83%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-ax0-float32] PASSED [ 83%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-ax0-float64] PASSED [ 83%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-ax0-int32] PASSED [ 83%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-2d-ax0-bool] PASSED [ 84%] -tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-ax0-float32] SKIPPED [ 84%] -tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-ax0-float64] SKIPPED [ 84%] -tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-ax0-int32] SKIPPED [ 84%] -tests/test_stats.py::test_sum[cupy.ndarray-float64-2d-ax0-bool] SKIPPED [ 84%] -tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-ax0-float32] PASSED [ 84%] -tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-ax0-float64] PASSED [ 84%] -tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-ax0-int32] PASSED [ 84%] -tests/test_stats.py::test_sum[numpy.ndarray-float64-2d-ax0-bool] PASSED [ 84%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-ax0-float32] PASSED [ 84%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-ax0-float64] PASSED [ 84%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-ax0-int32] PASSED [ 84%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float32-2d-ax0-bool] PASSED [ 84%] -tests/test_stats.py::test_sum_to_int[scipy.sparse.csc_array-2d-ax0] PASSED [ 84%] -tests/test_stats.py::test_min_max[scipy.sparse.csc_array-2d-ax0-min] PASSED [ 84%] -tests/test_stats.py::test_min_max[scipy.sparse.csc_array-2d-ax0-max] PASSED [ 84%] -tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-ax0-float32] PASSED [ 84%] -tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-ax0-float64] PASSED [ 84%] -tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-ax0-int32] PASSED [ 84%] -tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-ax0-bool] PASSED [ 84%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-ax0-float32] PASSED [ 84%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-ax0-float64] PASSED [ 84%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-ax0-int32] PASSED [ 84%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-ax0-bool] PASSED [ 84%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float32-sum] PASSED [ 84%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float32-min] PASSED [ 84%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float32-max] PASSED [ 84%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float32-mean] PASSED [ 84%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float32-mean_var] PASSED [ 84%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float32-is_constant] PASSED [ 84%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float64-sum] PASSED [ 84%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float64-min] PASSED [ 84%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float64-max] PASSED [ 84%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float64-mean] PASSED [ 85%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float64-mean_var] PASSED [ 85%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-float64-is_constant] PASSED [ 85%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-int32-sum] PASSED [ 85%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-int32-min] PASSED [ 85%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-int32-max] PASSED [ 85%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-int32-mean] PASSED [ 85%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-int32-mean_var] PASSED [ 85%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-ax0-int32-is_constant] PASSED [ 85%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-ax0-float32] PASSED [ 85%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-ax0-float64] PASSED [ 85%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-ax0-int32] PASSED [ 85%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-ax0-bool] PASSED [ 85%] -tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-ax0-float32] SKIPPED [ 85%] -tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-ax0-float64] SKIPPED [ 85%] -tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-ax0-int32] SKIPPED [ 85%] -tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-ax0-bool] SKIPPED [ 85%] -tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-ax0-float32] PASSED [ 85%] -tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-ax0-float64] PASSED [ 85%] -tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-ax0-int32] PASSED [ 85%] -tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-ax0-bool] PASSED [ 85%] -tests/test_stats.py::test_sum_to_int[scipy.sparse.csr_array-2d-ax0] PASSED [ 85%] -tests/test_stats.py::test_min_max[scipy.sparse.csr_array-2d-ax0-min] PASSED [ 85%] -tests/test_stats.py::test_min_max[scipy.sparse.csr_array-2d-ax0-max] PASSED [ 85%] -tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-ax0-float32] PASSED [ 85%] -tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-ax0-float64] PASSED [ 85%] -tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-ax0-int32] PASSED [ 85%] -tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-ax0-bool] PASSED [ 85%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-ax0-float32] PASSED [ 85%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-ax0-float64] PASSED [ 85%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-ax0-int32] PASSED [ 85%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-ax0-bool] PASSED [ 85%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float32-sum] PASSED [ 85%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float32-min] PASSED [ 86%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float32-max] PASSED [ 86%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float32-mean] PASSED [ 86%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float32-mean_var] PASSED [ 86%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float32-is_constant] PASSED [ 86%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float64-sum] PASSED [ 86%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float64-min] PASSED [ 86%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float64-max] PASSED [ 86%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float64-mean] PASSED [ 86%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float64-mean_var] PASSED [ 86%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-float64-is_constant] PASSED [ 86%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-int32-sum] PASSED [ 86%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-int32-min] PASSED [ 86%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-int32-max] PASSED [ 86%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-int32-mean] PASSED [ 86%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-int32-mean_var] PASSED [ 86%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-ax0-int32-is_constant] PASSED [ 86%] -tests/test_stats.py::test_min_max[cupy.ndarray-2d-ax0-min] SKIPPED (...) [ 86%] -tests/test_stats.py::test_min_max[cupy.ndarray-2d-ax0-max] SKIPPED (...) [ 86%] -tests/test_stats.py::test_mean[cupy.ndarray-2d-ax0-float32] SKIPPED [ 86%] -tests/test_stats.py::test_mean[cupy.ndarray-2d-ax0-float64] SKIPPED [ 86%] -tests/test_stats.py::test_mean[cupy.ndarray-2d-ax0-int32] SKIPPED (c...) [ 86%] -tests/test_stats.py::test_mean[cupy.ndarray-2d-ax0-bool] SKIPPED (cu...) [ 86%] -tests/test_stats.py::test_mean_var[cupy.ndarray-2d-ax0-float32] SKIPPED [ 86%] -tests/test_stats.py::test_mean_var[cupy.ndarray-2d-ax0-float64] SKIPPED [ 86%] -tests/test_stats.py::test_mean_var[cupy.ndarray-2d-ax0-int32] SKIPPED [ 86%] -tests/test_stats.py::test_mean_var[cupy.ndarray-2d-ax0-bool] SKIPPED [ 86%] -tests/test_stats.py::test_sum_to_int[numpy.ndarray-2d-ax0] PASSED [ 86%] -tests/test_stats.py::test_min_max[numpy.ndarray-2d-ax0-min] PASSED [ 86%] -tests/test_stats.py::test_min_max[numpy.ndarray-2d-ax0-max] PASSED [ 86%] -tests/test_stats.py::test_mean[numpy.ndarray-2d-ax0-float32] PASSED [ 86%] -tests/test_stats.py::test_mean[numpy.ndarray-2d-ax0-float64] PASSED [ 86%] -tests/test_stats.py::test_mean[numpy.ndarray-2d-ax0-int32] PASSED [ 86%] -tests/test_stats.py::test_mean[numpy.ndarray-2d-ax0-bool] PASSED [ 87%] -tests/test_stats.py::test_mean_var[numpy.ndarray-2d-ax0-float32] PASSED [ 87%] -tests/test_stats.py::test_mean_var[numpy.ndarray-2d-ax0-float64] PASSED [ 87%] -tests/test_stats.py::test_mean_var[numpy.ndarray-2d-ax0-int32] PASSED [ 87%] -tests/test_stats.py::test_mean_var[numpy.ndarray-2d-ax0-bool] PASSED [ 87%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float32-sum] PASSED [ 87%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float32-min] PASSED [ 87%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float32-max] PASSED [ 87%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float32-mean] PASSED [ 87%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float32-mean_var] PASSED [ 87%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float32-is_constant] PASSED [ 87%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float64-sum] PASSED [ 87%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float64-min] PASSED [ 87%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float64-max] PASSED [ 87%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float64-mean] PASSED [ 87%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float64-mean_var] PASSED [ 87%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-float64-is_constant] PASSED [ 87%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-int32-sum] PASSED [ 87%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-int32-min] PASSED [ 87%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-int32-max] PASSED [ 87%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-int32-mean] PASSED [ 87%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-int32-mean_var] PASSED [ 87%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-ax0-int32-is_constant] PASSED [ 87%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-all-float32] PASSED [ 87%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-all-float64] PASSED [ 87%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-all-int32] PASSED [ 87%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-2d-all-bool] PASSED [ 87%] -tests/test_stats.py::test_sum_to_int[scipy.sparse.csr_matrix-2d-all] PASSED [ 87%] -tests/test_stats.py::test_min_max[scipy.sparse.csr_matrix-2d-all-min] PASSED [ 87%] -tests/test_stats.py::test_min_max[scipy.sparse.csr_matrix-2d-all-max] PASSED [ 87%] -tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-all-float32] PASSED [ 87%] -tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-all-float64] PASSED [ 87%] -tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-all-int32] PASSED [ 87%] -tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-2d-all-bool] PASSED [ 88%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-all-float32] PASSED [ 88%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-all-float64] PASSED [ 88%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-all-int32] PASSED [ 88%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-2d-all-bool] PASSED [ 88%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-1d-all-float32] SKIPPED [ 88%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-1d-all-float64] SKIPPED [ 88%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-1d-all-int32] SKIPPED [ 88%] -tests/test_stats.py::test_sum[scipy.sparse.csr_matrix-float32-1d-all-bool] SKIPPED [ 88%] -tests/test_stats.py::test_sum_to_int[scipy.sparse.csr_matrix-1d-all] PASSED [ 88%] -tests/test_stats.py::test_min_max[scipy.sparse.csr_matrix-1d-all-min] PASSED [ 88%] -tests/test_stats.py::test_min_max[scipy.sparse.csr_matrix-1d-all-max] PASSED [ 88%] -tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-1d-all-float32] SKIPPED [ 88%] -tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-1d-all-float64] SKIPPED [ 88%] -tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-1d-all-int32] SKIPPED [ 88%] -tests/test_stats.py::test_mean[scipy.sparse.csr_matrix-1d-all-bool] SKIPPED [ 88%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-1d-all-float32] SKIPPED [ 88%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-1d-all-float64] SKIPPED [ 88%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-1d-all-int32] SKIPPED [ 88%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_matrix-1d-all-bool] SKIPPED [ 88%] -tests/test_sparse.py::test_to_dense[scipy.sparse.csr_matrix-float64-C] PASSED [ 88%] -tests/test_sparse.py::test_to_dense[scipy.sparse.csr_matrix-float64-F] PASSED [ 88%] -tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csr_matrix-float64-C] PASSED [ 88%] -tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csr_matrix-float64-F] PASSED [ 88%] -tests/test_sparse.py::test_to_dense[scipy.sparse.csr_matrix-float32-C] PASSED [ 88%] -tests/test_sparse.py::test_to_dense[scipy.sparse.csr_matrix-float32-F] PASSED [ 88%] -tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csr_matrix-float32-C] PASSED [ 88%] -tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csr_matrix-float32-F] PASSED [ 88%] -tests/test_numpy_scipy_sparse.py::test_ndim[scipy.sparse.csr_matrix] PASSED [ 88%] -tests/test_numpy_scipy_sparse.py::test_shape[scipy.sparse.csr_matrix] PASSED [ 88%] -tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csr_matrix-d=i64-i=32] PASSED [ 88%] -tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csr_matrix-d=i64-i=64] PASSED [ 88%] -tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csr_matrix-d=f64-i=32] PASSED [ 88%] -tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csr_matrix-d=f64-i=64] PASSED [ 89%] -tests/test_stats.py::test_is_constant[scipy.sparse.csr_matrix-None] PASSED [ 89%] -tests/test_stats.py::test_is_constant[scipy.sparse.csr_matrix-0] PASSED [ 89%] -tests/test_stats.py::test_is_constant[scipy.sparse.csr_matrix-1] PASSED [ 89%] -tests/test_test_utils.py::test_conv[scipy.sparse.csr_matrix-float32] PASSED [ 89%] -tests/test_test_utils.py::test_conv[scipy.sparse.csr_matrix-float64] PASSED [ 89%] -tests/test_test_utils.py::test_array_types[scipy.sparse.csr_matrix] PASSED [ 89%] -tests/test_test_utils.py::test_session_scoped_array[scipy.sparse.csr_matrix] PASSED [ 89%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_matrix-K-to_cpu_memory] PASSED [ 89%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_matrix-K-not_to_cpu_memory] PASSED [ 89%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_matrix-C-to_cpu_memory] PASSED [ 89%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_matrix-C-not_to_cpu_memory] PASSED [ 89%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_matrix-F-to_cpu_memory] PASSED [ 89%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_matrix-F-not_to_cpu_memory] PASSED [ 89%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-1d-all-float32] SKIPPED [ 89%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-1d-all-float64] SKIPPED [ 89%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-1d-all-int32] SKIPPED [ 89%] -tests/test_stats.py::test_sum[scipy.sparse.csc_array-float64-1d-all-bool] SKIPPED [ 89%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-1d-all-float32] PASSED [ 89%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-1d-all-float64] PASSED [ 89%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-1d-all-int32] PASSED [ 89%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float64-1d-all-bool] PASSED [ 89%] -tests/test_stats.py::test_sum[cupy.ndarray-float64-1d-all-float32] SKIPPED [ 89%] -tests/test_stats.py::test_sum[cupy.ndarray-float64-1d-all-float64] SKIPPED [ 89%] -tests/test_stats.py::test_sum[cupy.ndarray-float64-1d-all-int32] SKIPPED [ 89%] -tests/test_stats.py::test_sum[cupy.ndarray-float64-1d-all-bool] SKIPPED [ 89%] -tests/test_stats.py::test_sum[numpy.ndarray-float64-1d-all-float32] PASSED [ 89%] -tests/test_stats.py::test_sum[numpy.ndarray-float64-1d-all-float64] PASSED [ 89%] -tests/test_stats.py::test_sum[numpy.ndarray-float64-1d-all-int32] PASSED [ 89%] -tests/test_stats.py::test_sum[numpy.ndarray-float64-1d-all-bool] PASSED [ 89%] -tests/test_stats.py::test_sum_to_int[scipy.sparse.csc_array-2d-all] PASSED [ 89%] -tests/test_stats.py::test_min_max[scipy.sparse.csc_array-2d-all-min] PASSED [ 89%] -tests/test_stats.py::test_min_max[scipy.sparse.csc_array-2d-all-max] PASSED [ 89%] -tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-all-float32] PASSED [ 90%] -tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-all-float64] PASSED [ 90%] -tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-all-int32] PASSED [ 90%] -tests/test_stats.py::test_mean[scipy.sparse.csc_array-2d-all-bool] PASSED [ 90%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-all-float32] PASSED [ 90%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-all-float64] PASSED [ 90%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-all-int32] PASSED [ 90%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-2d-all-bool] PASSED [ 90%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float32-sum] PASSED [ 90%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float32-min] PASSED [ 90%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float32-max] PASSED [ 90%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float32-mean] PASSED [ 90%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float32-mean_var] PASSED [ 90%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float32-is_constant] PASSED [ 90%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float64-sum] PASSED [ 90%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float64-min] PASSED [ 90%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float64-max] PASSED [ 90%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float64-mean] PASSED [ 90%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float64-mean_var] PASSED [ 90%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-float64-is_constant] PASSED [ 90%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-int32-sum] PASSED [ 90%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-int32-min] PASSED [ 90%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-int32-max] PASSED [ 90%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-int32-mean] PASSED [ 90%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-int32-mean_var] PASSED [ 90%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-2d-all-int32-is_constant] PASSED [ 90%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-all-float32] PASSED [ 90%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-all-float64] PASSED [ 90%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-all-int32] PASSED [ 90%] -tests/test_stats.py::test_sum[scipy.sparse.csr_array-float32-2d-all-bool] PASSED [ 90%] -tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-all-float32] SKIPPED [ 90%] -tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-all-float64] SKIPPED [ 90%] -tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-all-int32] SKIPPED [ 90%] -tests/test_stats.py::test_sum[cupy.ndarray-float32-2d-all-bool] SKIPPED [ 91%] -tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-all-float32] PASSED [ 91%] -tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-all-float64] PASSED [ 91%] -tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-all-int32] PASSED [ 91%] -tests/test_stats.py::test_sum[numpy.ndarray-float32-2d-all-bool] PASSED [ 91%] -tests/test_stats.py::test_sum_to_int[scipy.sparse.csr_array-2d-all] PASSED [ 91%] -tests/test_stats.py::test_min_max[scipy.sparse.csr_array-2d-all-min] PASSED [ 91%] -tests/test_stats.py::test_min_max[scipy.sparse.csr_array-2d-all-max] PASSED [ 91%] -tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-all-float32] PASSED [ 91%] -tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-all-float64] PASSED [ 91%] -tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-all-int32] PASSED [ 91%] -tests/test_stats.py::test_mean[scipy.sparse.csr_array-2d-all-bool] PASSED [ 91%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-all-float32] PASSED [ 91%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-all-float64] PASSED [ 91%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-all-int32] PASSED [ 91%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-2d-all-bool] PASSED [ 91%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float32-sum] PASSED [ 91%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float32-min] PASSED [ 91%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float32-max] PASSED [ 91%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float32-mean] PASSED [ 91%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float32-mean_var] PASSED [ 91%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float32-is_constant] PASSED [ 91%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float64-sum] PASSED [ 91%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float64-min] PASSED [ 91%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float64-max] PASSED [ 91%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float64-mean] PASSED [ 91%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float64-mean_var] PASSED [ 91%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-float64-is_constant] PASSED [ 91%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-int32-sum] PASSED [ 91%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-int32-min] PASSED [ 91%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-int32-max] PASSED [ 91%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-int32-mean] PASSED [ 91%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-int32-mean_var] PASSED [ 91%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-2d-all-int32-is_constant] PASSED [ 92%] -tests/test_stats.py::test_min_max[cupy.ndarray-2d-all-min] SKIPPED (...) [ 92%] -tests/test_stats.py::test_min_max[cupy.ndarray-2d-all-max] SKIPPED (...) [ 92%] -tests/test_stats.py::test_mean[cupy.ndarray-2d-all-float32] SKIPPED [ 92%] -tests/test_stats.py::test_mean[cupy.ndarray-2d-all-float64] SKIPPED [ 92%] -tests/test_stats.py::test_mean[cupy.ndarray-2d-all-int32] SKIPPED (c...) [ 92%] -tests/test_stats.py::test_mean[cupy.ndarray-2d-all-bool] SKIPPED (cu...) [ 92%] -tests/test_stats.py::test_mean_var[cupy.ndarray-2d-all-float32] SKIPPED [ 92%] -tests/test_stats.py::test_mean_var[cupy.ndarray-2d-all-float64] SKIPPED [ 92%] -tests/test_stats.py::test_mean_var[cupy.ndarray-2d-all-int32] SKIPPED [ 92%] -tests/test_stats.py::test_mean_var[cupy.ndarray-2d-all-bool] SKIPPED [ 92%] -tests/test_stats.py::test_sum_to_int[numpy.ndarray-2d-all] PASSED [ 92%] -tests/test_stats.py::test_min_max[numpy.ndarray-2d-all-min] PASSED [ 92%] -tests/test_stats.py::test_min_max[numpy.ndarray-2d-all-max] PASSED [ 92%] -tests/test_stats.py::test_mean[numpy.ndarray-2d-all-float32] PASSED [ 92%] -tests/test_stats.py::test_mean[numpy.ndarray-2d-all-float64] PASSED [ 92%] -tests/test_stats.py::test_mean[numpy.ndarray-2d-all-int32] PASSED [ 92%] -tests/test_stats.py::test_mean[numpy.ndarray-2d-all-bool] PASSED [ 92%] -tests/test_stats.py::test_mean_var[numpy.ndarray-2d-all-float32] PASSED [ 92%] -tests/test_stats.py::test_mean_var[numpy.ndarray-2d-all-float64] PASSED [ 92%] -tests/test_stats.py::test_mean_var[numpy.ndarray-2d-all-int32] PASSED [ 92%] -tests/test_stats.py::test_mean_var[numpy.ndarray-2d-all-bool] PASSED [ 92%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float32-sum] PASSED [ 92%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float32-min] PASSED [ 92%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float32-max] PASSED [ 92%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float32-mean] PASSED [ 92%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float32-mean_var] PASSED [ 92%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float32-is_constant] PASSED [ 92%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float64-sum] PASSED [ 92%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float64-min] PASSED [ 92%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float64-max] PASSED [ 92%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float64-mean] PASSED [ 92%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float64-mean_var] PASSED [ 92%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-float64-is_constant] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-int32-sum] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-int32-min] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-int32-max] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-int32-mean] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-int32-mean_var] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-2d-all-int32-is_constant] PASSED [ 93%] -tests/test_stats.py::test_sum_to_int[scipy.sparse.csc_array-1d-all] PASSED [ 93%] -tests/test_stats.py::test_min_max[scipy.sparse.csc_array-1d-all-min] PASSED [ 93%] -tests/test_stats.py::test_min_max[scipy.sparse.csc_array-1d-all-max] PASSED [ 93%] -tests/test_stats.py::test_mean[scipy.sparse.csc_array-1d-all-float32] SKIPPED [ 93%] -tests/test_stats.py::test_mean[scipy.sparse.csc_array-1d-all-float64] SKIPPED [ 93%] -tests/test_stats.py::test_mean[scipy.sparse.csc_array-1d-all-int32] SKIPPED [ 93%] -tests/test_stats.py::test_mean[scipy.sparse.csc_array-1d-all-bool] SKIPPED [ 93%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-1d-all-float32] SKIPPED [ 93%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-1d-all-float64] SKIPPED [ 93%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-1d-all-int32] SKIPPED [ 93%] -tests/test_stats.py::test_mean_var[scipy.sparse.csc_array-1d-all-bool] SKIPPED [ 93%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float32-sum] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float32-min] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float32-max] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float32-mean] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float32-mean_var] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float32-is_constant] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float64-sum] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float64-min] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float64-max] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float64-mean] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float64-mean_var] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-float64-is_constant] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-int32-sum] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-int32-min] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-int32-max] PASSED [ 93%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-int32-mean] PASSED [ 94%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-int32-mean_var] PASSED [ 94%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csc_array-1d-all-int32-is_constant] PASSED [ 94%] -tests/test_sparse.py::test_to_dense[scipy.sparse.csc_array-float64-C] PASSED [ 94%] -tests/test_sparse.py::test_to_dense[scipy.sparse.csc_array-float64-F] PASSED [ 94%] -tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csc_array-float64-C] PASSED [ 94%] -tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csc_array-float64-F] PASSED [ 94%] -tests/test_sparse.py::test_to_dense[scipy.sparse.csc_array-float32-C] PASSED [ 94%] -tests/test_sparse.py::test_to_dense[scipy.sparse.csc_array-float32-F] PASSED [ 94%] -tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csc_array-float32-C] PASSED [ 94%] -tests/test_sparse.py::test_to_dense_benchmark[scipy.sparse.csc_array-float32-F] PASSED [ 94%] -tests/test_numpy_scipy_sparse.py::test_ndim[scipy.sparse.csc_array] PASSED [ 94%] -tests/test_numpy_scipy_sparse.py::test_shape[scipy.sparse.csc_array] PASSED [ 94%] -tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csc_array-d=i64-i=32] PASSED [ 94%] -tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csc_array-d=i64-i=64] PASSED [ 94%] -tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csc_array-d=f64-i=32] PASSED [ 94%] -tests/test_numpy_scipy_sparse.py::test_copy[scipy.sparse.csc_array-d=f64-i=64] PASSED [ 94%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-1d-ax0-sum] SKIPPED [ 94%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-1d-ax0-min] SKIPPED [ 94%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-1d-ax0-max] SKIPPED [ 94%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-1d-ax0-mean] SKIPPED [ 94%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-1d-ax0-mean_var] SKIPPED [ 94%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-1d-ax0-is_constant] SKIPPED [ 94%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-ax3-sum] PASSED [ 94%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-ax3-min] PASSED [ 94%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-ax3-max] PASSED [ 94%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-ax3-mean] PASSED [ 94%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-ax3-mean_var] PASSED [ 94%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-ax3-is_constant] PASSED [ 94%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-axneg-sum] PASSED [ 94%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-axneg-min] PASSED [ 94%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-axneg-max] PASSED [ 94%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-axneg-mean] PASSED [ 94%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-axneg-mean_var] PASSED [ 95%] -tests/test_stats.py::test_ndim_error[scipy.sparse.csc_array-2d-axneg-is_constant] PASSED [ 95%] -tests/test_stats.py::test_mean_var_sparse_64[scipy.sparse.csc_array-0] PASSED [ 95%] -tests/test_stats.py::test_mean_var_sparse_64[scipy.sparse.csc_array-1] PASSED [ 95%] -tests/test_stats.py::test_mean_var_sparse_32[scipy.sparse.csc_array] SUBPASSED(stat='mean') [ 95%] -tests/test_stats.py::test_mean_var_sparse_32[scipy.sparse.csc_array] SUBPASSED(stat='var') [ 95%] -tests/test_stats.py::test_mean_var_sparse_32[scipy.sparse.csc_array] PASSED [ 95%] -tests/test_stats.py::test_is_constant[scipy.sparse.csc_array-None] PASSED [ 95%] -tests/test_stats.py::test_is_constant[scipy.sparse.csc_array-0] PASSED [ 95%] -tests/test_stats.py::test_is_constant[scipy.sparse.csc_array-1] PASSED [ 95%] -tests/test_test_utils.py::test_conv[scipy.sparse.csc_array-float32] PASSED [ 95%] -tests/test_test_utils.py::test_conv[scipy.sparse.csc_array-float64] PASSED [ 95%] -tests/test_test_utils.py::test_array_types[scipy.sparse.csc_array] PASSED [ 95%] -tests/test_test_utils.py::test_session_scoped_array[scipy.sparse.csc_array] PASSED [ 95%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_array-K-to_cpu_memory] PASSED [ 95%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_array-K-not_to_cpu_memory] PASSED [ 95%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_array-C-to_cpu_memory] PASSED [ 95%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_array-C-not_to_cpu_memory] PASSED [ 95%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_array-F-to_cpu_memory] PASSED [ 95%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csc_array-F-not_to_cpu_memory] PASSED [ 95%] -tests/test_stats.py::test_sum_to_int[scipy.sparse.csr_array-1d-all] PASSED [ 95%] -tests/test_stats.py::test_min_max[scipy.sparse.csr_array-1d-all-min] PASSED [ 95%] -tests/test_stats.py::test_min_max[scipy.sparse.csr_array-1d-all-max] PASSED [ 95%] -tests/test_stats.py::test_mean[scipy.sparse.csr_array-1d-all-float32] PASSED [ 95%] -tests/test_stats.py::test_mean[scipy.sparse.csr_array-1d-all-float64] PASSED [ 95%] -tests/test_stats.py::test_mean[scipy.sparse.csr_array-1d-all-int32] PASSED [ 95%] -tests/test_stats.py::test_mean[scipy.sparse.csr_array-1d-all-bool] PASSED [ 95%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-1d-all-float32] PASSED [ 95%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-1d-all-float64] PASSED [ 95%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-1d-all-int32] PASSED [ 95%] -tests/test_stats.py::test_mean_var[scipy.sparse.csr_array-1d-all-bool] PASSED [ 95%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float32-sum] PASSED [ 95%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float32-min] PASSED [ 95%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float32-max] PASSED [ 95%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float32-mean] PASSED [ 95%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float32-mean_var] PASSED [ 96%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float32-is_constant] PASSED [ 96%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float64-sum] PASSED [ 96%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float64-min] PASSED [ 96%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float64-max] PASSED [ 96%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float64-mean] PASSED [ 96%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float64-mean_var] PASSED [ 96%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-float64-is_constant] PASSED [ 96%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-int32-sum] PASSED [ 96%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-int32-min] PASSED [ 96%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-int32-max] PASSED [ 96%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-int32-mean] PASSED [ 96%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-int32-mean_var] PASSED [ 96%] -tests/test_stats.py::test_stats_benchmark[scipy.sparse.csr_array-1d-all-int32-is_constant] PASSED [ 96%] -tests/test_stats.py::test_min_max[cupy.ndarray-1d-all-min] SKIPPED (...) [ 96%] -tests/test_stats.py::test_min_max[cupy.ndarray-1d-all-max] SKIPPED (...) [ 96%] -tests/test_stats.py::test_mean[cupy.ndarray-1d-all-float32] SKIPPED [ 96%] -tests/test_stats.py::test_mean[cupy.ndarray-1d-all-float64] SKIPPED [ 96%] -tests/test_stats.py::test_mean[cupy.ndarray-1d-all-int32] SKIPPED (c...) [ 96%] -tests/test_stats.py::test_mean[cupy.ndarray-1d-all-bool] SKIPPED (cu...) [ 96%] -tests/test_stats.py::test_mean_var[cupy.ndarray-1d-all-float32] SKIPPED [ 96%] -tests/test_stats.py::test_mean_var[cupy.ndarray-1d-all-float64] SKIPPED [ 96%] -tests/test_stats.py::test_mean_var[cupy.ndarray-1d-all-int32] SKIPPED [ 96%] -tests/test_stats.py::test_mean_var[cupy.ndarray-1d-all-bool] SKIPPED [ 96%] -tests/test_stats.py::test_sum_to_int[numpy.ndarray-1d-all] PASSED [ 96%] -tests/test_stats.py::test_min_max[numpy.ndarray-1d-all-min] PASSED [ 96%] -tests/test_stats.py::test_min_max[numpy.ndarray-1d-all-max] PASSED [ 96%] -tests/test_stats.py::test_mean[numpy.ndarray-1d-all-float32] PASSED [ 96%] -tests/test_stats.py::test_mean[numpy.ndarray-1d-all-float64] PASSED [ 96%] -tests/test_stats.py::test_mean[numpy.ndarray-1d-all-int32] PASSED [ 96%] -tests/test_stats.py::test_mean[numpy.ndarray-1d-all-bool] PASSED [ 96%] -tests/test_stats.py::test_mean_var[numpy.ndarray-1d-all-float32] PASSED [ 96%] -tests/test_stats.py::test_mean_var[numpy.ndarray-1d-all-float64] PASSED [ 96%] -tests/test_stats.py::test_mean_var[numpy.ndarray-1d-all-int32] PASSED [ 97%] -tests/test_stats.py::test_mean_var[numpy.ndarray-1d-all-bool] PASSED [ 97%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float32-sum] PASSED [ 97%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float32-min] PASSED [ 97%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float32-max] PASSED [ 97%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float32-mean] PASSED [ 97%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float32-mean_var] PASSED [ 97%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float32-is_constant] PASSED [ 97%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float64-sum] PASSED [ 97%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float64-min] PASSED [ 97%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float64-max] PASSED [ 97%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float64-mean] PASSED [ 97%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float64-mean_var] PASSED [ 97%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-float64-is_constant] PASSED [ 97%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-int32-sum] PASSED [ 97%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-int32-min] PASSED [ 97%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-int32-max] PASSED [ 97%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-int32-mean] PASSED [ 97%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-int32-mean_var] PASSED [ 97%] -tests/test_stats.py::test_stats_benchmark[numpy.ndarray-1d-all-int32-is_constant] PASSED [ 97%] -tests/test_stats.py::test_mean_var_sparse_64[scipy.sparse.csr_array-0] PASSED [ 97%] -tests/test_stats.py::test_mean_var_sparse_64[scipy.sparse.csr_array-1] PASSED [ 97%] -tests/test_stats.py::test_mean_var_sparse_32[scipy.sparse.csr_array] SUBPASSED(stat='mean') [ 97%] -tests/test_stats.py::test_mean_var_sparse_32[scipy.sparse.csr_array] SUBPASSED(stat='var') [ 97%] -tests/test_stats.py::test_mean_var_sparse_32[scipy.sparse.csr_array] PASSED [ 97%] -tests/test_stats.py::test_is_constant[scipy.sparse.csr_array-None] PASSED [ 97%] -tests/test_stats.py::test_is_constant[scipy.sparse.csr_array-0] PASSED [ 97%] -tests/test_stats.py::test_is_constant[scipy.sparse.csr_array-1] PASSED [ 97%] -tests/test_test_utils.py::test_conv[scipy.sparse.csr_array-float32] PASSED [ 97%] -tests/test_test_utils.py::test_conv[scipy.sparse.csr_array-float64] PASSED [ 97%] -tests/test_test_utils.py::test_array_types[scipy.sparse.csr_array] PASSED [ 97%] -tests/test_test_utils.py::test_session_scoped_array[scipy.sparse.csr_array] PASSED [ 97%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_array-K-to_cpu_memory] PASSED [ 97%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_array-K-not_to_cpu_memory] PASSED [ 97%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_array-C-to_cpu_memory] PASSED [ 97%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_array-C-not_to_cpu_memory] PASSED [ 98%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_array-F-to_cpu_memory] PASSED [ 98%] -tests/test_to_dense.py::test_to_dense[scipy.sparse.csr_array-F-not_to_cpu_memory] PASSED [ 98%] -tests/test_stats.py::test_ndim_error[cupy.ndarray-1d-ax0-sum] SKIPPED [ 98%] -tests/test_stats.py::test_ndim_error[cupy.ndarray-1d-ax0-min] SKIPPED [ 98%] -tests/test_stats.py::test_ndim_error[cupy.ndarray-1d-ax0-max] SKIPPED [ 98%] -tests/test_stats.py::test_ndim_error[cupy.ndarray-1d-ax0-mean] SKIPPED [ 98%] -tests/test_stats.py::test_ndim_error[cupy.ndarray-1d-ax0-mean_var] SKIPPED [ 98%] -tests/test_stats.py::test_ndim_error[cupy.ndarray-1d-ax0-is_constant] SKIPPED [ 98%] -tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-ax3-sum] SKIPPED [ 98%] -tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-ax3-min] SKIPPED [ 98%] -tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-ax3-max] SKIPPED [ 98%] -tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-ax3-mean] SKIPPED [ 98%] -tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-ax3-mean_var] SKIPPED [ 98%] -tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-ax3-is_constant] SKIPPED [ 98%] -tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-axneg-sum] SKIPPED [ 98%] -tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-axneg-min] SKIPPED [ 98%] -tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-axneg-max] SKIPPED [ 98%] -tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-axneg-mean] SKIPPED [ 98%] -tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-axneg-mean_var] SKIPPED [ 98%] -tests/test_stats.py::test_ndim_error[cupy.ndarray-2d-axneg-is_constant] SKIPPED [ 98%] -tests/test_stats.py::test_is_constant[cupy.ndarray-None] SKIPPED (cu...) [ 98%] -tests/test_stats.py::test_is_constant[cupy.ndarray-0] SKIPPED (cupy ...) [ 98%] -tests/test_stats.py::test_is_constant[cupy.ndarray-1] SKIPPED (cupy ...) [ 98%] -tests/test_test_utils.py::test_conv[cupy.ndarray-float32] SKIPPED (c...) [ 98%] -tests/test_test_utils.py::test_conv[cupy.ndarray-float64] SKIPPED (c...) [ 98%] -tests/test_test_utils.py::test_array_types[cupy.ndarray] SKIPPED (cu...) [ 98%] -tests/test_test_utils.py::test_session_scoped_array[cupy.ndarray] SKIPPED [ 98%] -tests/test_to_dense.py::test_to_dense[cupy.ndarray-K-to_cpu_memory] SKIPPED [ 98%] -tests/test_to_dense.py::test_to_dense[cupy.ndarray-K-not_to_cpu_memory] SKIPPED [ 98%] -tests/test_to_dense.py::test_to_dense[cupy.ndarray-C-to_cpu_memory] SKIPPED [ 98%] -tests/test_to_dense.py::test_to_dense[cupy.ndarray-C-not_to_cpu_memory] SKIPPED [ 98%] -tests/test_to_dense.py::test_to_dense[cupy.ndarray-F-to_cpu_memory] SKIPPED [ 98%] -tests/test_to_dense.py::test_to_dense[cupy.ndarray-F-not_to_cpu_memory] SKIPPED [ 99%] -tests/test_stats.py::test_ndim_error[numpy.ndarray-1d-ax0-sum] PASSED [ 99%] -tests/test_stats.py::test_ndim_error[numpy.ndarray-1d-ax0-min] PASSED [ 99%] -tests/test_stats.py::test_ndim_error[numpy.ndarray-1d-ax0-max] PASSED [ 99%] -tests/test_stats.py::test_ndim_error[numpy.ndarray-1d-ax0-mean] PASSED [ 99%] -tests/test_stats.py::test_ndim_error[numpy.ndarray-1d-ax0-mean_var] PASSED [ 99%] -tests/test_stats.py::test_ndim_error[numpy.ndarray-1d-ax0-is_constant] PASSED [ 99%] -tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-ax3-sum] PASSED [ 99%] -tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-ax3-min] PASSED [ 99%] -tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-ax3-max] PASSED [ 99%] -tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-ax3-mean] PASSED [ 99%] -tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-ax3-mean_var] PASSED [ 99%] -tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-ax3-is_constant] PASSED [ 99%] -tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-axneg-sum] PASSED [ 99%] -tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-axneg-min] PASSED [ 99%] -tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-axneg-max] PASSED [ 99%] -tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-axneg-mean] PASSED [ 99%] -tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-axneg-mean_var] PASSED [ 99%] -tests/test_stats.py::test_ndim_error[numpy.ndarray-2d-axneg-is_constant] PASSED [ 99%] -tests/test_stats.py::test_is_constant[numpy.ndarray-None] PASSED [ 99%] -tests/test_stats.py::test_is_constant[numpy.ndarray-0] PASSED [ 99%] -tests/test_stats.py::test_is_constant[numpy.ndarray-1] PASSED [ 99%] -tests/test_test_utils.py::test_conv[numpy.ndarray-float32] PASSED [ 99%] -tests/test_test_utils.py::test_conv[numpy.ndarray-float64] PASSED [ 99%] -tests/test_test_utils.py::test_array_types[numpy.ndarray] PASSED [ 99%] -tests/test_test_utils.py::test_session_scoped_array[numpy.ndarray] PASSED [ 99%] -tests/test_to_dense.py::test_to_dense[numpy.ndarray-K-to_cpu_memory] PASSED [ 99%] -tests/test_to_dense.py::test_to_dense[numpy.ndarray-K-not_to_cpu_memory] PASSED [ 99%] -tests/test_to_dense.py::test_to_dense[numpy.ndarray-C-to_cpu_memory] PASSED [ 99%] -tests/test_to_dense.py::test_to_dense[numpy.ndarray-C-not_to_cpu_memory] PASSED [ 99%] -tests/test_to_dense.py::test_to_dense[numpy.ndarray-F-to_cpu_memory] PASSED [ 99%] -tests/test_to_dense.py::test_to_dense[numpy.ndarray-F-not_to_cpu_memory] FAILED [ 99%] -tests/test_stats.py::tests.test_stats.pbmc64k_reduced_raw SKIPPED [100%] - -=================================== FAILURES =================================== -_______________ test_to_dense[numpy.ndarray-F-not_to_cpu_memory] _______________ - -array_type = numpy.ndarray - - @pytest.mark.parametrize("to_cpu_memory", [True, False], ids=["to_cpu_memory", "not_to_cpu_memory"]) - @pytest.mark.parametrize("order", argvalues=["K", "C", "F"]) # “A” behaves like “K” - def test_to_dense(array_type: ArrayType[Array], *, order: Literal["K", "C", "F"], to_cpu_memory: bool) -> None: - x = array_type([[1, 2, 3], [4, 5, 6]], dtype=np.float32) - if not to_cpu_memory and array_type.cls in {types.CSCDataset, types.CSRDataset}: - with pytest.raises(ValueError, match=r"to_cpu_memory must be True if x is an CS\{R,C\}Dataset"): - to_dense(x, order=order, to_cpu_memory=to_cpu_memory) - return - - with ( - pytest.warns(RuntimeWarning, match="Dask can not be made to emit F-contiguous arrays") - if (order == "F" and array_type.cls is types.DaskArray) - else nullcontext(), - WARNS_NUMBA if issubclass(array_type.cls, types.CSBase) and not find_spec("numba") else nullcontext(), - ): - arr = to_dense(x, order=order, to_cpu_memory=to_cpu_memory) - - assert_expected_cls(x, arr, to_cpu_memory=to_cpu_memory) - assert arr.shape == (2, 3) - # Dask is unreliable: for explicit “F”, we emit a warning (tested above), for “K” we just ignore the result - if not (array_type.cls is types.DaskArray and order in {"F", "K"}): -> assert_expected_order(x, arr, order=order) - -tests/test_to_dense.py:50: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -orig = array([[1., 2., 3.], - [4., 5., 6.]], dtype=float32) -converted = array([[1., 2., 3.], - [4., 5., 6.]], dtype=float32) - - def assert_expected_order(orig: ExtendedArray, converted: Array, *, order: Literal["K", "C", "F"]) -> None: - match converted: - case types.CupyArray() | np.ndarray(): - orders = {order_exp: converted.flags[f"{order_exp}_CONTIGUOUS"] for order_exp in (get_orders(orig) if order == "K" else {order})} # type: ignore[index] -> assert any(orders.values()), orders -E AssertionError: {'F': False} -E assert False -E + where False = any(dict_values([False])) -E + where dict_values([False]) = () -E + where = {'F': False}.values - -tests/test_to_dense.py:81: AssertionError -=========================== short test summary info ============================ -FAILED tests/test_to_dense.py::test_to_dense[numpy.ndarray-F-not_to_cpu_memory] -= 1 failed, 2116 passed, 1179 skipped, 4 subtests passed in 241.21s (0:04:01) == diff --git a/pyproject.toml b/pyproject.toml index b235ceb..02cd8bc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,6 +28,7 @@ optional-dependencies.accel = [ "numba>=0.57" ] optional-dependencies.dask = [ "dask>=2023.6.1" ] optional-dependencies.full = [ "fast-array-utils[accel,dask,sparse]", "h5py", "zarr" ] optional-dependencies.jax = [ "jax", "jaxlib" ] +optional-dependencies.torch = [ "torch" ] optional-dependencies.sparse = [ "scipy>=1.13" ] optional-dependencies.testing = [ "packaging" ] urls."Issue Tracker" = "https://github.com/scverse/fast-array-utils/issues" @@ -74,7 +75,7 @@ envs.docs.dependency-groups = [ "doc" ] envs.docs.scripts.build = "sphinx-build -M html docs docs/_build" envs.docs.scripts.clean = "git clean -fdX docs" envs.docs.scripts.open = "python -m webbrowser -t docs/_build/html/index.html" -envs.hatch-test.default-args = [] +envs.hatch-test.default-args = [ ] envs.hatch-test.dependency-groups = [ "test-min" ] # TODO: remove scipy once https://github.com/pypa/hatch/pull/2127 is released envs.hatch-test.extra-dependencies = [ "ipykernel", "ipycytoscape", "scipy" ] @@ -99,7 +100,7 @@ metadata.hooks.docstring-description = {} metadata.hooks.fancy-pypi-readme.content-type = "text/x-rst" metadata.hooks.fancy-pypi-readme.fragments = [ { path = "README.rst", start-after = ".. begin" } ] version.source = "vcs" -version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version +version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version [tool.uv] override-dependencies = [ "sphinx>=9.0.1" ] @@ -140,7 +141,7 @@ lint.per-file-ignores."typings/**/*.pyi" = [ "A002", "F403", "F405", "N801" ] lint.allowed-confusables = [ "×", "’" ] lint.flake8-bugbear.extend-immutable-calls = [ "testing.fast_array_utils.Flags" ] lint.flake8-copyright.notice-rgx = "SPDX-License-Identifier: MPL-2\\.0" -lint.flake8-type-checking.exempt-modules = [] +lint.flake8-type-checking.exempt-modules = [ ] lint.flake8-type-checking.strict = true lint.isort.known-first-party = [ "fast_array_utils" ] lint.isort.lines-after-imports = 2 diff --git a/src/fast_array_utils/conv/_to_dense.py b/src/fast_array_utils/conv/_to_dense.py index b4817e5..359c0fc 100644 --- a/src/fast_array_utils/conv/_to_dense.py +++ b/src/fast_array_utils/conv/_to_dense.py @@ -26,13 +26,13 @@ def to_dense_( *, order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: bool = False, -) -> NDArray[Any] | types.CupyArray | types.DaskArray: +) -> Any: # noqa: ANN401 import array_api_compat if not isinstance(x, np.ndarray) and array_api_compat.is_array_api_obj(x): if to_cpu_memory: return np.asarray(x, order=order) - return x # already dense + return x # array API standard covers dense arrays; sparse types are handled by registered dispatches del to_cpu_memory # it already is return np.asarray(x, order=order) diff --git a/src/fast_array_utils/stats/_generic_ops.py b/src/fast_array_utils/stats/_generic_ops.py index bcd9ca1..39aadfd 100644 --- a/src/fast_array_utils/stats/_generic_ops.py +++ b/src/fast_array_utils/stats/_generic_ops.py @@ -22,17 +22,6 @@ type ComplexAxis = tuple[Literal[0], Literal[1]] | tuple[Literal[0, 1]] | Literal[0, 1] | None -def _run_numpy_op( - x: CpuArray | GpuArray | DiskArray | types.DaskArray, - op: Ops, - *, - axis: Literal[0, 1] | None = None, - dtype: DTypeLike | None = None, -) -> NDArray[Any] | np.number[Any] | types.CupyArray | types.DaskArray: - arr = cast("NDArray[Any] | np.number[Any] | types.CupyArray | types.CupyCOOMatrix | types.DaskArray", getattr(np, op)(x, axis=axis, **_dtype_kw(dtype, op))) - return arr.toarray() if isinstance(arr, types.CupyCOOMatrix) else arr - - @singledispatch def generic_op( x: CpuArray | GpuArray | DiskArray | types.DaskArray, @@ -42,21 +31,41 @@ def generic_op( axis: Literal[0, 1] | None = None, dtype: DTypeLike | None = None, keep_cupy_as_array: bool = False, -) -> NDArray[Any] | np.number[Any] | types.CupyArray | types.DaskArray: # switch to Any later +) -> Any: # Fallback handles arbitrary array-api-compatible types, so return type can't be narrowed # noqa: ANN401 del keep_cupy_as_array if TYPE_CHECKING: # these are never passed to this fallback function, but `singledispatch` wants them assert not isinstance(x, types.CSBase | types.DaskArray | types.CupyArray | types.CupyCSMatrix) # np supports these, but doesn’t know it. (TODO: test cupy) assert not isinstance(x, types.ZarrArray | types.H5Dataset) - - # doing array_api_compat first + # Catch array-api-compat-wrapped types that lack __array_namespace__ (i.e. PyTorch) import array_api_compat if array_api_compat.is_array_api_obj(x): xp = array_api_compat.array_namespace(x) return getattr(xp, op)(x, axis=axis, **_dtype_kw(dtype, op)) - return cast("NDArray[Any] | np.number[Any]", _run_numpy_op(x, op, axis=axis, dtype=dtype)) + + arr = getattr(np, op)(x, axis=axis, **_dtype_kw(dtype, op)) + return arr.toarray() if isinstance(arr, types.CupyCOOMatrix) else arr + + +@generic_op.register(types.HasArrayNamespace) +def _generic_op_array_api( + x: types.HasArrayNamespace, + /, + op: Ops, + *, + axis: Literal[0, 1] | None = None, + dtype: DTypeLike | None = None, + keep_cupy_as_array: bool = False, +) -> Any: # noqa: ANN401 + """Handle arrays with native array API support.""" + del keep_cupy_as_array + + import array_api_compat + + xp = array_api_compat.array_namespace(x) + return getattr(xp, op)(x, axis=axis, **_dtype_kw(dtype, op)) @generic_op.register(types.CupyArray | types.CupyCSMatrix) @@ -69,7 +78,7 @@ def _generic_op_cupy( dtype: DTypeLike | None = None, keep_cupy_as_array: bool = False, ) -> types.CupyArray | np.number[Any]: - arr = cast("types.CupyArray", _run_numpy_op(x, op, axis=axis, dtype=dtype)) + arr = cast("types.CupyArray", getattr(np, op)(x, axis=axis, **_dtype_kw(dtype, op))) return cast("np.number[Any]", arr.get()[()]) if not keep_cupy_as_array and axis is None else arr.squeeze() diff --git a/src/fast_array_utils/stats/_is_constant.py b/src/fast_array_utils/stats/_is_constant.py index 69bc2c6..1a86f44 100644 --- a/src/fast_array_utils/stats/_is_constant.py +++ b/src/fast_array_utils/stats/_is_constant.py @@ -24,7 +24,7 @@ def is_constant_( /, *, axis: Literal[0, 1] | None = None, -) -> bool | NDArray[np.bool] | types.CupyArray | types.DaskArray: # switch to Any later +) -> Any: # noqa: ANN401 import array_api_compat diff --git a/src/fast_array_utils/stats/_mean_var.py b/src/fast_array_utils/stats/_mean_var.py index 9037567..d20b44d 100644 --- a/src/fast_array_utils/stats/_mean_var.py +++ b/src/fast_array_utils/stats/_mean_var.py @@ -31,13 +31,21 @@ def mean_var_( | tuple[np.float64, np.float64] | tuple[types.DaskArray, types.DaskArray] ): + import array_api_compat + from . import mean + if array_api_compat.is_array_api_obj(x): + xp = array_api_compat.array_namespace(x) + float64 = xp.float64 + else: + float64 = np.float64 + if axis is not None and isinstance(x, types.CSBase): mean_, var = _sparse_mean_var(x, axis=axis) else: - mean_ = mean(x, axis=axis, dtype=np.float64) - mean_sq = mean(power(x, 2, dtype=np.float64), axis=axis) if isinstance(x, types.DaskArray) else mean(power(x, 2), axis=axis, dtype=np.float64) + mean_ = mean(x, axis=axis, dtype=float64) + mean_sq = mean(power(x, 2, dtype=float64), axis=axis) if isinstance(x, types.DaskArray) else mean(power(x, 2), axis=axis, dtype=float64) var = mean_sq - mean_**2 if correction: # R convention == 1 (unbiased estimator) n = np.prod(x.shape) if axis is None else x.shape[axis] diff --git a/src/fast_array_utils/stats/_power.py b/src/fast_array_utils/stats/_power.py index da10d56..0bc14a4 100644 --- a/src/fast_array_utils/stats/_power.py +++ b/src/fast_array_utils/stats/_power.py @@ -10,7 +10,7 @@ if TYPE_CHECKING: - from numpy.typing import DTypeLike + from numpy.typing import Any, DTypeLike from fast_array_utils.typing import CpuArray, GpuArray @@ -25,7 +25,7 @@ def power[Arr: Array](x: Arr, n: int, /, dtype: DTypeLike | None = None) -> Arr: @singledispatch -def _power(x: Array, n: int, /, dtype: DTypeLike | None = None) -> Array: +def _power(x: Array, n: int, /, dtype: DTypeLike | None = None) -> Any: if TYPE_CHECKING: assert not isinstance(x, types.DaskArray | types.CSBase | types.CupyCSMatrix) @@ -33,7 +33,7 @@ def _power(x: Array, n: int, /, dtype: DTypeLike | None = None) -> Array: if array_api_compat.is_array_api_obj(x): xp = array_api_compat.array_namespace(x) - return xp.pow(x, n) if dtype is None else xp.pow(x.astype(dtype), n) + return xp.pow(x, n) if dtype is None else xp.pow(xp.astype(x, dtype), n) return x**n if dtype is None else np.power(x, n, dtype=dtype) # type: ignore[operator] diff --git a/src/fast_array_utils/types.py b/src/fast_array_utils/types.py index c1fbf26..a6e9101 100644 --- a/src/fast_array_utils/types.py +++ b/src/fast_array_utils/types.py @@ -4,7 +4,7 @@ from __future__ import annotations from importlib.util import find_spec -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Protocol, runtime_checkable __all__ = [ @@ -37,6 +37,8 @@ # scipy sparse if TYPE_CHECKING: + from types import ModuleType + from scipy.sparse import coo_array, coo_matrix, csc_array, csc_matrix, csr_array, csr_matrix, sparray, spmatrix else: try: # cs?_array isn’t available in older scipy versions @@ -116,3 +118,10 @@ CSRDataset.__module__ = CSCDataset.__module__ = "anndata.abc" CSDataset = CSRDataset | CSCDataset """Anndata sparse out-of-core matrices.""" + + +@runtime_checkable +class HasArrayNamespace(Protocol): + """An array object compatible with the Python array API standard.""" + + def __array_namespace__(self, /, *, api_version: str | None = None) -> ModuleType: ... diff --git a/tests/test_jax.py b/tests/test_jax.py index 0615116..c619c05 100644 --- a/tests/test_jax.py +++ b/tests/test_jax.py @@ -25,14 +25,14 @@ @pytest.fixture -def jax_arr() -> Any: +def jax_arr() -> Any: # noqa: ANN401 import jax.numpy as jnp return jnp.array([[1, 0], [2, 0], [3, 0]], dtype=jnp.float32) @pytest.mark.parametrize("axis", [None, 0, 1]) -def test_sum(jax_arr: Any, axis: Literal[0, 1] | None) -> None: +def test_sum(jax_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 import jax.numpy as jnp result = stats.sum(jax_arr, axis=axis) @@ -50,7 +50,7 @@ def test_min(jax_arr: Any, axis: Literal[0, 1] | None) -> None: @pytest.mark.parametrize("axis", [None, 0, 1]) -def test_max(jax_arr: Any, axis: Literal[0, 1] | None) -> None: +def test_max(jax_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 import jax.numpy as jnp result = stats.max(jax_arr, axis=axis) @@ -59,7 +59,7 @@ def test_max(jax_arr: Any, axis: Literal[0, 1] | None) -> None: @pytest.mark.parametrize("axis", [None, 0, 1]) -def test_mean(jax_arr: Any, axis: Literal[0, 1] | None) -> None: +def test_mean(jax_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 import jax.numpy as jnp result = stats.mean(jax_arr, axis=axis) @@ -95,7 +95,7 @@ def test_is_constant(axis: Literal[0, 1] | None) -> None: @pytest.mark.parametrize("axis", [None, 0, 1]) -def test_mean_var(jax_arr: Any, axis: Literal[0, 1] | None) -> None: +def test_mean_var(jax_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 import jax.numpy as jnp mean, var = stats.mean_var(jax_arr, axis=axis, correction=1) @@ -108,14 +108,14 @@ def test_mean_var(jax_arr: Any, axis: Literal[0, 1] | None) -> None: assert jnp.allclose(var, var_expected) -def test_to_dense(jax_arr: Any) -> None: +def test_to_dense(jax_arr: Any) -> None: # noqa: ANN401 import jax.numpy as jnp result = to_dense(jax_arr) assert jnp.array_equal(result, jax_arr) -def test_to_dense_to_cpu(jax_arr: Any) -> None: +def test_to_dense_to_cpu(jax_arr: Any) -> None: # noqa: ANN401 result = to_dense(jax_arr, to_cpu_memory=True) assert isinstance(result, np.ndarray) np.testing.assert_array_equal(result, np.asarray(jax_arr)) From cca3ad688cfa7aab7db787eaa2abe9123999183c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 15 Apr 2026 14:17:34 +0000 Subject: [PATCH 04/36] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pyproject.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 02cd8bc..8b0c05f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,9 +28,9 @@ optional-dependencies.accel = [ "numba>=0.57" ] optional-dependencies.dask = [ "dask>=2023.6.1" ] optional-dependencies.full = [ "fast-array-utils[accel,dask,sparse]", "h5py", "zarr" ] optional-dependencies.jax = [ "jax", "jaxlib" ] -optional-dependencies.torch = [ "torch" ] optional-dependencies.sparse = [ "scipy>=1.13" ] optional-dependencies.testing = [ "packaging" ] +optional-dependencies.torch = [ "torch" ] urls."Issue Tracker" = "https://github.com/scverse/fast-array-utils/issues" urls."Source Code" = "https://github.com/scverse/fast-array-utils" urls.Documentation = "https://icb-fast-array-utils.readthedocs-hosted.com/" @@ -75,7 +75,7 @@ envs.docs.dependency-groups = [ "doc" ] envs.docs.scripts.build = "sphinx-build -M html docs docs/_build" envs.docs.scripts.clean = "git clean -fdX docs" envs.docs.scripts.open = "python -m webbrowser -t docs/_build/html/index.html" -envs.hatch-test.default-args = [ ] +envs.hatch-test.default-args = [] envs.hatch-test.dependency-groups = [ "test-min" ] # TODO: remove scipy once https://github.com/pypa/hatch/pull/2127 is released envs.hatch-test.extra-dependencies = [ "ipykernel", "ipycytoscape", "scipy" ] @@ -100,7 +100,7 @@ metadata.hooks.docstring-description = {} metadata.hooks.fancy-pypi-readme.content-type = "text/x-rst" metadata.hooks.fancy-pypi-readme.fragments = [ { path = "README.rst", start-after = ".. begin" } ] version.source = "vcs" -version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version +version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version [tool.uv] override-dependencies = [ "sphinx>=9.0.1" ] @@ -141,7 +141,7 @@ lint.per-file-ignores."typings/**/*.pyi" = [ "A002", "F403", "F405", "N801" ] lint.allowed-confusables = [ "×", "’" ] lint.flake8-bugbear.extend-immutable-calls = [ "testing.fast_array_utils.Flags" ] lint.flake8-copyright.notice-rgx = "SPDX-License-Identifier: MPL-2\\.0" -lint.flake8-type-checking.exempt-modules = [ ] +lint.flake8-type-checking.exempt-modules = [] lint.flake8-type-checking.strict = true lint.isort.known-first-party = [ "fast_array_utils" ] lint.isort.lines-after-imports = 2 From c1bb155848232a93fb54024791ecc4a829aadcb3 Mon Sep 17 00:00:00 2001 From: amalia-k510 Date: Wed, 15 Apr 2026 16:53:11 +0200 Subject: [PATCH 05/36] Issues with jax test are fixed, introduced similar tests with pytorch --- tests/test_jax.py | 4 +- tests/test_pytorch.py | 116 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 tests/test_pytorch.py diff --git a/tests/test_jax.py b/tests/test_jax.py index c619c05..adf07ce 100644 --- a/tests/test_jax.py +++ b/tests/test_jax.py @@ -21,7 +21,7 @@ # problem as mean_var passes dtype= np.float64 internally, which crashes without this fix import jax - jax.config.update("jax_enable_x64", True) + jax.config.update("jax_enable_x64", True) # noqa: FBT003 @pytest.fixture @@ -41,7 +41,7 @@ def test_sum(jax_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 @pytest.mark.parametrize("axis", [None, 0, 1]) -def test_min(jax_arr: Any, axis: Literal[0, 1] | None) -> None: +def test_min(jax_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 import jax.numpy as jnp result = stats.min(jax_arr, axis=axis) diff --git a/tests/test_pytorch.py b/tests/test_pytorch.py new file mode 100644 index 0000000..d2ba9ff --- /dev/null +++ b/tests/test_pytorch.py @@ -0,0 +1,116 @@ +# SPDX-License-Identifier: MPL-2.0 +from __future__ import annotations + +from importlib.util import find_spec +from typing import TYPE_CHECKING + +import numpy as np +import pytest + +from fast_array_utils import stats +from fast_array_utils.conv import to_dense + + +if TYPE_CHECKING: + from typing import Any, Literal + +pytestmark = pytest.mark.skipif(not find_spec("torch"), reason="torch not installed") + + +@pytest.fixture +def torch_arr() -> Any: # noqa: ANN401 + import torch + + return torch.tensor([[1, 0], [2, 0], [3, 0]], dtype=torch.float32) + + +@pytest.mark.parametrize("axis", [None, 0, 1]) +def test_sum(torch_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 + import torch + + result = stats.sum(torch_arr, axis=axis) + expected = torch.sum(torch_arr, dim=axis) if axis is not None else torch.sum(torch_arr) + assert torch.equal(result, expected) + + +@pytest.mark.parametrize("axis", [None, 0, 1]) +def test_min(torch_arr: Any, axis: Literal[0, 1] | None) -> None: + import torch + + result = stats.min(torch_arr, axis=axis) + expected = torch.min(torch_arr, dim=axis).values if axis is not None else torch.min(torch_arr) + assert torch.equal(result, expected) + + +@pytest.mark.parametrize("axis", [None, 0, 1]) +def test_max(torch_arr: Any, axis: Literal[0, 1] | None) -> None: + import torch + + result = stats.max(torch_arr, axis=axis) + expected = torch.max(torch_arr, dim=axis).values if axis is not None else torch.max(torch_arr) + assert torch.equal(result, expected) + + +@pytest.mark.parametrize("axis", [None, 0, 1]) +def test_mean(torch_arr: Any, axis: Literal[0, 1] | None) -> None: + import torch + + result = stats.mean(torch_arr, axis=axis) + expected = torch.mean(torch_arr, dim=axis) if axis is not None else torch.mean(torch_arr) + assert torch.allclose(result, expected) + + +@pytest.mark.parametrize("axis", [None, 0, 1]) +def test_is_constant(axis: Literal[0, 1] | None) -> None: + import torch + + x = torch.tensor( + [ + [0, 0, 1, 1], + [0, 0, 1, 1], + [0, 0, 0, 0], + [0, 0, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 0], + ], + dtype=torch.float32, + ) + result = stats.is_constant(x, axis=axis) + + if axis is None: + assert bool(result) is False + elif axis == 0: + expected = torch.tensor([True, True, False, False]) + assert torch.equal(result, expected) + else: + expected = torch.tensor([False, False, True, True, False, True]) + assert torch.equal(result, expected) + + +@pytest.mark.parametrize("axis", [None, 0, 1]) +def test_mean_var(torch_arr: Any, axis: Literal[0, 1] | None) -> None: + import torch + + mean, var = stats.mean_var(torch_arr, axis=axis, correction=1) + + # converting to float64 to match the result + arr64 = torch_arr.to(torch.float64) + mean_expected = torch.mean(arr64, dim=axis) if axis is not None else torch.mean(arr64) + n = torch_arr.numel() if axis is None else torch_arr.shape[axis] + var_expected = torch.var(arr64, dim=axis, correction=0) * n / (n - 1) if axis is not None else torch.var(arr64, correction=0) * n / (n - 1) + + assert torch.allclose(mean, mean_expected) + assert torch.allclose(var, var_expected) + + +def test_to_dense(torch_arr: Any) -> None: # noqa: ANN401 + import torch + + result = to_dense(torch_arr) + assert torch.equal(result, torch_arr) + + +def test_to_dense_to_cpu(torch_arr: Any) -> None: # noqa: ANN401 + result = to_dense(torch_arr, to_cpu_memory=True) + assert isinstance(result, np.ndarray) + np.testing.assert_array_equal(result, torch_arr.numpy()) From bd08c2e604dc06db6ff56e20cc3be748da041250 Mon Sep 17 00:00:00 2001 From: amalia-k510 Date: Wed, 15 Apr 2026 17:00:21 +0200 Subject: [PATCH 06/36] pre-commit fixes --- tests/test_pytorch.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_pytorch.py b/tests/test_pytorch.py index d2ba9ff..6891d07 100644 --- a/tests/test_pytorch.py +++ b/tests/test_pytorch.py @@ -34,7 +34,7 @@ def test_sum(torch_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN40 @pytest.mark.parametrize("axis", [None, 0, 1]) -def test_min(torch_arr: Any, axis: Literal[0, 1] | None) -> None: +def test_min(torch_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 import torch result = stats.min(torch_arr, axis=axis) @@ -43,7 +43,7 @@ def test_min(torch_arr: Any, axis: Literal[0, 1] | None) -> None: @pytest.mark.parametrize("axis", [None, 0, 1]) -def test_max(torch_arr: Any, axis: Literal[0, 1] | None) -> None: +def test_max(torch_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 import torch result = stats.max(torch_arr, axis=axis) @@ -52,7 +52,7 @@ def test_max(torch_arr: Any, axis: Literal[0, 1] | None) -> None: @pytest.mark.parametrize("axis", [None, 0, 1]) -def test_mean(torch_arr: Any, axis: Literal[0, 1] | None) -> None: +def test_mean(torch_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 import torch result = stats.mean(torch_arr, axis=axis) @@ -88,7 +88,7 @@ def test_is_constant(axis: Literal[0, 1] | None) -> None: @pytest.mark.parametrize("axis", [None, 0, 1]) -def test_mean_var(torch_arr: Any, axis: Literal[0, 1] | None) -> None: +def test_mean_var(torch_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 import torch mean, var = stats.mean_var(torch_arr, axis=axis, correction=1) From b2e3f9b8a34d4eaa500f16e5cf066d6914e3bf1c Mon Sep 17 00:00:00 2001 From: amalia-k510 Date: Wed, 15 Apr 2026 17:14:10 +0200 Subject: [PATCH 07/36] mipy issues fix --- src/fast_array_utils/conv/__init__.py | 2 +- src/fast_array_utils/stats/__init__.py | 4 ++-- src/fast_array_utils/stats/_generic_ops.py | 2 +- src/fast_array_utils/stats/_power.py | 6 ++++-- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/fast_array_utils/conv/__init__.py b/src/fast_array_utils/conv/__init__.py index 6a34ca0..b470e17 100644 --- a/src/fast_array_utils/conv/__init__.py +++ b/src/fast_array_utils/conv/__init__.py @@ -73,4 +73,4 @@ def to_dense( Dense form of ``x`` """ - return to_dense_(x, order=order, to_cpu_memory=to_cpu_memory) + return to_dense_(x, order=order, to_cpu_memory=to_cpu_memory) # type: ignore[no-any-return] diff --git a/src/fast_array_utils/stats/__init__.py b/src/fast_array_utils/stats/__init__.py index 24712d8..67eaf30 100644 --- a/src/fast_array_utils/stats/__init__.py +++ b/src/fast_array_utils/stats/__init__.py @@ -77,7 +77,7 @@ def is_constant( from ._is_constant import is_constant_ validate_axis(x.ndim, axis) - return is_constant_(x, axis=axis) + return is_constant_(x, axis=axis) # type: ignore[no-any-return] # TODO(flying-sheep): support CSDataset (TODO) @@ -226,7 +226,7 @@ def _generic_op( assert dtype is None or op in get_args(DtypeOps), f"`dtype` is not supported for operation {op!r}" validate_axis(x.ndim, axis) - return generic_op(x, op, axis=axis, keep_cupy_as_array=keep_cupy_as_array, dtype=dtype) + return generic_op(x, op, axis=axis, keep_cupy_as_array=keep_cupy_as_array, dtype=dtype) # type: ignore[no-any-return] _generic_op.__name__ = op return cast("StatFunNoDtype | StatFunDtype", _generic_op) diff --git a/src/fast_array_utils/stats/_generic_ops.py b/src/fast_array_utils/stats/_generic_ops.py index 39aadfd..5d7d4be 100644 --- a/src/fast_array_utils/stats/_generic_ops.py +++ b/src/fast_array_utils/stats/_generic_ops.py @@ -24,7 +24,7 @@ @singledispatch def generic_op( - x: CpuArray | GpuArray | DiskArray | types.DaskArray, + x: CpuArray | GpuArray | DiskArray | types.DaskArray | types.HasArrayNamespace, /, op: Ops, *, diff --git a/src/fast_array_utils/stats/_power.py b/src/fast_array_utils/stats/_power.py index 0bc14a4..383b1d0 100644 --- a/src/fast_array_utils/stats/_power.py +++ b/src/fast_array_utils/stats/_power.py @@ -10,7 +10,9 @@ if TYPE_CHECKING: - from numpy.typing import Any, DTypeLike + from typing import Any + + from numpy.typing import DTypeLike from fast_array_utils.typing import CpuArray, GpuArray @@ -21,7 +23,7 @@ def power[Arr: Array](x: Arr, n: int, /, dtype: DTypeLike | None = None) -> Arr: """Take array or matrix to a power.""" # This wrapper is necessary because TypeVars can’t be used in `singledispatch` functions - return _power(x, n, dtype=dtype) # type: ignore[return-value] + return _power(x, n, dtype=dtype) # type: ignore[no-any-return] @singledispatch From 65e83a6d3390485a0b25b73c9e5c9ad53d66e424 Mon Sep 17 00:00:00 2001 From: amalia-k510 Date: Wed, 15 Apr 2026 17:28:09 +0200 Subject: [PATCH 08/36] speed up fix --- src/fast_array_utils/stats/_mean_var.py | 13 +++++++++---- src/fast_array_utils/stats/_power.py | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/fast_array_utils/stats/_mean_var.py b/src/fast_array_utils/stats/_mean_var.py index d20b44d..1b52b80 100644 --- a/src/fast_array_utils/stats/_mean_var.py +++ b/src/fast_array_utils/stats/_mean_var.py @@ -35,11 +35,16 @@ def mean_var_( from . import mean - if array_api_compat.is_array_api_obj(x): - xp = array_api_compat.array_namespace(x) - float64 = xp.float64 - else: + if isinstance(x, np.ndarray | types.CSBase): float64 = np.float64 + else: + import array_api_compat + + if array_api_compat.is_array_api_obj(x): + xp = array_api_compat.array_namespace(x) + float64 = xp.float64 + else: + float64 = np.float64 if axis is not None and isinstance(x, types.CSBase): mean_, var = _sparse_mean_var(x, axis=axis) diff --git a/src/fast_array_utils/stats/_power.py b/src/fast_array_utils/stats/_power.py index 383b1d0..710786e 100644 --- a/src/fast_array_utils/stats/_power.py +++ b/src/fast_array_utils/stats/_power.py @@ -27,7 +27,7 @@ def power[Arr: Array](x: Arr, n: int, /, dtype: DTypeLike | None = None) -> Arr: @singledispatch -def _power(x: Array, n: int, /, dtype: DTypeLike | None = None) -> Any: +def _power(x: Array, n: int, /, dtype: DTypeLike | None = None) -> Any: # noqa: ANN401 if TYPE_CHECKING: assert not isinstance(x, types.DaskArray | types.CSBase | types.CupyCSMatrix) From 2a1924db43c50bb796b3706fcaee2837771bf7b1 Mon Sep 17 00:00:00 2001 From: amalia-k510 Date: Fri, 17 Apr 2026 10:59:15 +0200 Subject: [PATCH 09/36] Update src/fast_array_utils/stats/_mean_var.py Co-authored-by: Philipp A. --- src/fast_array_utils/stats/_mean_var.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/fast_array_utils/stats/_mean_var.py b/src/fast_array_utils/stats/_mean_var.py index 1b52b80..b22bdb1 100644 --- a/src/fast_array_utils/stats/_mean_var.py +++ b/src/fast_array_utils/stats/_mean_var.py @@ -36,15 +36,11 @@ def mean_var_( from . import mean if isinstance(x, np.ndarray | types.CSBase): - float64 = np.float64 + xp = np else: import array_api_compat - if array_api_compat.is_array_api_obj(x): - xp = array_api_compat.array_namespace(x) - float64 = xp.float64 - else: - float64 = np.float64 + xp = array_api_compat.array_namespace(x) if array_api_compat.is_array_api_obj(x) else np if axis is not None and isinstance(x, types.CSBase): mean_, var = _sparse_mean_var(x, axis=axis) From 96842135e784e4e961f9022b37180b0055731b97 Mon Sep 17 00:00:00 2001 From: amalia-k510 Date: Fri, 17 Apr 2026 11:52:38 +0200 Subject: [PATCH 10/36] Addressed the comments --- pyproject.toml | 15 +++----------- src/fast_array_utils/stats/_is_constant.py | 24 ++++++++-------------- src/fast_array_utils/stats/_mean_var.py | 4 ++-- 3 files changed, 13 insertions(+), 30 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 8b0c05f..a5d656c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,15 +50,6 @@ doc = [ "sphinx>=9.0.1", "sphinx-autofixture>=0.4.1", ] -# for update-mypy-hook -mypy = [ - "fast-array-utils[full]", - "scipy-stubs", - # TODO: replace sphinx with this: { include-group = "doc" }, - "sphinx", - "types-docutils", - { include-group = "test" }, -] test-min = [ "coverage[toml]", "fast-array-utils[sparse,testing]", # include sparse for testing numba-less to_dense @@ -75,7 +66,7 @@ envs.docs.dependency-groups = [ "doc" ] envs.docs.scripts.build = "sphinx-build -M html docs docs/_build" envs.docs.scripts.clean = "git clean -fdX docs" envs.docs.scripts.open = "python -m webbrowser -t docs/_build/html/index.html" -envs.hatch-test.default-args = [] +envs.hatch-test.default-args = [ ] envs.hatch-test.dependency-groups = [ "test-min" ] # TODO: remove scipy once https://github.com/pypa/hatch/pull/2127 is released envs.hatch-test.extra-dependencies = [ "ipykernel", "ipycytoscape", "scipy" ] @@ -100,7 +91,7 @@ metadata.hooks.docstring-description = {} metadata.hooks.fancy-pypi-readme.content-type = "text/x-rst" metadata.hooks.fancy-pypi-readme.fragments = [ { path = "README.rst", start-after = ".. begin" } ] version.source = "vcs" -version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version +version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version [tool.uv] override-dependencies = [ "sphinx>=9.0.1" ] @@ -141,7 +132,7 @@ lint.per-file-ignores."typings/**/*.pyi" = [ "A002", "F403", "F405", "N801" ] lint.allowed-confusables = [ "×", "’" ] lint.flake8-bugbear.extend-immutable-calls = [ "testing.fast_array_utils.Flags" ] lint.flake8-copyright.notice-rgx = "SPDX-License-Identifier: MPL-2\\.0" -lint.flake8-type-checking.exempt-modules = [] +lint.flake8-type-checking.exempt-modules = [ ] lint.flake8-type-checking.strict = true lint.isort.known-first-party = [ "fast_array_utils" ] lint.isort.lines-after-imports = 2 diff --git a/src/fast_array_utils/stats/_is_constant.py b/src/fast_array_utils/stats/_is_constant.py index 1a86f44..a493a96 100644 --- a/src/fast_array_utils/stats/_is_constant.py +++ b/src/fast_array_utils/stats/_is_constant.py @@ -2,7 +2,7 @@ from __future__ import annotations from functools import partial, singledispatch -from typing import TYPE_CHECKING, cast +from typing import TYPE_CHECKING import numba import numpy as np @@ -15,8 +15,6 @@ from numpy.typing import NDArray -# checking if all values in an array are the same - @singledispatch def is_constant_( @@ -26,27 +24,21 @@ def is_constant_( axis: Literal[0, 1] | None = None, ) -> Any: # noqa: ANN401 + # Catch types that lack __array_namespace like PyTorch import array_api_compat if array_api_compat.is_array_api_obj(a): - xp = array_api_compat.array_namespace(a) - match axis: - case None: - return bool((a == xp.reshape(a, (-1,))[0]).all()) - case 0: - return is_constant_(a.T, axis=1) # reusing axis = 1 - case 1: - b = xp.broadcast_to(a[:, 0:1], a.shape) - return (a == b).all(axis=1) + return _is_constant_ndarray(a, axis=axis) raise NotImplementedError -@is_constant_.register(np.ndarray | types.CupyArray) +@is_constant_.register(np.ndarray | types.CupyArray | types.HasArrayNamespace) def _is_constant_ndarray(a: NDArray[Any] | types.CupyArray, /, *, axis: Literal[0, 1] | None = None) -> bool | NDArray[np.bool] | types.CupyArray: # Should eventually support nd, not now. + match axis: case None: - return bool((a == a.flat[0]).all()) + return bool((a == a.reshape(-1)[0]).all()) case 0: return _is_constant_rows(a.T) case 1: @@ -54,8 +46,8 @@ def _is_constant_ndarray(a: NDArray[Any] | types.CupyArray, /, *, axis: Literal[ def _is_constant_rows(a: NDArray[Any] | types.CupyArray) -> NDArray[np.bool] | types.CupyArray: - b = np.broadcast_to(a[:, 0][:, np.newaxis], a.shape) - return cast("NDArray[np.bool]", (a == b).all(axis=1)) + # broadcasts without needing np.broadcast_to + return (a == a[:, 0:1]).all(axis=1) @is_constant_.register(types.CSBase) diff --git a/src/fast_array_utils/stats/_mean_var.py b/src/fast_array_utils/stats/_mean_var.py index b22bdb1..44f642e 100644 --- a/src/fast_array_utils/stats/_mean_var.py +++ b/src/fast_array_utils/stats/_mean_var.py @@ -45,8 +45,8 @@ def mean_var_( if axis is not None and isinstance(x, types.CSBase): mean_, var = _sparse_mean_var(x, axis=axis) else: - mean_ = mean(x, axis=axis, dtype=float64) - mean_sq = mean(power(x, 2, dtype=float64), axis=axis) if isinstance(x, types.DaskArray) else mean(power(x, 2), axis=axis, dtype=float64) + mean_ = mean(x, axis=axis, dtype=xp.float64) + mean_sq = mean(power(x, 2, dtype=xp.float64), axis=axis) if isinstance(x, types.DaskArray) else mean(power(x, 2), axis=axis, dtype=xp.float64) var = mean_sq - mean_**2 if correction: # R convention == 1 (unbiased estimator) n = np.prod(x.shape) if axis is None else x.shape[axis] From 1e3c296f94676b80e0132fec1d8c92b77e97332c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 17 Apr 2026 09:52:51 +0000 Subject: [PATCH 11/36] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pyproject.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index a5d656c..2f2260b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -66,7 +66,7 @@ envs.docs.dependency-groups = [ "doc" ] envs.docs.scripts.build = "sphinx-build -M html docs docs/_build" envs.docs.scripts.clean = "git clean -fdX docs" envs.docs.scripts.open = "python -m webbrowser -t docs/_build/html/index.html" -envs.hatch-test.default-args = [ ] +envs.hatch-test.default-args = [] envs.hatch-test.dependency-groups = [ "test-min" ] # TODO: remove scipy once https://github.com/pypa/hatch/pull/2127 is released envs.hatch-test.extra-dependencies = [ "ipykernel", "ipycytoscape", "scipy" ] @@ -91,7 +91,7 @@ metadata.hooks.docstring-description = {} metadata.hooks.fancy-pypi-readme.content-type = "text/x-rst" metadata.hooks.fancy-pypi-readme.fragments = [ { path = "README.rst", start-after = ".. begin" } ] version.source = "vcs" -version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version +version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version [tool.uv] override-dependencies = [ "sphinx>=9.0.1" ] @@ -132,7 +132,7 @@ lint.per-file-ignores."typings/**/*.pyi" = [ "A002", "F403", "F405", "N801" ] lint.allowed-confusables = [ "×", "’" ] lint.flake8-bugbear.extend-immutable-calls = [ "testing.fast_array_utils.Flags" ] lint.flake8-copyright.notice-rgx = "SPDX-License-Identifier: MPL-2\\.0" -lint.flake8-type-checking.exempt-modules = [ ] +lint.flake8-type-checking.exempt-modules = [] lint.flake8-type-checking.strict = true lint.isort.known-first-party = [ "fast_array_utils" ] lint.isort.lines-after-imports = 2 From 63c5e16523ffce1d816913a7ceb1785bc2ffb445 Mon Sep 17 00:00:00 2001 From: Phil Schaf Date: Mon, 20 Apr 2026 11:28:39 +0200 Subject: [PATCH 12/36] chore: simplify --- src/fast_array_utils/conv/_to_dense.py | 3 +-- src/fast_array_utils/stats/_generic_ops.py | 5 +---- src/fast_array_utils/stats/_is_constant.py | 5 +---- src/fast_array_utils/stats/_mean_var.py | 10 ++-------- src/fast_array_utils/stats/_power.py | 3 +-- 5 files changed, 6 insertions(+), 20 deletions(-) diff --git a/src/fast_array_utils/conv/_to_dense.py b/src/fast_array_utils/conv/_to_dense.py index 359c0fc..182c4b8 100644 --- a/src/fast_array_utils/conv/_to_dense.py +++ b/src/fast_array_utils/conv/_to_dense.py @@ -5,6 +5,7 @@ from functools import partial, singledispatch from typing import TYPE_CHECKING, cast +import array_api_compat import numpy as np from .. import types @@ -27,8 +28,6 @@ def to_dense_( order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: bool = False, ) -> Any: # noqa: ANN401 - import array_api_compat - if not isinstance(x, np.ndarray) and array_api_compat.is_array_api_obj(x): if to_cpu_memory: return np.asarray(x, order=order) diff --git a/src/fast_array_utils/stats/_generic_ops.py b/src/fast_array_utils/stats/_generic_ops.py index 5d7d4be..88a695c 100644 --- a/src/fast_array_utils/stats/_generic_ops.py +++ b/src/fast_array_utils/stats/_generic_ops.py @@ -4,6 +4,7 @@ from functools import singledispatch from typing import TYPE_CHECKING, cast, get_args +import array_api_compat import numpy as np from .. import types @@ -39,8 +40,6 @@ def generic_op( # np supports these, but doesn’t know it. (TODO: test cupy) assert not isinstance(x, types.ZarrArray | types.H5Dataset) # Catch array-api-compat-wrapped types that lack __array_namespace__ (i.e. PyTorch) - import array_api_compat - if array_api_compat.is_array_api_obj(x): xp = array_api_compat.array_namespace(x) return getattr(xp, op)(x, axis=axis, **_dtype_kw(dtype, op)) @@ -62,8 +61,6 @@ def _generic_op_array_api( """Handle arrays with native array API support.""" del keep_cupy_as_array - import array_api_compat - xp = array_api_compat.array_namespace(x) return getattr(xp, op)(x, axis=axis, **_dtype_kw(dtype, op)) diff --git a/src/fast_array_utils/stats/_is_constant.py b/src/fast_array_utils/stats/_is_constant.py index a493a96..e01e079 100644 --- a/src/fast_array_utils/stats/_is_constant.py +++ b/src/fast_array_utils/stats/_is_constant.py @@ -4,6 +4,7 @@ from functools import partial, singledispatch from typing import TYPE_CHECKING +import array_api_compat import numba import numpy as np @@ -23,10 +24,7 @@ def is_constant_( *, axis: Literal[0, 1] | None = None, ) -> Any: # noqa: ANN401 - # Catch types that lack __array_namespace like PyTorch - import array_api_compat - if array_api_compat.is_array_api_obj(a): return _is_constant_ndarray(a, axis=axis) raise NotImplementedError @@ -35,7 +33,6 @@ def is_constant_( @is_constant_.register(np.ndarray | types.CupyArray | types.HasArrayNamespace) def _is_constant_ndarray(a: NDArray[Any] | types.CupyArray, /, *, axis: Literal[0, 1] | None = None) -> bool | NDArray[np.bool] | types.CupyArray: # Should eventually support nd, not now. - match axis: case None: return bool((a == a.reshape(-1)[0]).all()) diff --git a/src/fast_array_utils/stats/_mean_var.py b/src/fast_array_utils/stats/_mean_var.py index 44f642e..1a97a56 100644 --- a/src/fast_array_utils/stats/_mean_var.py +++ b/src/fast_array_utils/stats/_mean_var.py @@ -3,6 +3,7 @@ from typing import TYPE_CHECKING, no_type_check +import array_api_compat import numba import numpy as np @@ -31,16 +32,9 @@ def mean_var_( | tuple[np.float64, np.float64] | tuple[types.DaskArray, types.DaskArray] ): - import array_api_compat - from . import mean - if isinstance(x, np.ndarray | types.CSBase): - xp = np - else: - import array_api_compat - - xp = array_api_compat.array_namespace(x) if array_api_compat.is_array_api_obj(x) else np + xp = np if isinstance(x, types.CSBase) else array_api_compat.array_namespace(x) if axis is not None and isinstance(x, types.CSBase): mean_, var = _sparse_mean_var(x, axis=axis) diff --git a/src/fast_array_utils/stats/_power.py b/src/fast_array_utils/stats/_power.py index 710786e..3680a57 100644 --- a/src/fast_array_utils/stats/_power.py +++ b/src/fast_array_utils/stats/_power.py @@ -4,6 +4,7 @@ from functools import singledispatch from typing import TYPE_CHECKING +import array_api_compat import numpy as np from .. import types @@ -31,8 +32,6 @@ def _power(x: Array, n: int, /, dtype: DTypeLike | None = None) -> Any: # noqa: if TYPE_CHECKING: assert not isinstance(x, types.DaskArray | types.CSBase | types.CupyCSMatrix) - import array_api_compat - if array_api_compat.is_array_api_obj(x): xp = array_api_compat.array_namespace(x) return xp.pow(x, n) if dtype is None else xp.pow(xp.astype(x, dtype), n) From 9c8466a3f4304a96e69f2a7b0e1c4518e0c3e66a Mon Sep 17 00:00:00 2001 From: amalia-k510 Date: Mon, 27 Apr 2026 12:31:38 +0200 Subject: [PATCH 13/36] addressing comments about removing is_array_api_obj check --- src/fast_array_utils/conv/_to_dense.py | 23 ++-- src/fast_array_utils/stats/_generic_ops.py | 22 ++-- src/fast_array_utils/stats/_is_constant.py | 8 +- src/fast_array_utils/stats/_mean_var.py | 8 +- src/fast_array_utils/stats/_power.py | 23 ++-- tests/test_pytorch.py | 116 --------------------- 6 files changed, 50 insertions(+), 150 deletions(-) delete mode 100644 tests/test_pytorch.py diff --git a/src/fast_array_utils/conv/_to_dense.py b/src/fast_array_utils/conv/_to_dense.py index 359c0fc..85fb268 100644 --- a/src/fast_array_utils/conv/_to_dense.py +++ b/src/fast_array_utils/conv/_to_dense.py @@ -26,14 +26,7 @@ def to_dense_( *, order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: bool = False, -) -> Any: # noqa: ANN401 - import array_api_compat - - if not isinstance(x, np.ndarray) and array_api_compat.is_array_api_obj(x): - if to_cpu_memory: - return np.asarray(x, order=order) - return x # array API standard covers dense arrays; sparse types are handled by registered dispatches - +) -> NDArray[Any] | types.CupyArray | types.DaskArray: del to_cpu_memory # it already is return np.asarray(x, order=order) @@ -46,6 +39,20 @@ def _to_dense_cs(x: types.spmatrix | types.sparray, /, *, order: Literal["K", "A return scipy.to_dense(x, order=sparse_order(x, order=order)) +@to_dense_.register(np.ndarray) +def _to_dense_numpy(x: np.ndarray, /, *, order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: bool = False) -> np.ndarray: + # to bypass the _to_dense_array_api path + del to_cpu_memory + return np.asarray(x, order=order) + + +@to_dense_.register(types.HasArrayNamespace) +def _to_dense_array_api(x: types.HasArrayNamespace, /, *, order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: bool = False) -> Any: # noqa: ANN401 + if to_cpu_memory: + return np.asarray(x, order=order) + return x + + @to_dense_.register(types.DaskArray) def _to_dense_dask(x: types.DaskArray, /, *, order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: bool = False) -> NDArray[Any] | types.DaskArray: from . import to_dense diff --git a/src/fast_array_utils/stats/_generic_ops.py b/src/fast_array_utils/stats/_generic_ops.py index 5d7d4be..f304e29 100644 --- a/src/fast_array_utils/stats/_generic_ops.py +++ b/src/fast_array_utils/stats/_generic_ops.py @@ -31,20 +31,30 @@ def generic_op( axis: Literal[0, 1] | None = None, dtype: DTypeLike | None = None, keep_cupy_as_array: bool = False, -) -> Any: # Fallback handles arbitrary array-api-compatible types, so return type can't be narrowed # noqa: ANN401 +) -> NDArray[Any] | np.number[Any] | types.CupyArray | types.DaskArray: del keep_cupy_as_array if TYPE_CHECKING: # these are never passed to this fallback function, but `singledispatch` wants them assert not isinstance(x, types.CSBase | types.DaskArray | types.CupyArray | types.CupyCSMatrix) # np supports these, but doesn’t know it. (TODO: test cupy) assert not isinstance(x, types.ZarrArray | types.H5Dataset) - # Catch array-api-compat-wrapped types that lack __array_namespace__ (i.e. PyTorch) - import array_api_compat - if array_api_compat.is_array_api_obj(x): - xp = array_api_compat.array_namespace(x) - return getattr(xp, op)(x, axis=axis, **_dtype_kw(dtype, op)) + arr = getattr(np, op)(x, axis=axis, **_dtype_kw(dtype, op)) + return arr.toarray() if isinstance(arr, types.CupyCOOMatrix) else arr + +@generic_op.register(np.ndarray) +# to avoid going array api path that would slow down the performance +def _generic_op_numpy( + x: np.ndarray, + /, + op: Ops, + *, + axis: Literal[0, 1] | None = None, + dtype: DTypeLike | None = None, + keep_cupy_as_array: bool = False, +) -> NDArray[Any] | np.number[Any]: + del keep_cupy_as_array arr = getattr(np, op)(x, axis=axis, **_dtype_kw(dtype, op)) return arr.toarray() if isinstance(arr, types.CupyCOOMatrix) else arr diff --git a/src/fast_array_utils/stats/_is_constant.py b/src/fast_array_utils/stats/_is_constant.py index a493a96..3a010a2 100644 --- a/src/fast_array_utils/stats/_is_constant.py +++ b/src/fast_array_utils/stats/_is_constant.py @@ -22,13 +22,7 @@ def is_constant_( /, *, axis: Literal[0, 1] | None = None, -) -> Any: # noqa: ANN401 - - # Catch types that lack __array_namespace like PyTorch - import array_api_compat - - if array_api_compat.is_array_api_obj(a): - return _is_constant_ndarray(a, axis=axis) +) -> bool | NDArray[np.bool] | types.CupyArray | types.DaskArray: # pragma: no cover raise NotImplementedError diff --git a/src/fast_array_utils/stats/_mean_var.py b/src/fast_array_utils/stats/_mean_var.py index 44f642e..29eae4b 100644 --- a/src/fast_array_utils/stats/_mean_var.py +++ b/src/fast_array_utils/stats/_mean_var.py @@ -31,17 +31,17 @@ def mean_var_( | tuple[np.float64, np.float64] | tuple[types.DaskArray, types.DaskArray] ): - import array_api_compat from . import mean if isinstance(x, np.ndarray | types.CSBase): xp = np - else: + elif isinstance(x, types.HasArrayNamespace): import array_api_compat - xp = array_api_compat.array_namespace(x) if array_api_compat.is_array_api_obj(x) else np - + xp = array_api_compat.array_namespace(x) + else: + xp = np if axis is not None and isinstance(x, types.CSBase): mean_, var = _sparse_mean_var(x, axis=axis) else: diff --git a/src/fast_array_utils/stats/_power.py b/src/fast_array_utils/stats/_power.py index 710786e..c1f4b6f 100644 --- a/src/fast_array_utils/stats/_power.py +++ b/src/fast_array_utils/stats/_power.py @@ -10,14 +10,12 @@ if TYPE_CHECKING: - from typing import Any - from numpy.typing import DTypeLike from fast_array_utils.typing import CpuArray, GpuArray # All supported array types except for disk ones and CSDataset - type Array = CpuArray | GpuArray | types.DaskArray + type Array = CpuArray | GpuArray | types.DaskArray | types.HasArrayNamespace def power[Arr: Array](x: Arr, n: int, /, dtype: DTypeLike | None = None) -> Arr: @@ -27,17 +25,24 @@ def power[Arr: Array](x: Arr, n: int, /, dtype: DTypeLike | None = None) -> Arr: @singledispatch -def _power(x: Array, n: int, /, dtype: DTypeLike | None = None) -> Any: # noqa: ANN401 +def _power(x: Array, n: int, /, dtype: DTypeLike | None = None) -> Array: if TYPE_CHECKING: assert not isinstance(x, types.DaskArray | types.CSBase | types.CupyCSMatrix) + return x**n if dtype is None else np.power(x, n, dtype=dtype) # type: ignore[operator] - import array_api_compat - if array_api_compat.is_array_api_obj(x): - xp = array_api_compat.array_namespace(x) - return xp.pow(x, n) if dtype is None else xp.pow(xp.astype(x, dtype), n) +@_power.register(np.ndarray) +def _power_numpy(x: np.ndarray, n: int, /, dtype: DTypeLike | None = None) -> np.ndarray: + # avoids slower xp.pow(xp.astype(...)) path + return x**n if dtype is None else np.power(x, n, dtype=dtype) - return x**n if dtype is None else np.power(x, n, dtype=dtype) # type: ignore[operator] + +@_power.register(types.HasArrayNamespace) +def _power_array_api(x: types.HasArrayNamespace, n: int, /, dtype: DTypeLike | None = None) -> types.HasArrayNamespace: + import array_api_compat + + xp = array_api_compat.array_namespace(x) + return xp.pow(x, n) if dtype is None else xp.pow(xp.astype(x, dtype), n) @_power.register(types.CSBase | types.CupyCSMatrix) diff --git a/tests/test_pytorch.py b/tests/test_pytorch.py deleted file mode 100644 index 6891d07..0000000 --- a/tests/test_pytorch.py +++ /dev/null @@ -1,116 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -from __future__ import annotations - -from importlib.util import find_spec -from typing import TYPE_CHECKING - -import numpy as np -import pytest - -from fast_array_utils import stats -from fast_array_utils.conv import to_dense - - -if TYPE_CHECKING: - from typing import Any, Literal - -pytestmark = pytest.mark.skipif(not find_spec("torch"), reason="torch not installed") - - -@pytest.fixture -def torch_arr() -> Any: # noqa: ANN401 - import torch - - return torch.tensor([[1, 0], [2, 0], [3, 0]], dtype=torch.float32) - - -@pytest.mark.parametrize("axis", [None, 0, 1]) -def test_sum(torch_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 - import torch - - result = stats.sum(torch_arr, axis=axis) - expected = torch.sum(torch_arr, dim=axis) if axis is not None else torch.sum(torch_arr) - assert torch.equal(result, expected) - - -@pytest.mark.parametrize("axis", [None, 0, 1]) -def test_min(torch_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 - import torch - - result = stats.min(torch_arr, axis=axis) - expected = torch.min(torch_arr, dim=axis).values if axis is not None else torch.min(torch_arr) - assert torch.equal(result, expected) - - -@pytest.mark.parametrize("axis", [None, 0, 1]) -def test_max(torch_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 - import torch - - result = stats.max(torch_arr, axis=axis) - expected = torch.max(torch_arr, dim=axis).values if axis is not None else torch.max(torch_arr) - assert torch.equal(result, expected) - - -@pytest.mark.parametrize("axis", [None, 0, 1]) -def test_mean(torch_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 - import torch - - result = stats.mean(torch_arr, axis=axis) - expected = torch.mean(torch_arr, dim=axis) if axis is not None else torch.mean(torch_arr) - assert torch.allclose(result, expected) - - -@pytest.mark.parametrize("axis", [None, 0, 1]) -def test_is_constant(axis: Literal[0, 1] | None) -> None: - import torch - - x = torch.tensor( - [ - [0, 0, 1, 1], - [0, 0, 1, 1], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 1, 0], - [0, 0, 0, 0], - ], - dtype=torch.float32, - ) - result = stats.is_constant(x, axis=axis) - - if axis is None: - assert bool(result) is False - elif axis == 0: - expected = torch.tensor([True, True, False, False]) - assert torch.equal(result, expected) - else: - expected = torch.tensor([False, False, True, True, False, True]) - assert torch.equal(result, expected) - - -@pytest.mark.parametrize("axis", [None, 0, 1]) -def test_mean_var(torch_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 - import torch - - mean, var = stats.mean_var(torch_arr, axis=axis, correction=1) - - # converting to float64 to match the result - arr64 = torch_arr.to(torch.float64) - mean_expected = torch.mean(arr64, dim=axis) if axis is not None else torch.mean(arr64) - n = torch_arr.numel() if axis is None else torch_arr.shape[axis] - var_expected = torch.var(arr64, dim=axis, correction=0) * n / (n - 1) if axis is not None else torch.var(arr64, correction=0) * n / (n - 1) - - assert torch.allclose(mean, mean_expected) - assert torch.allclose(var, var_expected) - - -def test_to_dense(torch_arr: Any) -> None: # noqa: ANN401 - import torch - - result = to_dense(torch_arr) - assert torch.equal(result, torch_arr) - - -def test_to_dense_to_cpu(torch_arr: Any) -> None: # noqa: ANN401 - result = to_dense(torch_arr, to_cpu_memory=True) - assert isinstance(result, np.ndarray) - np.testing.assert_array_equal(result, torch_arr.numpy()) From e28f17623c56e7b01da61bdaa700f12cb2d468a5 Mon Sep 17 00:00:00 2001 From: amalia-k510 Date: Mon, 27 Apr 2026 12:40:44 +0200 Subject: [PATCH 14/36] import fix --- src/fast_array_utils/stats/_generic_ops.py | 5 +++-- src/fast_array_utils/stats/_power.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/fast_array_utils/stats/_generic_ops.py b/src/fast_array_utils/stats/_generic_ops.py index 55b2b5c..89cf982 100644 --- a/src/fast_array_utils/stats/_generic_ops.py +++ b/src/fast_array_utils/stats/_generic_ops.py @@ -4,7 +4,6 @@ from functools import singledispatch from typing import TYPE_CHECKING, cast, get_args -import array_api_compat import numpy as np from .. import types @@ -45,7 +44,7 @@ def generic_op( @generic_op.register(np.ndarray) -# to avoid going array api path that would slow down the performance +# register explicitly to avoid the array API path and performance slow down def _generic_op_numpy( x: np.ndarray, /, @@ -73,6 +72,8 @@ def _generic_op_array_api( """Handle arrays with native array API support.""" del keep_cupy_as_array + import array_api_compat + xp = array_api_compat.array_namespace(x) return getattr(xp, op)(x, axis=axis, **_dtype_kw(dtype, op)) diff --git a/src/fast_array_utils/stats/_power.py b/src/fast_array_utils/stats/_power.py index a8e89d9..c1f4b6f 100644 --- a/src/fast_array_utils/stats/_power.py +++ b/src/fast_array_utils/stats/_power.py @@ -4,7 +4,6 @@ from functools import singledispatch from typing import TYPE_CHECKING -import array_api_compat import numpy as np from .. import types @@ -40,6 +39,7 @@ def _power_numpy(x: np.ndarray, n: int, /, dtype: DTypeLike | None = None) -> np @_power.register(types.HasArrayNamespace) def _power_array_api(x: types.HasArrayNamespace, n: int, /, dtype: DTypeLike | None = None) -> types.HasArrayNamespace: + import array_api_compat xp = array_api_compat.array_namespace(x) return xp.pow(x, n) if dtype is None else xp.pow(xp.astype(x, dtype), n) From c70425973c2263c698682a42cb5cd177b01fe927 Mon Sep 17 00:00:00 2001 From: amalia-k510 Date: Mon, 27 Apr 2026 12:58:24 +0200 Subject: [PATCH 15/36] ignore comments update and mypy test --- pyproject.toml | 10 +++++++--- src/fast_array_utils/conv/_to_dense.py | 2 +- src/fast_array_utils/stats/_generic_ops.py | 2 +- src/fast_array_utils/stats/_power.py | 6 +++--- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 2f2260b..4a4512c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -66,7 +66,7 @@ envs.docs.dependency-groups = [ "doc" ] envs.docs.scripts.build = "sphinx-build -M html docs docs/_build" envs.docs.scripts.clean = "git clean -fdX docs" envs.docs.scripts.open = "python -m webbrowser -t docs/_build/html/index.html" -envs.hatch-test.default-args = [] +envs.hatch-test.default-args = [ ] envs.hatch-test.dependency-groups = [ "test-min" ] # TODO: remove scipy once https://github.com/pypa/hatch/pull/2127 is released envs.hatch-test.extra-dependencies = [ "ipykernel", "ipycytoscape", "scipy" ] @@ -91,7 +91,7 @@ metadata.hooks.docstring-description = {} metadata.hooks.fancy-pypi-readme.content-type = "text/x-rst" metadata.hooks.fancy-pypi-readme.fragments = [ { path = "README.rst", start-after = ".. begin" } ] version.source = "vcs" -version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version +version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version [tool.uv] override-dependencies = [ "sphinx>=9.0.1" ] @@ -132,7 +132,7 @@ lint.per-file-ignores."typings/**/*.pyi" = [ "A002", "F403", "F405", "N801" ] lint.allowed-confusables = [ "×", "’" ] lint.flake8-bugbear.extend-immutable-calls = [ "testing.fast_array_utils.Flags" ] lint.flake8-copyright.notice-rgx = "SPDX-License-Identifier: MPL-2\\.0" -lint.flake8-type-checking.exempt-modules = [] +lint.flake8-type-checking.exempt-modules = [ ] lint.flake8-type-checking.strict = true lint.isort.known-first-party = [ "fast_array_utils" ] lint.isort.lines-after-imports = 2 @@ -179,6 +179,10 @@ implicit_reexport = true explicit_package_bases = true mypy_path = [ "$MYPY_CONFIG_FILE_DIR/typings", "$MYPY_CONFIG_FILE_DIR/src" ] +[[tool.mypy.overrides]] +module = [ "jax", "jax.*" ] +ignore_missing_imports = true + [tool.pyright] stubPath = "./typings" reportPrivateUsage = false diff --git a/src/fast_array_utils/conv/_to_dense.py b/src/fast_array_utils/conv/_to_dense.py index 85fb268..a0b9b83 100644 --- a/src/fast_array_utils/conv/_to_dense.py +++ b/src/fast_array_utils/conv/_to_dense.py @@ -21,7 +21,7 @@ # fallback’s arg0 type has to include types of registered functions @singledispatch def to_dense_( - x: CpuArray | GpuArray | DiskArray | types.DaskArray | types.sparray | types.spmatrix | types.CupySpMatrix, + x: CpuArray | GpuArray | DiskArray | types.DaskArray | types.sparray | types.spmatrix | types.CupySpMatrix | types.HasArrayNamespace, /, *, order: Literal["K", "A", "C", "F"] = "K", diff --git a/src/fast_array_utils/stats/_generic_ops.py b/src/fast_array_utils/stats/_generic_ops.py index 89cf982..dbff5c5 100644 --- a/src/fast_array_utils/stats/_generic_ops.py +++ b/src/fast_array_utils/stats/_generic_ops.py @@ -56,7 +56,7 @@ def _generic_op_numpy( ) -> NDArray[Any] | np.number[Any]: del keep_cupy_as_array arr = getattr(np, op)(x, axis=axis, **_dtype_kw(dtype, op)) - return arr.toarray() if isinstance(arr, types.CupyCOOMatrix) else arr + return arr.toarray() if isinstance(arr, types.CupyCOOMatrix) else arr # type: ignore[return-value] @generic_op.register(types.HasArrayNamespace) diff --git a/src/fast_array_utils/stats/_power.py b/src/fast_array_utils/stats/_power.py index c1f4b6f..0bc4a44 100644 --- a/src/fast_array_utils/stats/_power.py +++ b/src/fast_array_utils/stats/_power.py @@ -21,14 +21,14 @@ def power[Arr: Array](x: Arr, n: int, /, dtype: DTypeLike | None = None) -> Arr: """Take array or matrix to a power.""" # This wrapper is necessary because TypeVars can’t be used in `singledispatch` functions - return _power(x, n, dtype=dtype) # type: ignore[no-any-return] + return _power(x, n, dtype=dtype) # type: ignore[return-value] @singledispatch def _power(x: Array, n: int, /, dtype: DTypeLike | None = None) -> Array: if TYPE_CHECKING: assert not isinstance(x, types.DaskArray | types.CSBase | types.CupyCSMatrix) - return x**n if dtype is None else np.power(x, n, dtype=dtype) # type: ignore[operator] + return x**n if dtype is None else np.power(x, n, dtype=dtype) # type: ignore[arg-type] @_power.register(np.ndarray) @@ -42,7 +42,7 @@ def _power_array_api(x: types.HasArrayNamespace, n: int, /, dtype: DTypeLike | N import array_api_compat xp = array_api_compat.array_namespace(x) - return xp.pow(x, n) if dtype is None else xp.pow(xp.astype(x, dtype), n) + return xp.pow(x, n) if dtype is None else xp.pow(xp.astype(x, dtype), n) # type: ignore[no-any-return] @_power.register(types.CSBase | types.CupyCSMatrix) From aaccbdaac00595d3e6129fe5e5f0e4f7d935dbe8 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 11:03:48 +0000 Subject: [PATCH 16/36] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pyproject.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 601ee50..912d417 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -66,7 +66,7 @@ envs.docs.dependency-groups = [ "doc" ] envs.docs.scripts.build = "sphinx-build -M html docs docs/_build" envs.docs.scripts.clean = "git clean -fdX docs" envs.docs.scripts.open = "python -m webbrowser -t docs/_build/html/index.html" -envs.hatch-test.default-args = [ ] +envs.hatch-test.default-args = [] envs.hatch-test.dependency-groups = [ "test-min" ] # TODO: remove scipy once https://github.com/pypa/hatch/pull/2127 is released envs.hatch-test.extra-dependencies = [ "ipykernel", "ipycytoscape", "scipy" ] @@ -91,7 +91,7 @@ metadata.hooks.docstring-description = {} metadata.hooks.fancy-pypi-readme.content-type = "text/x-rst" metadata.hooks.fancy-pypi-readme.fragments = [ { path = "README.rst", start-after = ".. begin" } ] version.source = "vcs" -version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version +version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version [tool.uv] override-dependencies = [ "sphinx>=9.0.1" ] @@ -132,7 +132,7 @@ lint.per-file-ignores."typings/**/*.pyi" = [ "A002", "F403", "F405", "N801" ] lint.allowed-confusables = [ "×", "’" ] lint.flake8-bugbear.extend-immutable-calls = [ "testing.fast_array_utils.Flags" ] lint.flake8-copyright.notice-rgx = "SPDX-License-Identifier: MPL-2\\.0" -lint.flake8-type-checking.exempt-modules = [ ] +lint.flake8-type-checking.exempt-modules = [] lint.flake8-type-checking.strict = true lint.isort.known-first-party = [ "fast_array_utils" ] lint.isort.lines-after-imports = 2 From 7e5102aefaf85a69ef9a20698d2312b1a313e444 Mon Sep 17 00:00:00 2001 From: amalia-k510 Date: Mon, 27 Apr 2026 13:06:59 +0200 Subject: [PATCH 17/36] main version --- pyproject.toml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 912d417..dd45414 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,14 +23,12 @@ classifiers = [ "Programming Language :: Python :: 3.14", ] dynamic = [ "description", "readme", "version" ] -dependencies = [ "array-api-compat", "numpy>=2" ] +dependencies = [ "numpy>=2" ] optional-dependencies.accel = [ "numba>=0.57" ] optional-dependencies.dask = [ "dask>=2023.6.1" ] optional-dependencies.full = [ "fast-array-utils[accel,dask,sparse]", "h5py", "zarr" ] -optional-dependencies.jax = [ "jax", "jaxlib" ] optional-dependencies.sparse = [ "scipy>=1.13" ] optional-dependencies.testing = [ "packaging" ] -optional-dependencies.torch = [ "torch" ] urls."Issue Tracker" = "https://github.com/scverse/fast-array-utils/issues" urls."Source Code" = "https://github.com/scverse/fast-array-utils" urls.Documentation = "https://icb-fast-array-utils.readthedocs-hosted.com/" @@ -66,13 +64,14 @@ envs.docs.dependency-groups = [ "doc" ] envs.docs.scripts.build = "sphinx-build -M html docs docs/_build" envs.docs.scripts.clean = "git clean -fdX docs" envs.docs.scripts.open = "python -m webbrowser -t docs/_build/html/index.html" -envs.hatch-test.default-args = [] +envs.hatch-test.default-args = [ ] envs.hatch-test.dependency-groups = [ "test-min" ] # TODO: remove scipy once https://github.com/pypa/hatch/pull/2127 is released envs.hatch-test.extra-dependencies = [ "ipykernel", "ipycytoscape", "scipy" ] envs.hatch-test.env-vars.CODSPEED_PROFILE_FOLDER = "test-data/codspeed" envs.hatch-test.overrides.matrix.extras.features = [ { if = [ "full" ], value = "full" }, + { if = [ "full" ], value = "jax" }, ] envs.hatch-test.overrides.matrix.extras.dependency-groups = [ { if = [ "full" ], value = "test" }, @@ -91,7 +90,7 @@ metadata.hooks.docstring-description = {} metadata.hooks.fancy-pypi-readme.content-type = "text/x-rst" metadata.hooks.fancy-pypi-readme.fragments = [ { path = "README.rst", start-after = ".. begin" } ] version.source = "vcs" -version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version +version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version [tool.uv] override-dependencies = [ "sphinx>=9.0.1" ] @@ -132,7 +131,7 @@ lint.per-file-ignores."typings/**/*.pyi" = [ "A002", "F403", "F405", "N801" ] lint.allowed-confusables = [ "×", "’" ] lint.flake8-bugbear.extend-immutable-calls = [ "testing.fast_array_utils.Flags" ] lint.flake8-copyright.notice-rgx = "SPDX-License-Identifier: MPL-2\\.0" -lint.flake8-type-checking.exempt-modules = [] +lint.flake8-type-checking.exempt-modules = [ ] lint.flake8-type-checking.strict = true lint.isort.known-first-party = [ "fast_array_utils" ] lint.isort.lines-after-imports = 2 From eed16a9afa4cd8138e168373512179fdaed7c9c3 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 11:07:21 +0000 Subject: [PATCH 18/36] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pyproject.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index dd45414..0eecf7a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,7 +64,7 @@ envs.docs.dependency-groups = [ "doc" ] envs.docs.scripts.build = "sphinx-build -M html docs docs/_build" envs.docs.scripts.clean = "git clean -fdX docs" envs.docs.scripts.open = "python -m webbrowser -t docs/_build/html/index.html" -envs.hatch-test.default-args = [ ] +envs.hatch-test.default-args = [] envs.hatch-test.dependency-groups = [ "test-min" ] # TODO: remove scipy once https://github.com/pypa/hatch/pull/2127 is released envs.hatch-test.extra-dependencies = [ "ipykernel", "ipycytoscape", "scipy" ] @@ -90,7 +90,7 @@ metadata.hooks.docstring-description = {} metadata.hooks.fancy-pypi-readme.content-type = "text/x-rst" metadata.hooks.fancy-pypi-readme.fragments = [ { path = "README.rst", start-after = ".. begin" } ] version.source = "vcs" -version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version +version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version [tool.uv] override-dependencies = [ "sphinx>=9.0.1" ] @@ -131,7 +131,7 @@ lint.per-file-ignores."typings/**/*.pyi" = [ "A002", "F403", "F405", "N801" ] lint.allowed-confusables = [ "×", "’" ] lint.flake8-bugbear.extend-immutable-calls = [ "testing.fast_array_utils.Flags" ] lint.flake8-copyright.notice-rgx = "SPDX-License-Identifier: MPL-2\\.0" -lint.flake8-type-checking.exempt-modules = [ ] +lint.flake8-type-checking.exempt-modules = [] lint.flake8-type-checking.strict = true lint.isort.known-first-party = [ "fast_array_utils" ] lint.isort.lines-after-imports = 2 From 567107afa4e682f44010d6efb66096a49c5a4770 Mon Sep 17 00:00:00 2001 From: amalia-k510 Date: Mon, 27 Apr 2026 13:12:26 +0200 Subject: [PATCH 19/36] residues ignore comments removed --- src/fast_array_utils/conv/__init__.py | 2 +- src/fast_array_utils/stats/__init__.py | 4 ++-- src/fast_array_utils/stats/_power.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/fast_array_utils/conv/__init__.py b/src/fast_array_utils/conv/__init__.py index b470e17..6a34ca0 100644 --- a/src/fast_array_utils/conv/__init__.py +++ b/src/fast_array_utils/conv/__init__.py @@ -73,4 +73,4 @@ def to_dense( Dense form of ``x`` """ - return to_dense_(x, order=order, to_cpu_memory=to_cpu_memory) # type: ignore[no-any-return] + return to_dense_(x, order=order, to_cpu_memory=to_cpu_memory) diff --git a/src/fast_array_utils/stats/__init__.py b/src/fast_array_utils/stats/__init__.py index 67eaf30..24712d8 100644 --- a/src/fast_array_utils/stats/__init__.py +++ b/src/fast_array_utils/stats/__init__.py @@ -77,7 +77,7 @@ def is_constant( from ._is_constant import is_constant_ validate_axis(x.ndim, axis) - return is_constant_(x, axis=axis) # type: ignore[no-any-return] + return is_constant_(x, axis=axis) # TODO(flying-sheep): support CSDataset (TODO) @@ -226,7 +226,7 @@ def _generic_op( assert dtype is None or op in get_args(DtypeOps), f"`dtype` is not supported for operation {op!r}" validate_axis(x.ndim, axis) - return generic_op(x, op, axis=axis, keep_cupy_as_array=keep_cupy_as_array, dtype=dtype) # type: ignore[no-any-return] + return generic_op(x, op, axis=axis, keep_cupy_as_array=keep_cupy_as_array, dtype=dtype) _generic_op.__name__ = op return cast("StatFunNoDtype | StatFunDtype", _generic_op) diff --git a/src/fast_array_utils/stats/_power.py b/src/fast_array_utils/stats/_power.py index 0bc4a44..ea3bec2 100644 --- a/src/fast_array_utils/stats/_power.py +++ b/src/fast_array_utils/stats/_power.py @@ -28,7 +28,7 @@ def power[Arr: Array](x: Arr, n: int, /, dtype: DTypeLike | None = None) -> Arr: def _power(x: Array, n: int, /, dtype: DTypeLike | None = None) -> Array: if TYPE_CHECKING: assert not isinstance(x, types.DaskArray | types.CSBase | types.CupyCSMatrix) - return x**n if dtype is None else np.power(x, n, dtype=dtype) # type: ignore[arg-type] + return x**n if dtype is None else np.power(x, n, dtype=dtype) # type: ignore[operator] @_power.register(np.ndarray) From aab50f76884c80663eed9192f105996bc5171dd9 Mon Sep 17 00:00:00 2001 From: amalia-k510 Date: Mon, 27 Apr 2026 13:15:40 +0200 Subject: [PATCH 20/36] pyproject, jax optional dependencies --- pyproject.toml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 0eecf7a..5d8ece6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,7 @@ dependencies = [ "numpy>=2" ] optional-dependencies.accel = [ "numba>=0.57" ] optional-dependencies.dask = [ "dask>=2023.6.1" ] optional-dependencies.full = [ "fast-array-utils[accel,dask,sparse]", "h5py", "zarr" ] +optional-dependencies.jax = [ "jax", "jaxlib" ] optional-dependencies.sparse = [ "scipy>=1.13" ] optional-dependencies.testing = [ "packaging" ] urls."Issue Tracker" = "https://github.com/scverse/fast-array-utils/issues" @@ -64,7 +65,7 @@ envs.docs.dependency-groups = [ "doc" ] envs.docs.scripts.build = "sphinx-build -M html docs docs/_build" envs.docs.scripts.clean = "git clean -fdX docs" envs.docs.scripts.open = "python -m webbrowser -t docs/_build/html/index.html" -envs.hatch-test.default-args = [] +envs.hatch-test.default-args = [ ] envs.hatch-test.dependency-groups = [ "test-min" ] # TODO: remove scipy once https://github.com/pypa/hatch/pull/2127 is released envs.hatch-test.extra-dependencies = [ "ipykernel", "ipycytoscape", "scipy" ] @@ -90,7 +91,7 @@ metadata.hooks.docstring-description = {} metadata.hooks.fancy-pypi-readme.content-type = "text/x-rst" metadata.hooks.fancy-pypi-readme.fragments = [ { path = "README.rst", start-after = ".. begin" } ] version.source = "vcs" -version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version +version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version [tool.uv] override-dependencies = [ "sphinx>=9.0.1" ] @@ -131,7 +132,7 @@ lint.per-file-ignores."typings/**/*.pyi" = [ "A002", "F403", "F405", "N801" ] lint.allowed-confusables = [ "×", "’" ] lint.flake8-bugbear.extend-immutable-calls = [ "testing.fast_array_utils.Flags" ] lint.flake8-copyright.notice-rgx = "SPDX-License-Identifier: MPL-2\\.0" -lint.flake8-type-checking.exempt-modules = [] +lint.flake8-type-checking.exempt-modules = [ ] lint.flake8-type-checking.strict = true lint.isort.known-first-party = [ "fast_array_utils" ] lint.isort.lines-after-imports = 2 From 91ef896682733b3ec463d40c6fdb6fbd32ff0199 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 11:15:55 +0000 Subject: [PATCH 21/36] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pyproject.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 5d8ece6..04b58e5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,7 +65,7 @@ envs.docs.dependency-groups = [ "doc" ] envs.docs.scripts.build = "sphinx-build -M html docs docs/_build" envs.docs.scripts.clean = "git clean -fdX docs" envs.docs.scripts.open = "python -m webbrowser -t docs/_build/html/index.html" -envs.hatch-test.default-args = [ ] +envs.hatch-test.default-args = [] envs.hatch-test.dependency-groups = [ "test-min" ] # TODO: remove scipy once https://github.com/pypa/hatch/pull/2127 is released envs.hatch-test.extra-dependencies = [ "ipykernel", "ipycytoscape", "scipy" ] @@ -91,7 +91,7 @@ metadata.hooks.docstring-description = {} metadata.hooks.fancy-pypi-readme.content-type = "text/x-rst" metadata.hooks.fancy-pypi-readme.fragments = [ { path = "README.rst", start-after = ".. begin" } ] version.source = "vcs" -version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version +version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version [tool.uv] override-dependencies = [ "sphinx>=9.0.1" ] @@ -132,7 +132,7 @@ lint.per-file-ignores."typings/**/*.pyi" = [ "A002", "F403", "F405", "N801" ] lint.allowed-confusables = [ "×", "’" ] lint.flake8-bugbear.extend-immutable-calls = [ "testing.fast_array_utils.Flags" ] lint.flake8-copyright.notice-rgx = "SPDX-License-Identifier: MPL-2\\.0" -lint.flake8-type-checking.exempt-modules = [ ] +lint.flake8-type-checking.exempt-modules = [] lint.flake8-type-checking.strict = true lint.isort.known-first-party = [ "fast_array_utils" ] lint.isort.lines-after-imports = 2 From 0f62abcfaf2a09216c3af45bbdbf0a49cdd6afd8 Mon Sep 17 00:00:00 2001 From: amalia-k510 Date: Mon, 27 Apr 2026 13:55:22 +0200 Subject: [PATCH 22/36] commented addressed, mypy try again --- pyproject.toml | 4 ++++ src/fast_array_utils/stats/_generic_ops.py | 3 +-- src/fast_array_utils/stats/_power.py | 4 +--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 5d8ece6..8162886 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -146,6 +146,10 @@ implicit_reexport = true explicit_package_bases = true mypy_path = [ "$MYPY_CONFIG_FILE_DIR/typings", "$MYPY_CONFIG_FILE_DIR/src" ] +[[tool.mypy.overrides]] +module = [ "jax", "jax.*" ] +ignore_missing_imports = true + [tool.pyright] stubPath = "./typings" reportPrivateUsage = false diff --git a/src/fast_array_utils/stats/_generic_ops.py b/src/fast_array_utils/stats/_generic_ops.py index bb25b4b..eddece9 100644 --- a/src/fast_array_utils/stats/_generic_ops.py +++ b/src/fast_array_utils/stats/_generic_ops.py @@ -55,8 +55,7 @@ def _generic_op_numpy( keep_cupy_as_array: bool = False, ) -> NDArray[Any] | np.number[Any]: del keep_cupy_as_array - arr = getattr(np, op)(x, axis=axis, **_dtype_kw(dtype, op)) - return arr.toarray() if isinstance(arr, types.CupyCOOMatrix) else arr # type: ignore[return-value] + return getattr(np, op)(x, axis=axis, **_dtype_kw(dtype, op)) @generic_op.register(types.HasArrayNamespace) diff --git a/src/fast_array_utils/stats/_power.py b/src/fast_array_utils/stats/_power.py index ea3bec2..de72bf5 100644 --- a/src/fast_array_utils/stats/_power.py +++ b/src/fast_array_utils/stats/_power.py @@ -26,9 +26,7 @@ def power[Arr: Array](x: Arr, n: int, /, dtype: DTypeLike | None = None) -> Arr: @singledispatch def _power(x: Array, n: int, /, dtype: DTypeLike | None = None) -> Array: - if TYPE_CHECKING: - assert not isinstance(x, types.DaskArray | types.CSBase | types.CupyCSMatrix) - return x**n if dtype is None else np.power(x, n, dtype=dtype) # type: ignore[operator] + raise NotImplementedError @_power.register(np.ndarray) From 37a66341a45f34b08f53ae194bc777d28092e1a9 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 11:55:42 +0000 Subject: [PATCH 23/36] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pyproject.toml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index b184ce2..2e3bd9a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -145,10 +145,7 @@ strict = true implicit_reexport = true explicit_package_bases = true mypy_path = [ "$MYPY_CONFIG_FILE_DIR/typings", "$MYPY_CONFIG_FILE_DIR/src" ] - -[[tool.mypy.overrides]] -module = [ "jax", "jax.*" ] -ignore_missing_imports = true +overrides = [ { module = [ "jax", "jax.*" ], ignore_missing_imports = true } ] [tool.pyright] stubPath = "./typings" From bab43927f7eaca36204aec8ed1e32fa74b6ff368 Mon Sep 17 00:00:00 2001 From: amalia-k510 Date: Mon, 27 Apr 2026 13:57:30 +0200 Subject: [PATCH 24/36] mypy comment add --- src/fast_array_utils/stats/_generic_ops.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fast_array_utils/stats/_generic_ops.py b/src/fast_array_utils/stats/_generic_ops.py index eddece9..772a9c5 100644 --- a/src/fast_array_utils/stats/_generic_ops.py +++ b/src/fast_array_utils/stats/_generic_ops.py @@ -55,7 +55,7 @@ def _generic_op_numpy( keep_cupy_as_array: bool = False, ) -> NDArray[Any] | np.number[Any]: del keep_cupy_as_array - return getattr(np, op)(x, axis=axis, **_dtype_kw(dtype, op)) + return getattr(np, op)(x, axis=axis, **_dtype_kw(dtype, op)) # type: ignore[no-any-return] @generic_op.register(types.HasArrayNamespace) From 3d4ee3a18e3839e21256b7046a8f568dbe4d2857 Mon Sep 17 00:00:00 2001 From: Phil Schaf Date: Mon, 27 Apr 2026 14:01:46 +0200 Subject: [PATCH 25/36] types --- .pre-commit-config.yaml | 1 + src/fast_array_utils/conv/_to_dense.py | 2 +- src/fast_array_utils/stats/__init__.py | 10 ++++++---- src/fast_array_utils/stats/_generic_ops.py | 8 ++++---- tests/test_jax.py | 20 ++++++++++---------- 5 files changed, 22 insertions(+), 19 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9663c63..404647e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -32,6 +32,7 @@ repos: - array-api-compat>=1.13 - dask>=2026.1 - h5py>=3.15 + - jax>=0.10 - numba>=0.63 - packaging>=26 - pytest>=9 diff --git a/src/fast_array_utils/conv/_to_dense.py b/src/fast_array_utils/conv/_to_dense.py index a0b9b83..131455e 100644 --- a/src/fast_array_utils/conv/_to_dense.py +++ b/src/fast_array_utils/conv/_to_dense.py @@ -47,7 +47,7 @@ def _to_dense_numpy(x: np.ndarray, /, *, order: Literal["K", "A", "C", "F"] = "K @to_dense_.register(types.HasArrayNamespace) -def _to_dense_array_api(x: types.HasArrayNamespace, /, *, order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: bool = False) -> Any: # noqa: ANN401 +def _to_dense_array_api[A: types.HasArrayNamespace](x: A, /, *, order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: bool = False) -> A | np.ndarray: if to_cpu_memory: return np.asarray(x, order=order) return x diff --git a/src/fast_array_utils/stats/__init__.py b/src/fast_array_utils/stats/__init__.py index 24712d8..8fbaedc 100644 --- a/src/fast_array_utils/stats/__init__.py +++ b/src/fast_array_utils/stats/__init__.py @@ -214,13 +214,13 @@ def _mk_generic_op(op: DtypeOps) -> StatFunDtype: ... # https://github.com/scverse/fast-array-utils/issues/52 def _mk_generic_op(op: Ops) -> StatFunNoDtype | StatFunDtype: def _generic_op( - x: CpuArray | GpuArray | DiskArray | types.DaskArray, + x: CpuArray | GpuArray | DiskArray | types.DaskArray | types.HasArrayNamespace, /, *, axis: Literal[0, 1] | None = None, dtype: DTypeLike | None = None, keep_cupy_as_array: bool = False, - ) -> NDArray[Any] | np.number[Any] | types.CupyArray | types.DaskArray: + ) -> NDArray[Any] | np.number[Any] | types.CupyArray | types.DaskArray | types.HasArrayNamespace: from ._generic_ops import generic_op assert dtype is None or op in get_args(DtypeOps), f"`dtype` is not supported for operation {op!r}" @@ -359,14 +359,16 @@ def sum(x: GpuArray, /, *, axis: None = None, dtype: DTypeLike | None = None, ke def sum(x: GpuArray, /, *, axis: Literal[0, 1], dtype: DTypeLike | None = None, keep_cupy_as_array: bool = False) -> types.CupyArray: ... @overload def sum(x: types.DaskArray, /, *, axis: Literal[0, 1] | None = None, dtype: DTypeLike | None = None, keep_cupy_as_array: bool = False) -> types.DaskArray: ... +@overload +def sum[A: types.HasArrayNamespace](x: A, /, *, axis: Literal[0, 1] | None = None, dtype: DTypeLike | None = None, keep_cupy_as_array: bool = False) -> A: ... def sum( - x: CpuArray | GpuArray | DiskArray | types.DaskArray, + x: CpuArray | GpuArray | DiskArray | types.DaskArray | types.HasArrayNamespace, /, *, axis: Literal[0, 1] | None = None, dtype: DTypeLike | None = None, keep_cupy_as_array: bool = False, -) -> NDArray[Any] | types.CupyArray | np.number[Any] | types.DaskArray: +) -> NDArray[Any] | types.CupyArray | np.number[Any] | types.DaskArray | types.HasArrayNamespace: """Sum over both or one axis. Parameters diff --git a/src/fast_array_utils/stats/_generic_ops.py b/src/fast_array_utils/stats/_generic_ops.py index 772a9c5..027c181 100644 --- a/src/fast_array_utils/stats/_generic_ops.py +++ b/src/fast_array_utils/stats/_generic_ops.py @@ -59,22 +59,22 @@ def _generic_op_numpy( @generic_op.register(types.HasArrayNamespace) -def _generic_op_array_api( - x: types.HasArrayNamespace, +def _generic_op_array_api[A: types.HasArrayNamespace]( + x: A, /, op: Ops, *, axis: Literal[0, 1] | None = None, dtype: DTypeLike | None = None, keep_cupy_as_array: bool = False, -) -> Any: # noqa: ANN401 +) -> A: """Handle arrays with native array API support.""" del keep_cupy_as_array import array_api_compat xp = array_api_compat.array_namespace(x) - return getattr(xp, op)(x, axis=axis, **_dtype_kw(dtype, op)) + return getattr(xp, op)(x, axis=axis, **_dtype_kw(dtype, op)) # type: ignore[no-any-return] @generic_op.register(types.CupyArray | types.CupyCSMatrix) diff --git a/tests/test_jax.py b/tests/test_jax.py index adf07ce..a6fe9c2 100644 --- a/tests/test_jax.py +++ b/tests/test_jax.py @@ -12,7 +12,7 @@ if TYPE_CHECKING: - from typing import Any, Literal + from typing import Literal pytestmark = pytest.mark.skipif(not find_spec("jax"), reason="jax not installed") @@ -21,18 +21,18 @@ # problem as mean_var passes dtype= np.float64 internally, which crashes without this fix import jax - jax.config.update("jax_enable_x64", True) # noqa: FBT003 + jax.config.update("jax_enable_x64", True) # type: ignore[no-untyped-call] # noqa: FBT003 @pytest.fixture -def jax_arr() -> Any: # noqa: ANN401 +def jax_arr() -> jax.Array: import jax.numpy as jnp return jnp.array([[1, 0], [2, 0], [3, 0]], dtype=jnp.float32) @pytest.mark.parametrize("axis", [None, 0, 1]) -def test_sum(jax_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 +def test_sum(jax_arr: jax.Array, axis: Literal[0, 1] | None) -> None: import jax.numpy as jnp result = stats.sum(jax_arr, axis=axis) @@ -41,7 +41,7 @@ def test_sum(jax_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 @pytest.mark.parametrize("axis", [None, 0, 1]) -def test_min(jax_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 +def test_min(jax_arr: jax.Array, axis: Literal[0, 1] | None) -> None: import jax.numpy as jnp result = stats.min(jax_arr, axis=axis) @@ -50,7 +50,7 @@ def test_min(jax_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 @pytest.mark.parametrize("axis", [None, 0, 1]) -def test_max(jax_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 +def test_max(jax_arr: jax.Array, axis: Literal[0, 1] | None) -> None: import jax.numpy as jnp result = stats.max(jax_arr, axis=axis) @@ -59,7 +59,7 @@ def test_max(jax_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 @pytest.mark.parametrize("axis", [None, 0, 1]) -def test_mean(jax_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 +def test_mean(jax_arr: jax.Array, axis: Literal[0, 1] | None) -> None: import jax.numpy as jnp result = stats.mean(jax_arr, axis=axis) @@ -95,7 +95,7 @@ def test_is_constant(axis: Literal[0, 1] | None) -> None: @pytest.mark.parametrize("axis", [None, 0, 1]) -def test_mean_var(jax_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: ANN401 +def test_mean_var(jax_arr: jax.Array, axis: Literal[0, 1] | None) -> None: import jax.numpy as jnp mean, var = stats.mean_var(jax_arr, axis=axis, correction=1) @@ -108,14 +108,14 @@ def test_mean_var(jax_arr: Any, axis: Literal[0, 1] | None) -> None: # noqa: AN assert jnp.allclose(var, var_expected) -def test_to_dense(jax_arr: Any) -> None: # noqa: ANN401 +def test_to_dense(jax_arr: jax.Array) -> None: import jax.numpy as jnp result = to_dense(jax_arr) assert jnp.array_equal(result, jax_arr) -def test_to_dense_to_cpu(jax_arr: Any) -> None: # noqa: ANN401 +def test_to_dense_to_cpu(jax_arr: jax.Array) -> None: result = to_dense(jax_arr, to_cpu_memory=True) assert isinstance(result, np.ndarray) np.testing.assert_array_equal(result, np.asarray(jax_arr)) From c77a1bc891e768571bb70f6f6ce40c737d40a7ed Mon Sep 17 00:00:00 2001 From: amalia-k510 Date: Wed, 29 Apr 2026 12:49:09 +0200 Subject: [PATCH 26/36] types for others --- src/fast_array_utils/conv/__init__.py | 8 ++++++-- src/fast_array_utils/stats/__init__.py | 27 +++++++++++++++++--------- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/fast_array_utils/conv/__init__.py b/src/fast_array_utils/conv/__init__.py index 6a34ca0..1be1ee0 100644 --- a/src/fast_array_utils/conv/__init__.py +++ b/src/fast_array_utils/conv/__init__.py @@ -36,15 +36,19 @@ def to_dense(x: types.DaskArray, /, *, order: Literal["K", "A", "C", "F"] = "K", def to_dense(x: GpuArray | types.CupySpMatrix, /, *, order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: Literal[False] = False) -> types.CupyArray: ... @overload def to_dense(x: GpuArray | types.CupySpMatrix, /, *, order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: Literal[True]) -> NDArray[Any]: ... +@overload +def to_dense[A: types.HasArrayNamespace](x: A, /, *, order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: Literal[False] = False) -> A: ... +@overload +def to_dense[A: types.HasArrayNamespace](x: A, /, *, order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: Literal[True]) -> NDArray[Any]: ... def to_dense( - x: CpuArray | GpuArray | DiskArray | types.CSDataset | types.DaskArray | types.sparray | types.spmatrix | types.CupySpMatrix, + x: CpuArray | GpuArray | DiskArray | types.CSDataset | types.DaskArray | types.sparray | types.spmatrix | types.CupySpMatrix | types.HasArrayNamespace, /, *, order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: bool = False, -) -> NDArray[Any] | types.DaskArray | types.CupyArray: +) -> NDArray[Any] | types.DaskArray | types.CupyArray | types.HasArrayNamespace: r"""Convert x to a dense array. If ``to_cpu_memory`` is :data:`False`, :class:`dask.array.Array`\ s and diff --git a/src/fast_array_utils/stats/__init__.py b/src/fast_array_utils/stats/__init__.py index 8fbaedc..5cfd439 100644 --- a/src/fast_array_utils/stats/__init__.py +++ b/src/fast_array_utils/stats/__init__.py @@ -37,14 +37,16 @@ def is_constant(x: NDArray[Any] | types.CSBase, /, *, axis: Literal[0, 1]) -> ND def is_constant(x: types.CupyArray, /, *, axis: Literal[0, 1]) -> types.CupyArray: ... @overload def is_constant(x: types.DaskArray, /, *, axis: Literal[0, 1] | None = None) -> types.DaskArray: ... +@overload +def is_constant[A: types.HasArrayNamespace](x: A, /, *, axis: Literal[0, 1] | None = None) -> bool | A: ... def is_constant( - x: NDArray[Any] | types.CSBase | types.CupyArray | types.DaskArray, + x: NDArray[Any] | types.CSBase | types.CupyArray | types.DaskArray | types.HasArrayNamespace, /, *, axis: Literal[0, 1] | None = None, -) -> bool | NDArray[np.bool] | types.CupyArray | types.DaskArray: +) -> bool | NDArray[np.bool] | types.CupyArray | types.DaskArray | types.HasArrayNamespace: """Check whether values in array are constant. Parameters @@ -90,15 +92,17 @@ def mean(x: CpuArray | DiskArray, /, *, axis: Literal[0, 1], dtype: DTypeLike | def mean(x: GpuArray, /, *, axis: Literal[0, 1], dtype: DTypeLike | None = None) -> types.CupyArray: ... @overload def mean(x: types.DaskArray, /, *, axis: Literal[0, 1], dtype: ToDType[Any] | None = None) -> types.DaskArray: ... +@overload +def mean[A: types.HasArrayNamespace](x: A, /, *, axis: Literal[0, 1] | None = None, dtype: DTypeLike | None = None) -> A: ... def mean( - x: CpuArray | GpuArray | DiskArray | types.DaskArray, + x: CpuArray | GpuArray | DiskArray | types.DaskArray | types.HasArrayNamespace, /, *, axis: Literal[0, 1] | None = None, dtype: DTypeLike | None = None, -) -> NDArray[np.number[Any]] | types.CupyArray | np.number[Any] | types.DaskArray: +) -> NDArray[np.number[Any]] | types.CupyArray | np.number[Any] | types.DaskArray | types.HasArrayNamespace: """Mean over both or one axis. Parameters @@ -145,10 +149,10 @@ def mean_var(x: CpuArray, /, *, axis: Literal[0, 1], correction: int = 0) -> tup def mean_var(x: GpuArray, /, *, axis: Literal[0, 1], correction: int = 0) -> tuple[types.CupyArray, types.CupyArray]: ... @overload def mean_var(x: types.DaskArray, /, *, axis: Literal[0, 1] | None = None, correction: int = 0) -> tuple[types.DaskArray, types.DaskArray]: ... - - +@overload +def mean_var[A: types.HasArrayNamespace](x: A, /, *, axis: Literal[0, 1] | None = None, correction: int = 0) -> tuple[A, A]: ... def mean_var( - x: CpuArray | GpuArray | types.DaskArray, + x: CpuArray | GpuArray | types.DaskArray | types.HasArrayNamespace, /, *, axis: Literal[0, 1] | None = None, @@ -158,6 +162,7 @@ def mean_var( | tuple[NDArray[np.float64], NDArray[np.float64]] | tuple[types.CupyArray, types.CupyArray] | tuple[types.DaskArray, types.DaskArray] + | tuple[types.HasArrayNamespace, types.HasArrayNamespace] ): """Mean and variance over both or one axis. @@ -249,8 +254,10 @@ def min(x: GpuArray, /, *, axis: None, keep_cupy_as_array: Literal[True]) -> typ def min(x: GpuArray, /, *, axis: Literal[0, 1], keep_cupy_as_array: bool = False) -> types.CupyArray: ... @overload def min(x: types.DaskArray, /, *, axis: Literal[0, 1] | None = None, keep_cupy_as_array: bool = False) -> types.DaskArray: ... +@overload +def min[A: types.HasArrayNamespace](x: A, /, *, axis: Literal[0, 1] | None = None, keep_cupy_as_array: bool = False) -> A: ... def min( - x: CpuArray | GpuArray | DiskArray | types.DaskArray, + x: CpuArray | GpuArray | DiskArray | types.DaskArray | types.HasArrayNamespace, /, *, axis: Literal[0, 1] | None = None, @@ -304,8 +311,10 @@ def max(x: GpuArray, /, *, axis: None, keep_cupy_as_array: Literal[True]) -> typ def max(x: GpuArray, /, *, axis: Literal[0, 1], keep_cupy_as_array: bool = False) -> types.CupyArray: ... @overload def max(x: types.DaskArray, /, *, axis: Literal[0, 1] | None = None, keep_cupy_as_array: bool = False) -> types.DaskArray: ... +@overload +def max[A: types.HasArrayNamespace](x: A, /, *, axis: Literal[0, 1] | None = None, keep_cupy_as_array: bool = False) -> A: ... def max( - x: CpuArray | GpuArray | DiskArray | types.DaskArray, + x: CpuArray | GpuArray | DiskArray | types.DaskArray | types.HasArrayNamespace, /, *, axis: Literal[0, 1] | None = None, From 6d3891eab547c82897a440fd810f091b7844b259 Mon Sep 17 00:00:00 2001 From: amalia-k510 Date: Wed, 29 Apr 2026 12:59:30 +0200 Subject: [PATCH 27/36] types, missing parameters --- src/fast_array_utils/stats/_is_constant.py | 2 +- src/fast_array_utils/stats/_mean.py | 2 +- src/fast_array_utils/stats/_mean_var.py | 2 +- src/fast_array_utils/stats/_typing.py | 13 +++++++++---- src/fast_array_utils/types.py | 3 +++ 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/fast_array_utils/stats/_is_constant.py b/src/fast_array_utils/stats/_is_constant.py index ca17f4e..b20c740 100644 --- a/src/fast_array_utils/stats/_is_constant.py +++ b/src/fast_array_utils/stats/_is_constant.py @@ -19,7 +19,7 @@ @singledispatch def is_constant_( - a: NDArray[Any] | types.CSBase | types.CupyArray | types.DaskArray, + a: NDArray[Any] | types.CSBase | types.CupyArray | types.DaskArray | types.HasArrayNamespace, /, *, axis: Literal[0, 1] | None = None, diff --git a/src/fast_array_utils/stats/_mean.py b/src/fast_array_utils/stats/_mean.py index ba08164..8180014 100644 --- a/src/fast_array_utils/stats/_mean.py +++ b/src/fast_array_utils/stats/_mean.py @@ -18,7 +18,7 @@ def mean_( - x: CpuArray | GpuArray | DiskArray | types.DaskArray, + x: CpuArray | GpuArray | DiskArray | types.DaskArray | types.HasArrayNamespace, /, *, axis: Literal[0, 1] | None = None, diff --git a/src/fast_array_utils/stats/_mean_var.py b/src/fast_array_utils/stats/_mean_var.py index 3164ab9..f3743f4 100644 --- a/src/fast_array_utils/stats/_mean_var.py +++ b/src/fast_array_utils/stats/_mean_var.py @@ -21,7 +21,7 @@ @no_type_check # mypy is extremely confused def mean_var_( - x: CpuArray | GpuArray | types.DaskArray, + x: CpuArray | GpuArray | types.DaskArray | types.HasArrayNamespace, /, *, axis: Literal[0, 1] | None = None, diff --git a/src/fast_array_utils/stats/_typing.py b/src/fast_array_utils/stats/_typing.py index be671dd..0bb480d 100644 --- a/src/fast_array_utils/stats/_typing.py +++ b/src/fast_array_utils/stats/_typing.py @@ -28,8 +28,13 @@ class StatFunNoDtype(Protocol): __name__: str def __call__( - self, x: CpuArray | GpuArray | DiskArray | types.DaskArray, /, *, axis: Literal[0, 1] | None = None, keep_cupy_as_array: bool = False - ) -> types.DaskArray: ... + self, + x: CpuArray | GpuArray | DiskArray | types.DaskArray | types.HasArrayNamespace, + /, + *, + axis: Literal[0, 1] | None = None, + keep_cupy_as_array: bool = False, + ) -> types.DaskArray | types.HasArrayNamespace: ... class StatFunDtype(Protocol): @@ -37,13 +42,13 @@ class StatFunDtype(Protocol): def __call__( self, - x: CpuArray | GpuArray | DiskArray | types.DaskArray, + x: CpuArray | GpuArray | DiskArray | types.DaskArray | types.HasArrayNamespace, /, *, axis: Literal[0, 1] | None = None, dtype: DTypeLike | None = None, keep_cupy_as_array: bool = False, - ) -> NDArray[Any] | types.CupyArray | np.number[Any] | types.DaskArray: ... + ) -> NDArray[Any] | types.CupyArray | np.number[Any] | types.DaskArray | types.HasArrayNamespace: ... NoDtypeOps = Literal["max", "min"] diff --git a/src/fast_array_utils/types.py b/src/fast_array_utils/types.py index a6e9101..9e871e2 100644 --- a/src/fast_array_utils/types.py +++ b/src/fast_array_utils/types.py @@ -124,4 +124,7 @@ class HasArrayNamespace(Protocol): """An array object compatible with the Python array API standard.""" + ndim: int + shape: tuple[int, ...] + def __array_namespace__(self, /, *, api_version: str | None = None) -> ModuleType: ... From 9e2a9fe1c8c2a271c303b26efddb05b597fa4686 Mon Sep 17 00:00:00 2001 From: amalia-k510 Date: Wed, 29 Apr 2026 13:05:01 +0200 Subject: [PATCH 28/36] revert pyproject.toml --- pyproject.toml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 2e3bd9a..5d8ece6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,7 +65,7 @@ envs.docs.dependency-groups = [ "doc" ] envs.docs.scripts.build = "sphinx-build -M html docs docs/_build" envs.docs.scripts.clean = "git clean -fdX docs" envs.docs.scripts.open = "python -m webbrowser -t docs/_build/html/index.html" -envs.hatch-test.default-args = [] +envs.hatch-test.default-args = [ ] envs.hatch-test.dependency-groups = [ "test-min" ] # TODO: remove scipy once https://github.com/pypa/hatch/pull/2127 is released envs.hatch-test.extra-dependencies = [ "ipykernel", "ipycytoscape", "scipy" ] @@ -91,7 +91,7 @@ metadata.hooks.docstring-description = {} metadata.hooks.fancy-pypi-readme.content-type = "text/x-rst" metadata.hooks.fancy-pypi-readme.fragments = [ { path = "README.rst", start-after = ".. begin" } ] version.source = "vcs" -version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version +version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version [tool.uv] override-dependencies = [ "sphinx>=9.0.1" ] @@ -132,7 +132,7 @@ lint.per-file-ignores."typings/**/*.pyi" = [ "A002", "F403", "F405", "N801" ] lint.allowed-confusables = [ "×", "’" ] lint.flake8-bugbear.extend-immutable-calls = [ "testing.fast_array_utils.Flags" ] lint.flake8-copyright.notice-rgx = "SPDX-License-Identifier: MPL-2\\.0" -lint.flake8-type-checking.exempt-modules = [] +lint.flake8-type-checking.exempt-modules = [ ] lint.flake8-type-checking.strict = true lint.isort.known-first-party = [ "fast_array_utils" ] lint.isort.lines-after-imports = 2 @@ -145,7 +145,6 @@ strict = true implicit_reexport = true explicit_package_bases = true mypy_path = [ "$MYPY_CONFIG_FILE_DIR/typings", "$MYPY_CONFIG_FILE_DIR/src" ] -overrides = [ { module = [ "jax", "jax.*" ], ignore_missing_imports = true } ] [tool.pyright] stubPath = "./typings" From 57117d2a4785254eb5273f8dad6d75185c396bef Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 29 Apr 2026 11:05:47 +0000 Subject: [PATCH 29/36] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pyproject.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 5d8ece6..04b58e5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,7 +65,7 @@ envs.docs.dependency-groups = [ "doc" ] envs.docs.scripts.build = "sphinx-build -M html docs docs/_build" envs.docs.scripts.clean = "git clean -fdX docs" envs.docs.scripts.open = "python -m webbrowser -t docs/_build/html/index.html" -envs.hatch-test.default-args = [ ] +envs.hatch-test.default-args = [] envs.hatch-test.dependency-groups = [ "test-min" ] # TODO: remove scipy once https://github.com/pypa/hatch/pull/2127 is released envs.hatch-test.extra-dependencies = [ "ipykernel", "ipycytoscape", "scipy" ] @@ -91,7 +91,7 @@ metadata.hooks.docstring-description = {} metadata.hooks.fancy-pypi-readme.content-type = "text/x-rst" metadata.hooks.fancy-pypi-readme.fragments = [ { path = "README.rst", start-after = ".. begin" } ] version.source = "vcs" -version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version +version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version [tool.uv] override-dependencies = [ "sphinx>=9.0.1" ] @@ -132,7 +132,7 @@ lint.per-file-ignores."typings/**/*.pyi" = [ "A002", "F403", "F405", "N801" ] lint.allowed-confusables = [ "×", "’" ] lint.flake8-bugbear.extend-immutable-calls = [ "testing.fast_array_utils.Flags" ] lint.flake8-copyright.notice-rgx = "SPDX-License-Identifier: MPL-2\\.0" -lint.flake8-type-checking.exempt-modules = [ ] +lint.flake8-type-checking.exempt-modules = [] lint.flake8-type-checking.strict = true lint.isort.known-first-party = [ "fast_array_utils" ] lint.isort.lines-after-imports = 2 From 0415fd5b65ca3aba76a8ec12bb11f5b97b49a25a Mon Sep 17 00:00:00 2001 From: "Philipp A." Date: Thu, 30 Apr 2026 12:02:55 +0200 Subject: [PATCH 30/36] rework deps --- pyproject.toml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 04b58e5..8f20300 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,9 +25,9 @@ classifiers = [ dynamic = [ "description", "readme", "version" ] dependencies = [ "numpy>=2" ] optional-dependencies.accel = [ "numba>=0.57" ] +optional-dependencies.array-api = [ "array-api-compat" ] optional-dependencies.dask = [ "dask>=2023.6.1" ] -optional-dependencies.full = [ "fast-array-utils[accel,dask,sparse]", "h5py", "zarr" ] -optional-dependencies.jax = [ "jax", "jaxlib" ] +optional-dependencies.full = [ "fast-array-utils[accel,array-api,dask,sparse]", "h5py", "zarr" ] optional-dependencies.sparse = [ "scipy>=1.13" ] optional-dependencies.testing = [ "packaging" ] urls."Issue Tracker" = "https://github.com/scverse/fast-array-utils/issues" @@ -38,7 +38,9 @@ entry-points.pytest11.fast_array_utils = "testing.fast_array_utils.pytest" [dependency-groups] test = [ "anndata", - "fast-array-utils[accel]", + "fast-array-utils[full]", + "jax", + "jaxlib", "scikit-learn", "zarr", { include-group = "test-min" }, @@ -70,10 +72,6 @@ envs.hatch-test.dependency-groups = [ "test-min" ] # TODO: remove scipy once https://github.com/pypa/hatch/pull/2127 is released envs.hatch-test.extra-dependencies = [ "ipykernel", "ipycytoscape", "scipy" ] envs.hatch-test.env-vars.CODSPEED_PROFILE_FOLDER = "test-data/codspeed" -envs.hatch-test.overrides.matrix.extras.features = [ - { if = [ "full" ], value = "full" }, - { if = [ "full" ], value = "jax" }, -] envs.hatch-test.overrides.matrix.extras.dependency-groups = [ { if = [ "full" ], value = "test" }, ] From 592b7b735093488bf415d296c323d35d3017d326 Mon Sep 17 00:00:00 2001 From: "Philipp A." Date: Thu, 30 Apr 2026 13:54:51 +0200 Subject: [PATCH 31/36] fix deps --- .github/workflows/ci.yml | 2 +- pyproject.toml | 18 ++++++++---------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0b8995b..9cb4c86 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,7 +56,7 @@ jobs: with: python-version: ${{ matrix.env.python }} - name: create environment - run: uvx hatch env create ${{ matrix.env.name }} + run: uvx hatch -v env create ${{ matrix.env.name }} - name: run tests with coverage run: | uvx hatch run ${{ matrix.env.name }}:run-cov diff --git a/pyproject.toml b/pyproject.toml index 8f20300..3684e89 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,12 +22,11 @@ classifiers = [ "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", ] -dynamic = [ "description", "readme", "version" ] -dependencies = [ "numpy>=2" ] +dynamic = [ "version" ] +dependencies = [ "array-api-compat", "numpy>=2" ] optional-dependencies.accel = [ "numba>=0.57" ] -optional-dependencies.array-api = [ "array-api-compat" ] optional-dependencies.dask = [ "dask>=2023.6.1" ] -optional-dependencies.full = [ "fast-array-utils[accel,array-api,dask,sparse]", "h5py", "zarr" ] +optional-dependencies.full = [ "fast-array-utils[accel,dask,sparse]", "h5py", "zarr" ] optional-dependencies.sparse = [ "scipy>=1.13" ] optional-dependencies.testing = [ "packaging" ] urls."Issue Tracker" = "https://github.com/scverse/fast-array-utils/issues" @@ -42,7 +41,6 @@ test = [ "jax", "jaxlib", "scikit-learn", - "zarr", { include-group = "test-min" }, ] doc = [ @@ -69,8 +67,7 @@ envs.docs.scripts.clean = "git clean -fdX docs" envs.docs.scripts.open = "python -m webbrowser -t docs/_build/html/index.html" envs.hatch-test.default-args = [] envs.hatch-test.dependency-groups = [ "test-min" ] -# TODO: remove scipy once https://github.com/pypa/hatch/pull/2127 is released -envs.hatch-test.extra-dependencies = [ "ipykernel", "ipycytoscape", "scipy" ] +envs.hatch-test.extra-dependencies = [ "ipykernel", "ipycytoscape" ] envs.hatch-test.env-vars.CODSPEED_PROFILE_FOLDER = "test-data/codspeed" envs.hatch-test.overrides.matrix.extras.dependency-groups = [ { if = [ "full" ], value = "test" }, @@ -85,9 +82,10 @@ envs.hatch-test.matrix = [ { python = [ "3.14", "3.12" ], extras = [ "full", "min" ] }, { python = [ "3.12" ], extras = [ "full" ], resolution = [ "lowest" ] }, ] -metadata.hooks.docstring-description = {} -metadata.hooks.fancy-pypi-readme.content-type = "text/x-rst" -metadata.hooks.fancy-pypi-readme.fragments = [ { path = "README.rst", start-after = ".. begin" } ] +# TODO: re-activate incl. `dynamic = [ "description", "readme", ... ]` after https://github.com/pypa/hatch/issues/2252 +# metadata.hooks.docstring-description = {} +# metadata.hooks.fancy-pypi-readme.content-type = "text/x-rst" +# metadata.hooks.fancy-pypi-readme.fragments = [ { path = "README.rst", start-after = ".. begin" } ] version.source = "vcs" version.raw-options = { local_scheme = "no-local-version" } # be able to publish dev version From c890bc39e9f2a21a9d3abd8b74cdf5d24c711cd5 Mon Sep 17 00:00:00 2001 From: "Philipp A." Date: Thu, 30 Apr 2026 15:06:47 +0200 Subject: [PATCH 32/36] fix types --- src/fast_array_utils/stats/_typing.py | 2 +- src/fast_array_utils/types.py | 23 ++++++++++++++++++----- tests/test_jax.py | 1 + tests/test_stats.py | 14 +++++++++----- typings/cupyx/scipy/sparse/_coo.pyi | 2 +- typings/cupyx/scipy/sparse/_csr.pyi | 2 +- 6 files changed, 31 insertions(+), 13 deletions(-) diff --git a/src/fast_array_utils/stats/_typing.py b/src/fast_array_utils/stats/_typing.py index 0bb480d..a5084da 100644 --- a/src/fast_array_utils/stats/_typing.py +++ b/src/fast_array_utils/stats/_typing.py @@ -34,7 +34,7 @@ def __call__( *, axis: Literal[0, 1] | None = None, keep_cupy_as_array: bool = False, - ) -> types.DaskArray | types.HasArrayNamespace: ... + ) -> NDArray[Any] | types.CupyArray | np.number[Any] | types.DaskArray | types.HasArrayNamespace: ... class StatFunDtype(Protocol): diff --git a/src/fast_array_utils/types.py b/src/fast_array_utils/types.py index 9e871e2..8da8972 100644 --- a/src/fast_array_utils/types.py +++ b/src/fast_array_utils/types.py @@ -7,6 +7,10 @@ from typing import TYPE_CHECKING, Protocol, runtime_checkable +if TYPE_CHECKING: + from types import ModuleType + + __all__ = [ "COOBase", "CSArray", @@ -22,6 +26,7 @@ "DaskArray", "H5Dataset", "H5Group", + "HasArrayNamespace", "ZarrArray", "ZarrGroup", "coo_array", @@ -37,8 +42,6 @@ # scipy sparse if TYPE_CHECKING: - from types import ModuleType - from scipy.sparse import coo_array, coo_matrix, csc_array, csc_matrix, csr_array, csr_matrix, sparray, spmatrix else: try: # cs?_array isn’t available in older scipy versions @@ -124,7 +127,17 @@ class HasArrayNamespace(Protocol): """An array object compatible with the Python array API standard.""" - ndim: int - shape: tuple[int, ...] + @property + def ndim(self) -> int: + """The number of dimensions of the array.""" + + @property + def shape(self) -> tuple[int, ...]: + """The shape of the array.""" + + @property + def dtype(self) -> object: + """The data type of the array.""" - def __array_namespace__(self, /, *, api_version: str | None = None) -> ModuleType: ... + def __array_namespace__(self, /, *, api_version: str | None = None) -> ModuleType: + """Get Array API namespace.""" diff --git a/tests/test_jax.py b/tests/test_jax.py index a6fe9c2..d03ae8e 100644 --- a/tests/test_jax.py +++ b/tests/test_jax.py @@ -14,6 +14,7 @@ if TYPE_CHECKING: from typing import Literal + pytestmark = pytest.mark.skipif(not find_spec("jax"), reason="jax not installed") if find_spec("jax"): diff --git a/tests/test_stats.py b/tests/test_stats.py index 334d1fd..8371250 100644 --- a/tests/test_stats.py +++ b/tests/test_stats.py @@ -103,9 +103,11 @@ def np_arr(dtype_in: type[DTypeIn], ndim: Literal[1, 2]) -> NDArray[DTypeIn]: return np_arr -def to_np_dense_checked( - stat: NDArray[DTypeOut] | np.number[Any] | types.DaskArray, axis: Literal[0, 1] | None, arr: CpuArray | GpuArray | DiskArray | types.DaskArray -) -> NDArray[DTypeOut] | np.number[Any]: +def to_np_dense_checked[DT: DTypeOut]( + stat: NDArray[DT] | np.number[Any] | types.DaskArray | types.HasArrayNamespace, + axis: Literal[0, 1] | None, + arr: CpuArray | GpuArray | DiskArray | types.COOBase | types.DaskArray | types.HasArrayNamespace, +) -> NDArray[DT] | np.number[Any]: match axis, arr: case _, types.DaskArray(): assert isinstance(stat, types.DaskArray), type(stat) @@ -208,7 +210,7 @@ def test_min_max(array_type: ArrayType[CpuArray | GpuArray | DiskArray | types.D np_arr = rng.random((100, 100)) arr = array_type(np_arr) - result = to_np_dense_checked(func(arr, axis=axis), axis, arr) + result = to_np_dense_checked(func(arr, axis=axis), axis, arr) # type: ignore[arg-type] expected = (np.min if func is stats.min else np.max)(np_arr, axis=axis) np.testing.assert_array_equal(result, expected) @@ -229,7 +231,7 @@ def test_dask_shapes(array_type: ArrayType[types.DaskArray], axis: Literal[0, 1] np_arr = np.array(data, dtype=np.float32) arr = array_type(np_arr) assert 1 in arr.chunksize, "This test is supposed to test 1×n and n×1 chunk sizes" - stat = cast("NDArray[Any] | types.CupyArray", func(arr, axis=axis).compute()) + stat = cast("NDArray[Any] | types.CupyArray", func(arr, axis=axis).compute()) # type: ignore[union-attr] if isinstance(stat, types.CupyArray): stat = stat.get() np_func = getattr(np, func.__name__) @@ -321,6 +323,8 @@ def test_mean_var_pbmc_dask(array_type: ArrayType[types.DaskArray], pbmc64k_redu arr = array_type(mat) mean_mat, var_mat = stats.mean_var(mat, axis=0, correction=1) + mean_arr: NDArray[Any] | np.number # actually just NDArray, and mypy should be able to infer. + var_arr: NDArray[Any] | np.number mean_arr, var_arr = (to_np_dense_checked(a, 0, arr) for a in stats.mean_var(arr, axis=0, correction=1)) rtol = 1.0e-5 if array_type.flags & Flags.Gpu else 1.0e-7 diff --git a/typings/cupyx/scipy/sparse/_coo.pyi b/typings/cupyx/scipy/sparse/_coo.pyi index 61a8887..e67e691 100644 --- a/typings/cupyx/scipy/sparse/_coo.pyi +++ b/typings/cupyx/scipy/sparse/_coo.pyi @@ -8,4 +8,4 @@ from ._base import spmatrix class coo_matrix(spmatrix): format: Literal["coo"] = "coo" - def get(self, stream: cupy.cuda.Stream | None = None) -> sps.spmatrix: ... + def get(self, stream: cupy.cuda.Stream | None = None) -> sps.coo_matrix: ... diff --git a/typings/cupyx/scipy/sparse/_csr.pyi b/typings/cupyx/scipy/sparse/_csr.pyi index f4893b1..e092517 100644 --- a/typings/cupyx/scipy/sparse/_csr.pyi +++ b/typings/cupyx/scipy/sparse/_csr.pyi @@ -8,4 +8,4 @@ from ._compressed import _compressed_sparse_matrix class csr_matrix(_compressed_sparse_matrix): format: Literal["csr"] = "csr" - def get(self, stream: cupy.cuda.Stream | None = None) -> sps.csc_matrix: ... + def get(self, stream: cupy.cuda.Stream | None = None) -> sps.csr_matrix: ... From 49283b0c50f7117bb3b95b22335e4377d948d41e Mon Sep 17 00:00:00 2001 From: "Philipp A." Date: Thu, 30 Apr 2026 15:30:49 +0200 Subject: [PATCH 33/36] fix cupy tests --- src/fast_array_utils/stats/_generic_ops.py | 13 +++---------- src/fast_array_utils/stats/_power.py | 4 ++-- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/fast_array_utils/stats/_generic_ops.py b/src/fast_array_utils/stats/_generic_ops.py index 027c181..963d0b6 100644 --- a/src/fast_array_utils/stats/_generic_ops.py +++ b/src/fast_array_utils/stats/_generic_ops.py @@ -32,15 +32,7 @@ def generic_op( dtype: DTypeLike | None = None, keep_cupy_as_array: bool = False, ) -> NDArray[Any] | np.number[Any] | types.CupyArray | types.DaskArray: - del keep_cupy_as_array - if TYPE_CHECKING: - # these are never passed to this fallback function, but `singledispatch` wants them - assert not isinstance(x, types.CSBase | types.DaskArray | types.CupyArray | types.CupyCSMatrix) - # np supports these, but doesn’t know it. (TODO: test cupy) - assert not isinstance(x, types.ZarrArray | types.H5Dataset) - - arr = getattr(np, op)(x, axis=axis, **_dtype_kw(dtype, op)) - return arr.toarray() if isinstance(arr, types.CupyCOOMatrix) else arr + raise NotImplementedError @generic_op.register(np.ndarray) @@ -87,7 +79,8 @@ def _generic_op_cupy( dtype: DTypeLike | None = None, keep_cupy_as_array: bool = False, ) -> types.CupyArray | np.number[Any]: - arr = cast("types.CupyArray", getattr(np, op)(x, axis=axis, **_dtype_kw(dtype, op))) + arr = cast("types.CupyArray | types.CupyCOOMatrix", getattr(np, op)(x, axis=axis, **_dtype_kw(dtype, op))) + arr = arr.toarray() if isinstance(arr, types.CupyCOOMatrix) else arr return cast("np.number[Any]", arr.get()[()]) if not keep_cupy_as_array and axis is None else arr.squeeze() diff --git a/src/fast_array_utils/stats/_power.py b/src/fast_array_utils/stats/_power.py index de72bf5..b6702c8 100644 --- a/src/fast_array_utils/stats/_power.py +++ b/src/fast_array_utils/stats/_power.py @@ -29,8 +29,8 @@ def _power(x: Array, n: int, /, dtype: DTypeLike | None = None) -> Array: raise NotImplementedError -@_power.register(np.ndarray) -def _power_numpy(x: np.ndarray, n: int, /, dtype: DTypeLike | None = None) -> np.ndarray: +@_power.register(np.ndarray | types.CupyArray) +def _power_numpy_cupy(x: np.ndarray, n: int, /, dtype: DTypeLike | None = None) -> np.ndarray: # avoids slower xp.pow(xp.astype(...)) path return x**n if dtype is None else np.power(x, n, dtype=dtype) From f6463cc0ff0806fca180d31a441c16b35ae74439 Mon Sep 17 00:00:00 2001 From: "Philipp A." Date: Thu, 30 Apr 2026 16:35:09 +0200 Subject: [PATCH 34/36] fix disk array --- src/fast_array_utils/stats/_generic_ops.py | 44 +++++++++++----------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/fast_array_utils/stats/_generic_ops.py b/src/fast_array_utils/stats/_generic_ops.py index 963d0b6..5c63d39 100644 --- a/src/fast_array_utils/stats/_generic_ops.py +++ b/src/fast_array_utils/stats/_generic_ops.py @@ -35,10 +35,10 @@ def generic_op( raise NotImplementedError -@generic_op.register(np.ndarray) +@generic_op.register(np.ndarray | types.H5Dataset | types.ZarrArray) # register explicitly to avoid the array API path and performance slow down -def _generic_op_numpy( - x: np.ndarray, +def _generic_op_numpy_disk( + x: np.ndarray | DiskArray, /, op: Ops, *, @@ -50,25 +50,6 @@ def _generic_op_numpy( return getattr(np, op)(x, axis=axis, **_dtype_kw(dtype, op)) # type: ignore[no-any-return] -@generic_op.register(types.HasArrayNamespace) -def _generic_op_array_api[A: types.HasArrayNamespace]( - x: A, - /, - op: Ops, - *, - axis: Literal[0, 1] | None = None, - dtype: DTypeLike | None = None, - keep_cupy_as_array: bool = False, -) -> A: - """Handle arrays with native array API support.""" - del keep_cupy_as_array - - import array_api_compat - - xp = array_api_compat.array_namespace(x) - return getattr(xp, op)(x, axis=axis, **_dtype_kw(dtype, op)) # type: ignore[no-any-return] - - @generic_op.register(types.CupyArray | types.CupyCSMatrix) def _generic_op_cupy( x: GpuArray, @@ -127,3 +108,22 @@ def _generic_op_dask( dtype = getattr(np, op)(np.zeros(1, dtype=x.dtype)).dtype return _dask_inner(x, op, axis=axis, dtype=dtype, keep_cupy_as_array=keep_cupy_as_array) + + +@generic_op.register(types.HasArrayNamespace) +def _generic_op_array_api[A: types.HasArrayNamespace]( + x: A, + /, + op: Ops, + *, + axis: Literal[0, 1] | None = None, + dtype: DTypeLike | None = None, + keep_cupy_as_array: bool = False, +) -> A: + """Handle arrays with native array API support.""" + del keep_cupy_as_array + + import array_api_compat + + xp = array_api_compat.array_namespace(x) + return getattr(xp, op)(x, axis=axis, **_dtype_kw(dtype, op)) # type: ignore[no-any-return] From 474c969811c0a2a86446ef5764132e9540b6e74b Mon Sep 17 00:00:00 2001 From: "Philipp A." Date: Thu, 30 Apr 2026 17:03:18 +0200 Subject: [PATCH 35/36] fmt --- src/fast_array_utils/conv/__init__.py | 2 + src/fast_array_utils/conv/_to_dense.py | 14 ++--- src/fast_array_utils/stats/_mean.py | 2 +- src/fast_array_utils/stats/_mean_var.py | 8 +-- tests/test_jax.py | 75 ++++++++++--------------- 5 files changed, 43 insertions(+), 58 deletions(-) diff --git a/src/fast_array_utils/conv/__init__.py b/src/fast_array_utils/conv/__init__.py index 1be1ee0..d00ffe2 100644 --- a/src/fast_array_utils/conv/__init__.py +++ b/src/fast_array_utils/conv/__init__.py @@ -36,6 +36,8 @@ def to_dense(x: types.DaskArray, /, *, order: Literal["K", "A", "C", "F"] = "K", def to_dense(x: GpuArray | types.CupySpMatrix, /, *, order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: Literal[False] = False) -> types.CupyArray: ... @overload def to_dense(x: GpuArray | types.CupySpMatrix, /, *, order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: Literal[True]) -> NDArray[Any]: ... + + @overload def to_dense[A: types.HasArrayNamespace](x: A, /, *, order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: Literal[False] = False) -> A: ... @overload diff --git a/src/fast_array_utils/conv/_to_dense.py b/src/fast_array_utils/conv/_to_dense.py index 131455e..66d1580 100644 --- a/src/fast_array_utils/conv/_to_dense.py +++ b/src/fast_array_utils/conv/_to_dense.py @@ -46,13 +46,6 @@ def _to_dense_numpy(x: np.ndarray, /, *, order: Literal["K", "A", "C", "F"] = "K return np.asarray(x, order=order) -@to_dense_.register(types.HasArrayNamespace) -def _to_dense_array_api[A: types.HasArrayNamespace](x: A, /, *, order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: bool = False) -> A | np.ndarray: - if to_cpu_memory: - return np.asarray(x, order=order) - return x - - @to_dense_.register(types.DaskArray) def _to_dense_dask(x: types.DaskArray, /, *, order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: bool = False) -> NDArray[Any] | types.DaskArray: from . import to_dense @@ -83,6 +76,13 @@ def _to_dense_cupy(x: GpuArray, /, *, order: Literal["K", "A", "C", "F"] = "K", return x.get(order="A") if to_cpu_memory else x +@to_dense_.register(types.HasArrayNamespace) +def _to_dense_array_api[A: types.HasArrayNamespace](x: A, /, *, order: Literal["K", "A", "C", "F"] = "K", to_cpu_memory: bool = False) -> A | np.ndarray: + if to_cpu_memory: + return np.asarray(x, order=order) + return x + + def sparse_order(x: types.spmatrix | types.sparray | types.CupySpMatrix | types.CSDataset, /, *, order: Literal["K", "A", "C", "F"]) -> Literal["C", "F"]: if TYPE_CHECKING: from scipy.sparse._base import _spbase diff --git a/src/fast_array_utils/stats/_mean.py b/src/fast_array_utils/stats/_mean.py index 8180014..9b8c868 100644 --- a/src/fast_array_utils/stats/_mean.py +++ b/src/fast_array_utils/stats/_mean.py @@ -23,7 +23,7 @@ def mean_( *, axis: Literal[0, 1] | None = None, dtype: DTypeLike | None = None, -) -> NDArray[np.number[Any]] | np.number[Any] | types.DaskArray: +) -> NDArray[np.number[Any]] | np.number[Any] | types.DaskArray | types.HasArrayNamespace: total = sum(x, axis=axis, dtype=dtype) # type: ignore[misc,arg-type] n = np.prod(x.shape) if axis is None else x.shape[axis] return total / n # type: ignore[no-any-return] diff --git a/src/fast_array_utils/stats/_mean_var.py b/src/fast_array_utils/stats/_mean_var.py index f3743f4..c704bc9 100644 --- a/src/fast_array_utils/stats/_mean_var.py +++ b/src/fast_array_utils/stats/_mean_var.py @@ -32,17 +32,15 @@ def mean_var_( | tuple[np.float64, np.float64] | tuple[types.DaskArray, types.DaskArray] ): - from . import mean - if isinstance(x, np.ndarray | types.CSBase): + if isinstance(x, np.ndarray | types.CSBase) or not isinstance(x, types.HasArrayNamespace): xp = np - elif isinstance(x, types.HasArrayNamespace): + else: import array_api_compat xp = array_api_compat.array_namespace(x) - else: - xp = np + if axis is not None and isinstance(x, types.CSBase): mean_, var = _sparse_mean_var(x, axis=axis) else: diff --git a/tests/test_jax.py b/tests/test_jax.py index d03ae8e..5cb4fc7 100644 --- a/tests/test_jax.py +++ b/tests/test_jax.py @@ -33,39 +33,18 @@ def jax_arr() -> jax.Array: @pytest.mark.parametrize("axis", [None, 0, 1]) -def test_sum(jax_arr: jax.Array, axis: Literal[0, 1] | None) -> None: +@pytest.mark.parametrize("func", ["sum", "min", "max", "mean"]) +def test_simple_stat(jax_arr: jax.Array, func: Literal["sum", "min", "max", "mean"], axis: Literal[0, 1] | None) -> None: import jax.numpy as jnp - result = stats.sum(jax_arr, axis=axis) - expected = jnp.sum(jax_arr, axis=axis) - assert jnp.array_equal(result, expected) + result = getattr(stats, func)(jax_arr, axis=axis) + expected = getattr(jnp, func)(jax_arr, axis=axis) - -@pytest.mark.parametrize("axis", [None, 0, 1]) -def test_min(jax_arr: jax.Array, axis: Literal[0, 1] | None) -> None: - import jax.numpy as jnp - - result = stats.min(jax_arr, axis=axis) - expected = jnp.min(jax_arr, axis=axis) - assert jnp.array_equal(result, expected) - - -@pytest.mark.parametrize("axis", [None, 0, 1]) -def test_max(jax_arr: jax.Array, axis: Literal[0, 1] | None) -> None: - import jax.numpy as jnp - - result = stats.max(jax_arr, axis=axis) - expected = jnp.max(jax_arr, axis=axis) - assert jnp.array_equal(result, expected) - - -@pytest.mark.parametrize("axis", [None, 0, 1]) -def test_mean(jax_arr: jax.Array, axis: Literal[0, 1] | None) -> None: - import jax.numpy as jnp - - result = stats.mean(jax_arr, axis=axis) - expected = jnp.mean(jax_arr, axis=axis) - assert jnp.allclose(result, expected) + assert type(result) is type(expected) + if func == "mean": + assert jnp.allclose(result, expected) + else: + assert jnp.array_equal(result, expected) @pytest.mark.parametrize("axis", [None, 0, 1]) @@ -86,37 +65,43 @@ def test_is_constant(axis: Literal[0, 1] | None) -> None: result = stats.is_constant(x, axis=axis) if axis is None: - assert bool(result) is False + assert not result elif axis == 0: expected = jnp.array([True, True, False, False]) + assert type(result) is type(expected) assert jnp.array_equal(result, expected) else: expected = jnp.array([False, False, True, True, False, True]) + assert type(result) is type(expected) assert jnp.array_equal(result, expected) @pytest.mark.parametrize("axis", [None, 0, 1]) -def test_mean_var(jax_arr: jax.Array, axis: Literal[0, 1] | None) -> None: +def test_mean_var(subtests: pytest.Subtests, jax_arr: jax.Array, axis: Literal[0, 1] | None) -> None: import jax.numpy as jnp mean, var = stats.mean_var(jax_arr, axis=axis, correction=1) - mean_expected = jnp.mean(jax_arr, axis=axis) - n = jax_arr.size if axis is None else jax_arr.shape[axis] - var_expected = jnp.var(jax_arr, axis=axis) * n / (n - 1) + for name, result in dict(mean=mean, var=var).items(): + if name == "mean": + expected = jnp.mean(jax_arr, axis=axis) + else: + n = jax_arr.size if axis is None else jax_arr.shape[axis] + expected = jnp.var(jax_arr, axis=axis) * n / (n - 1) - assert jnp.allclose(mean, mean_expected) - assert jnp.allclose(var, var_expected) + with subtests.test(name): + assert type(result) is type(expected) + assert jnp.allclose(result, expected) -def test_to_dense(jax_arr: jax.Array) -> None: +@pytest.mark.parametrize("to_cpu_memory", [True, False], ids=["to_cpu_memory", "not_to_cpu_memory"]) +def test_to_dense(*, jax_arr: jax.Array, to_cpu_memory: bool) -> None: import jax.numpy as jnp - result = to_dense(jax_arr) - assert jnp.array_equal(result, jax_arr) - + result = to_dense(jax_arr, to_cpu_memory=to_cpu_memory) -def test_to_dense_to_cpu(jax_arr: jax.Array) -> None: - result = to_dense(jax_arr, to_cpu_memory=True) - assert isinstance(result, np.ndarray) - np.testing.assert_array_equal(result, np.asarray(jax_arr)) + if to_cpu_memory: + assert isinstance(result, np.ndarray) + else: + assert isinstance(result, jax.Array) + assert jnp.array_equal(result, jax_arr) From 5de4e5ba8292ed2a4434d43d4f12f45c35c793bc Mon Sep 17 00:00:00 2001 From: "Philipp A." Date: Thu, 30 Apr 2026 17:21:30 +0200 Subject: [PATCH 36/36] coverage --- src/fast_array_utils/stats/_generic_ops.py | 2 +- src/fast_array_utils/stats/_is_constant.py | 2 +- src/fast_array_utils/stats/_power.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/fast_array_utils/stats/_generic_ops.py b/src/fast_array_utils/stats/_generic_ops.py index 5c63d39..dd8a07b 100644 --- a/src/fast_array_utils/stats/_generic_ops.py +++ b/src/fast_array_utils/stats/_generic_ops.py @@ -32,7 +32,7 @@ def generic_op( dtype: DTypeLike | None = None, keep_cupy_as_array: bool = False, ) -> NDArray[Any] | np.number[Any] | types.CupyArray | types.DaskArray: - raise NotImplementedError + raise NotImplementedError # pragma: no cover @generic_op.register(np.ndarray | types.H5Dataset | types.ZarrArray) diff --git a/src/fast_array_utils/stats/_is_constant.py b/src/fast_array_utils/stats/_is_constant.py index b20c740..2a98e93 100644 --- a/src/fast_array_utils/stats/_is_constant.py +++ b/src/fast_array_utils/stats/_is_constant.py @@ -24,7 +24,7 @@ def is_constant_( *, axis: Literal[0, 1] | None = None, ) -> bool | NDArray[np.bool] | types.CupyArray | types.DaskArray: # pragma: no cover - raise NotImplementedError + raise NotImplementedError # pragma: no cover @is_constant_.register(np.ndarray | types.CupyArray | types.HasArrayNamespace) diff --git a/src/fast_array_utils/stats/_power.py b/src/fast_array_utils/stats/_power.py index b6702c8..82653a9 100644 --- a/src/fast_array_utils/stats/_power.py +++ b/src/fast_array_utils/stats/_power.py @@ -26,7 +26,7 @@ def power[Arr: Array](x: Arr, n: int, /, dtype: DTypeLike | None = None) -> Arr: @singledispatch def _power(x: Array, n: int, /, dtype: DTypeLike | None = None) -> Array: - raise NotImplementedError + raise NotImplementedError # pragma: no cover @_power.register(np.ndarray | types.CupyArray)