diff -Nru dask-2022.01.0+dfsg/debian/changelog dask-2022.01.0+dfsg/debian/changelog --- dask-2022.01.0+dfsg/debian/changelog 2022-03-05 22:16:51.000000000 +0000 +++ dask-2022.01.0+dfsg/debian/changelog 2022-08-04 16:33:34.000000000 +0000 @@ -1,3 +1,10 @@ +dask (2022.01.0+dfsg-2+rpi1) bookworm-staging; urgency=medium + + [Changes taken from 2022.01.0+dfsg-1ubuntu1 by Graham Inggs] + * Cherry-pick upstream commit for scipy 1.8 compatibility + + -- Peter Michael Green Thu, 04 Aug 2022 16:33:34 +0000 + dask (2022.01.0+dfsg-2) unstable; urgency=medium * Extend 32bit-compatibility.patch to work around diff -Nru dask-2022.01.0+dfsg/debian/patches/scipy1.8.patch dask-2022.01.0+dfsg/debian/patches/scipy1.8.patch --- dask-2022.01.0+dfsg/debian/patches/scipy1.8.patch 1970-01-01 00:00:00.000000000 +0000 +++ dask-2022.01.0+dfsg/debian/patches/scipy1.8.patch 2022-08-04 16:31:32.000000000 +0000 @@ -0,0 +1,158 @@ +Description: Scipy 1.8.0 compat: copy private classes into + dask/array/stats.py (#8694) +Origin: upstream, https://github.com/dask/dask/commit/a27b437da2594fd5c15f85736aa520feb726ddbd +Author: Julia Signell +Last-Update: 2022-03-03 + +--- a/dask/array/stats.py ++++ b/dask/array/stats.py +@@ -28,6 +28,7 @@ + # out of the use of this software, even if advised of the possibility of + # such damage. + import math ++from collections import namedtuple + + import numpy as np + +@@ -42,16 +43,27 @@ + raise ImportError("`dask.array.stats` requires `scipy` to be installed.") from e + from scipy import special + from scipy.stats import distributions +-from scipy.stats.stats import ( +- F_onewayResult, +- KurtosistestResult, +- NormaltestResult, +- Power_divergenceResult, +- SkewtestResult, +- Ttest_1sampResult, +- Ttest_indResult, +- Ttest_relResult, +-) ++ ++# copied from https://github.com/scipy/scipy/blob/v1.8.0/scipy/stats/_stats_py.py since ++# these are all private after v1.8.0 ++F_onewayResult = namedtuple("F_onewayResult", ("statistic", "pvalue")) ++KurtosistestResult = namedtuple("KurtosistestResult", ("statistic", "pvalue")) ++NormaltestResult = namedtuple("NormaltestResult", ("statistic", "pvalue")) ++Power_divergenceResult = namedtuple("Power_divergenceResult", ("statistic", "pvalue")) ++SkewtestResult = namedtuple("SkewtestResult", ("statistic", "pvalue")) ++Ttest_1sampResult = namedtuple("Ttest_1sampResult", ("statistic", "pvalue")) ++Ttest_indResult = namedtuple("Ttest_indResult", ("statistic", "pvalue")) ++Ttest_relResult = namedtuple("Ttest_relResult", ("statistic", "pvalue")) ++ ++# Map from names to lambda_ values used in power_divergence(). ++_power_div_lambda_names = { ++ "pearson": 1, ++ "log-likelihood": 0, ++ "freeman-tukey": -0.5, ++ "mod-log-likelihood": -1, ++ "neyman": -2, ++ "cressie-read": 2 / 3, ++} + + __all__ = [ + "ttest_ind", +@@ -140,14 +152,13 @@ + def power_divergence(f_obs, f_exp=None, ddof=0, axis=0, lambda_=None): + + if isinstance(lambda_, str): +- # TODO: public api +- if lambda_ not in scipy.stats.stats._power_div_lambda_names: +- names = repr(list(scipy.stats.stats._power_div_lambda_names.keys()))[1:-1] ++ if lambda_ not in _power_div_lambda_names: ++ names = repr(list(_power_div_lambda_names.keys()))[1:-1] + raise ValueError( + f"invalid string for lambda_: {lambda_!r}. " + f"Valid strings are {names}" + ) +- lambda_ = scipy.stats.stats._power_div_lambda_names[lambda_] ++ lambda_ = _power_div_lambda_names[lambda_] + elif lambda_ is None: + lambda_ = 1 + +--- a/dask/array/tests/test_linearoperator.py ++++ /dev/null +@@ -1,31 +0,0 @@ +-import pytest +- +-pytest.importorskip("scipy") +- +-import numpy as np +-import scipy.sparse.linalg +- +-import dask.array as da +- +- +-def test_LinearOperator(): +- X = np.random.random(size=(3, 2)) +- y = np.random.random(size=(2, 1)) +- w = np.random.random(size=(3, 1)) +- square = np.random.random(size=(2, 2)) +- +- dX = da.from_array(X, chunks=(2, 1)) +- +- npLO = scipy.sparse.linalg.aslinearoperator(X) +- daLO = scipy.sparse.linalg.interface.MatrixLinearOperator(dX) +- +- functions = [lambda x, y: x.matvec(y), lambda x, y: x * y, lambda x, y: x.dot(y)] +- for func in functions: +- assert np.allclose(func(npLO, y), func(daLO, y)) +- +- assert np.allclose(npLO.matmat(square), daLO.matmat(square)) +- +- assert np.allclose(npLO.rmatvec(w), daLO.rmatvec(w)) +- +- assert npLO.dtype == daLO.dtype +- assert npLO.shape == daLO.shape +--- a/docs/source/array-linear-operator.rst ++++ /dev/null +@@ -1,28 +0,0 @@ +-LinearOperator +-============== +- +-Dask Array implements the SciPy LinearOperator_ interface and it can be used +-with any SciPy algorithm depending on that interface. +- +-Example +-------- +- +-.. code-block:: python +- +- import dask.array as da +- x = da.random.random(size=(10000, 10000), chunks=(1000, 1000)) +- +- from scipy.sparse.linalg.interface import MatrixLinearOperator +- A = MatrixLinearOperator(x) +- +- import numpy as np +- b = np.random.random(10000) +- +- from scipy.sparse.linalg import gmres +- x = gmres(A, b) +- +-*Disclaimer: This is just a toy example and not necessarily the best way to +-solve this problem for this data.* +- +- +-.. _LinearOperator: https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.linalg.LinearOperator.html +--- a/docs/source/array-overlap.rst ++++ b/docs/source/array-overlap.rst +@@ -114,7 +114,7 @@ + + .. code-block:: python + +- >>> from scipy.ndimage.filters import gaussian_filter ++ >>> from scipy.ndimage import gaussian_filter + >>> def func(block): + ... return gaussian_filter(block, sigma=1) + +--- a/docs/source/array.rst ++++ b/docs/source/array.rst +@@ -12,7 +12,6 @@ + array-design.rst + array-sparse.rst + array-stats.rst +- array-linear-operator.rst + array-slicing.rst + array-assignment.rst + array-stack.rst diff -Nru dask-2022.01.0+dfsg/debian/patches/series dask-2022.01.0+dfsg/debian/patches/series --- dask-2022.01.0+dfsg/debian/patches/series 2022-02-20 22:18:36.000000000 +0000 +++ dask-2022.01.0+dfsg/debian/patches/series 2022-08-04 16:31:32.000000000 +0000 @@ -9,3 +9,4 @@ use-youtube-nocookie.patch reproducible-config-autofunction.patch 32bit-comatibility.patch +scipy1.8.patch