diff --git a/.gitignore b/.gitignore
index cb1fc67ff..5b3080424 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
 *.pyc
 *.egg-info
+dask-worker-space/
 docs/build
 build/
 dist/
diff --git a/.travis.yml b/.travis.yml
index 8ffe4f6ed..a1edcbfd9 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -35,7 +35,7 @@ jobs:
 
     - env:
       - PYTHON=3.4
-      - NUMPY=1.10.4
+      - NUMPY=1.12.1
       - PANDAS=0.19.1
       - *test_and_lint
       - *no_coverage
@@ -45,7 +45,7 @@ jobs:
 
     - env:
       - PYTHON=3.5
-      - NUMPY=1.12.1
+      - NUMPY=1.11.0
       - PANDAS=0.19.2
       - *test_and_lint
       - *no_coverage
diff --git a/dask/array/__init__.py b/dask/array/__init__.py
index 4e43f29b6..67c697118 100644
--- a/dask/array/__init__.py
+++ b/dask/array/__init__.py
@@ -6,7 +6,7 @@ from .core import (Array, block, concatenate, stack, from_array, store,
                    from_delayed, asarray, asanyarray,
                    broadcast_arrays, broadcast_to)
 from .routines import (take, choose, argwhere, where, coarsen, insert,
-                       ravel, roll, unique, squeeze, topk, ptp, diff, ediff1d,
+                       ravel, roll, unique, squeeze, ptp, diff, ediff1d,
                        bincount, digitize, histogram, cov, array, dstack,
                        vstack, hstack, compress, extract, round, count_nonzero,
                        flatnonzero, nonzero, around, isin, isnull, notnull,
@@ -37,7 +37,8 @@ from .reductions import (sum, prod, mean, std, var, any, all, min, max, vnorm,
                          argmin, argmax,
                          nansum, nanmean, nanstd, nanvar, nanmin,
                          nanmax, nanargmin, nanargmax,
-                         cumsum, cumprod)
+                         cumsum, cumprod,
+                         topk, argtopk)
 from .percentile import percentile
 with ignoring(ImportError):
     from .reductions import nanprod, nancumprod, nancumsum
diff --git a/dask/array/chunk.py b/dask/array/chunk.py
index d38fe660b..2879f38e5 100644
--- a/dask/array/chunk.py
+++ b/dask/array/chunk.py
@@ -61,15 +61,14 @@ nanargmax = keepdims_wrapper(np.nanargmax)
 any = keepdims_wrapper(np.any)
 all = keepdims_wrapper(np.all)
 nansum = keepdims_wrapper(np.nansum)
+nanprod = keepdims_wrapper(np.nanprod)
 
 try:
-    from numpy import nanprod, nancumprod, nancumsum
+    from numpy import nancumprod, nancumsum
 except ImportError:  # pragma: no cover
-    nanprod = npcompat.nanprod
     nancumprod = npcompat.nancumprod
     nancumsum = npcompat.nancumsum
 
-nanprod = keepdims_wrapper(nanprod)
 nancumprod = keepdims_wrapper(nancumprod)
 nancumsum = keepdims_wrapper(nancumsum)
 
@@ -176,16 +175,48 @@ except ImportError:  # pragma: no cover
     broadcast_to = npcompat.broadcast_to
 
 
-def topk(k, x):
-    """ Top k elements of an array
-
-    >>> topk(2, np.array([5, 1, 3, 6]))
-    array([6, 5])
+def topk(a, k, axis, keepdims):
+    """Kernel of topk and argtopk.
+    Extract the k largest elements from a on the given axis.
+    If k is negative, extract the -k smallest elements instead.
+    Note that, unlike in the parent function, the returned elements
+    are not sorted internally.
+    """
+    axis = axis[0]
+    if abs(k) >= a.shape[axis]:
+        return a
+    a = np.partition(a, -k, axis=axis)
+    # return a[-k:] if k>0 else a[:-k], on arbitrary axis
+    return a[[
+        (slice(-k, None) if k > 0 else slice(None, -k))
+        if i == axis else slice(None)
+        for i in range(a.ndim)
+    ]]
+
+
+def topk_postprocess(a, k, axis):
+    """Kernel of topk and argtopk.
+    Post-processes the output of topk, sorting the results internally.
+    """
+    a = np.sort(a, axis=axis)
+    if k > 0:
+        # a = a[::-1] on arbitrary axis
+        a = a[[
+            slice(None, None, -1) if i == axis else slice(None)
+            for i in range(a.ndim)
+        ]]
+    return a
+
+
+def argtopk_preprocess(a, idx):
+    """Kernel of argtopk.
+    Preprocess data, by putting it together with its indexes in a recarray
     """
-    # http://stackoverflow.com/a/23734295/616616 by larsmans
-    k = np.minimum(k, len(x))
-    ind = np.argpartition(x, -k)[-k:]
-    return np.sort(x[ind])[::-1]
+    # np.core.records.fromarrays won't work if a and idx don't have the same shape
+    res = np.recarray(a.shape, dtype=[('values', a.dtype), ('idx', idx.dtype)])
+    res.values = a
+    res.idx = idx
+    return res
 
 
 def arange(start, stop, step, length, dtype):
diff --git a/dask/array/core.py b/dask/array/core.py
index b2c44a4e0..4f0c58e25 100644
--- a/dask/array/core.py
+++ b/dask/array/core.py
@@ -1401,12 +1401,19 @@ class Array(DaskMethodsMixin):
             shape = shape[0]
         return reshape(self, shape)
 
-    def topk(self, k):
+    def topk(self, k, axis=-1, split_every=None):
         """The top k elements of an array.
 
         See ``da.topk`` for docstring"""
-        from .routines import topk
-        return topk(k, self)
+        from .reductions import topk
+        return topk(self, k, axis=axis, split_every=split_every)
+
+    def argtopk(self, k, axis=-1, split_every=None):
+        """The indices of the top k elements of an array.
+
+        See ``da.argtopk`` for docstring"""
+        from .reductions import argtopk
+        return argtopk(self, k, axis=axis, split_every=split_every)
 
     def astype(self, dtype, **kwargs):
         """Copy of the array, cast to a specified type.
diff --git a/dask/array/einsumfuncs.py b/dask/array/einsumfuncs.py
index f896610f3..483335a1d 100644
--- a/dask/array/einsumfuncs.py
+++ b/dask/array/einsumfuncs.py
@@ -193,7 +193,7 @@ def _einsum_kernel(*operands, **kwargs):
     return chunk.reshape(chunk.shape + (1,) * ncontract_inds)
 
 
-_einsum_can_optimize = LooseVersion(np.__version__) >= LooseVersion("1.12.0")
+einsum_can_optimize = LooseVersion(np.__version__) >= LooseVersion("1.12.0")
 
 
 @wraps(np.einsum)
@@ -212,7 +212,7 @@ def einsum(*operands, **kwargs):
     if optimize is None:
         optimize = False
 
-    if _einsum_can_optimize and optimize is not False:
+    if einsum_can_optimize and optimize is not False:
         # Avoid computation of dask arrays within np.einsum_path
         # by passing in small numpy arrays broadcasted
         # up to the right shape
@@ -234,7 +234,7 @@ def einsum(*operands, **kwargs):
     kwargs['kernel_dtype'] = einsum_dtype
     kwargs['ncontract_inds'] = ncontract_inds
 
-    if _einsum_can_optimize:
+    if einsum_can_optimize:
         kwargs['optimize'] = optimize
 
     # Update kwargs with atop parameters
diff --git a/dask/array/ma.py b/dask/array/ma.py
index f656eaf97..67186e1ce 100644
--- a/dask/array/ma.py
+++ b/dask/array/ma.py
@@ -10,8 +10,8 @@ from .core import (concatenate_lookup, tensordot_lookup, map_blocks,
                    asanyarray, atop)
 
 
-if LooseVersion(np.__version__) < '1.11.0':
-    raise ImportError("dask.array.ma requires numpy >= 1.11.0")
+if LooseVersion(np.__version__) < '1.11.2':
+    raise ImportError("dask.array.ma requires numpy >= 1.11.2")
 
 
 @normalize_token.register(np.ma.masked_array)
diff --git a/dask/array/numpy_compat.py b/dask/array/numpy_compat.py
index 8f27e5c91..6e1999e84 100644
--- a/dask/array/numpy_compat.py
+++ b/dask/array/numpy_compat.py
@@ -2,29 +2,9 @@ from __future__ import absolute_import, division, print_function
 
 from distutils.version import LooseVersion
 
-from ..compatibility import builtins
 import numpy as np
 import warnings
 
-try:
-    isclose = np.isclose
-except AttributeError:
-    def isclose(*args, **kwargs):
-        raise RuntimeError("You need numpy version 1.7 or greater to use "
-                           "isclose.")
-
-try:
-    full = np.full
-except AttributeError:
-    def full(shape, fill_value, dtype=None, order=None):
-        """Our implementation of numpy.full because your numpy is old."""
-        if order is not None:
-            raise NotImplementedError("`order` kwarg is not supported upgrade "
-                                      "to Numpy 1.8 or greater for support.")
-        return np.multiply(fill_value, np.ones(shape, dtype=dtype),
-                           dtype=dtype)
-
-
 # Taken from scikit-learn:
 # https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/utils/fixes.py#L84
 try:
@@ -54,79 +34,12 @@ except TypeError:
                                                     np.ma.core._DomainSafeDivide(),
                                                     0, 1)
 
-# functions copied from numpy
-try:
-    from numpy import broadcast_to, nanprod, nancumsum, nancumprod
-except ImportError:  # pragma: no cover
-    # these functions should arrive in numpy v1.10 to v1.12.  Until then,
-    # they are duplicated here
+if LooseVersion(np.__version__) < '1.12.0':
+    # These functions were added in numpy 1.12.0. For previous versions they
+    # are duplicated here
 
     # See https://github.com/numpy/numpy/blob/master/LICENSE.txt
     # or NUMPY_LICENSE.txt within this directory
-    def _maybe_view_as_subclass(original_array, new_array):
-        if type(original_array) is not type(new_array):
-            # if input was an ndarray subclass and subclasses were OK,
-            # then view the result as that subclass.
-            new_array = new_array.view(type=type(original_array))
-            # Since we have done something akin to a view from original_array, we
-            # should let the subclass finalize (if it has it implemented, i.e., is
-            # not None).
-            if new_array.__array_finalize__:
-                new_array.__array_finalize__(original_array)
-        return new_array
-
-    def _broadcast_to(array, shape, subok, readonly):
-        shape = tuple(shape) if np.iterable(shape) else (shape,)
-        array = np.array(array, copy=False, subok=subok)
-        if not shape and array.shape:
-            raise ValueError('cannot broadcast a non-scalar to a scalar array')
-        if builtins.any(size < 0 for size in shape):
-            raise ValueError('all elements of broadcast shape must be non-'
-                             'negative')
-        broadcast = np.nditer(
-            (array,), flags=['multi_index', 'zerosize_ok', 'refs_ok'],
-            op_flags=['readonly'], itershape=shape, order='C').itviews[0]
-        result = _maybe_view_as_subclass(array, broadcast)
-        if not readonly and array.flags.writeable:
-            result.flags.writeable = True
-        return result
-
-    def broadcast_to(array, shape, subok=False):
-        """Broadcast an array to a new shape.
-
-        Parameters
-        ----------
-        array : array_like
-            The array to broadcast.
-        shape : tuple
-            The shape of the desired array.
-        subok : bool, optional
-            If True, then sub-classes will be passed-through, otherwise
-            the returned array will be forced to be a base-class array (default).
-
-        Returns
-        -------
-        broadcast : array
-            A readonly view on the original array with the given shape. It is
-            typically not contiguous. Furthermore, more than one element of a
-            broadcasted array may refer to a single memory location.
-
-        Raises
-        ------
-        ValueError
-            If the array is not compatible with the new shape according to NumPy's
-            broadcasting rules.
-
-        Examples
-        --------
-        >>> x = np.array([1, 2, 3])
-        >>> np.broadcast_to(x, (3, 3))  # doctest: +SKIP
-        array([[1, 2, 3],
-               [1, 2, 3],
-               [1, 2, 3]])
-        """
-        return _broadcast_to(array, shape, subok=subok, readonly=True)
-
     def _replace_nan(a, val):
         """
         If `a` is of inexact type, make a copy of `a`, replace NaNs with
@@ -168,75 +81,6 @@ except ImportError:  # pragma: no cover
         np.copyto(a, val, where=mask)
         return a, mask
 
-    def nanprod(a, axis=None, dtype=None, out=None, keepdims=0):
-        """
-        Return the product of array elements over a given axis treating Not a
-        Numbers (NaNs) as zero.
-
-        One is returned for slices that are all-NaN or empty.
-
-        .. versionadded:: 1.10.0
-
-        Parameters
-        ----------
-        a : array_like
-            Array containing numbers whose sum is desired. If `a` is not an
-            array, a conversion is attempted.
-        axis : int, optional
-            Axis along which the product is computed. The default is to compute
-            the product of the flattened array.
-        dtype : data-type, optional
-            The type of the returned array and of the accumulator in which the
-            elements are summed.  By default, the dtype of `a` is used.  An
-            exception is when `a` has an integer type with less precision than
-            the platform (u)intp. In that case, the default will be either
-            (u)int32 or (u)int64 depending on whether the platform is 32 or 64
-            bits. For inexact inputs, dtype must be inexact.
-        out : ndarray, optional
-            Alternate output array in which to place the result.  The default
-            is ``None``. If provided, it must have the same shape as the
-            expected output, but the type will be cast if necessary.  See
-            `doc.ufuncs` for details. The casting of NaN to integer can yield
-            unexpected results.
-        keepdims : bool, optional
-            If True, the axes which are reduced are left in the result as
-            dimensions with size one. With this option, the result will
-            broadcast correctly against the original `arr`.
-
-        Returns
-        -------
-        y : ndarray or numpy scalar
-
-        See Also
-        --------
-        :func:`numpy.prod` : Product across array propagating NaNs.
-        isnan : Show which elements are NaN.
-
-        Notes
-        -----
-        Numpy integer arithmetic is modular. If the size of a product exceeds
-        the size of an integer accumulator, its value will wrap around and the
-        result will be incorrect. Specifying ``dtype=double`` can alleviate
-        that problem.
-
-        Examples
-        --------
-        >>> np.nanprod(1)
-        1
-        >>> np.nanprod([1])
-        1
-        >>> np.nanprod([1, np.nan])
-        1.0
-        >>> a = np.array([[1, 2], [3, np.nan]])
-        >>> np.nanprod(a)
-        6.0
-        >>> np.nanprod(a, axis=0)
-        array([ 3.,  2.])
-
-        """
-        a, mask = _replace_nan(a, 1)
-        return np.prod(a, axis=axis, dtype=dtype, out=out, keepdims=keepdims)
-
     def nancumsum(a, axis=None, dtype=None, out=None):
         """
         Return the cumulative sum of array elements over a given axis treating Not a
diff --git a/dask/array/reductions.py b/dask/array/reductions.py
index 8598a3519..29e6a9782 100644
--- a/dask/array/reductions.py
+++ b/dask/array/reductions.py
@@ -12,6 +12,7 @@ from toolz import compose, partition_all, get, accumulate, pluck
 
 from . import chunk
 from .core import _concatenate2, Array, atop, lol_tuples, handle_out
+from .creation import arange
 from .ufunc import sqrt
 from .wrap import zeros, ones
 from .numpy_compat import ma_divide, divide as np_divide
@@ -722,3 +723,73 @@ def validate_axis(ndim, axis):
         return axis + ndim
     else:
         return axis
+
+
+def topk(a, k, axis=-1, split_every=None):
+    """Extract the k largest elements from a on the given axis,
+    and return them sorted from largest to smallest.
+    If k is negative, extract the -k smallest elements instead,
+    and return them sorted from smallest to largest.
+
+    This assumes that ``k`` is small.  All results will be returned in a single
+    chunk along the given axis.
+
+    Examples
+    --------
+    >>> import dask.array as da
+    >>> x = np.array([5, 1, 3, 6])
+    >>> d = da.from_array(x, chunks=2)
+    >>> d.topk(2).compute()
+    array([6, 5])
+    >>> d.topk(-2).compute()
+    array([1, 3])
+    """
+    if isinstance(a, int) and isinstance(k, Array):
+        warnings.warn("DeprecationWarning: topk(k, a) has been replaced with topk(a, k)")
+        a, k = k, a
+
+    axis = validate_axis(a.ndim, axis)
+
+    kernel = partial(chunk.topk, k=k)
+    res = reduction(a, kernel, kernel, axis=axis, keepdims=True,
+                    dtype=a.dtype, split_every=split_every)
+    # reduction(keepdims=True) sets shape[axis] to 1. Fix it.
+    chunks = list(res.chunks)
+    chunks[axis] = (abs(k), )
+    res = Array(res.dask, res.name, chunks, res.dtype)
+
+    # Sort result internally
+    return res.map_blocks(chunk.topk_postprocess, k=k, axis=axis, dtype=a.dtype)
+
+
+def argtopk(a, k, axis=-1, split_every=None):
+    """Extract the indices of the k largest elements from a on the given axis,
+    and return them sorted from largest to smallest.
+    If k is negative, extract the indices of the -k smallest elements instead,
+    and return them sorted from smallest to largest.
+
+    This assumes that ``k`` is small.  All results will be returned in a single
+    chunk along the given axis.
+
+    Examples
+    --------
+    >>> import dask.array as da
+    >>> x = np.array([5, 1, 3, 6])
+    >>> d = da.from_array(x, chunks=2)
+    >>> d.argtopk(2).compute()
+    array([3, 0])
+    >>> d.argtopk(-2).compute()
+    array([1, 2])
+    """
+    axis = validate_axis(a.ndim, axis)
+
+    # Convert a to a recarray that contains its index
+    idx = arange(a.shape[axis], chunks=a.chunks[axis], dtype=np.int64)
+    idx = idx[tuple(slice(None) if i == axis else np.newaxis for i in range(a.ndim))]
+    a_rec = a.map_blocks(chunk.argtopk_preprocess, idx,
+                         dtype=[('a', a.dtype), ('idx', idx.dtype)])
+
+    res = topk(a_rec, k, axis=axis, split_every=split_every)
+
+    # Discard values
+    return res['idx']
diff --git a/dask/array/routines.py b/dask/array/routines.py
index 819daba9e..72e88433a 100644
--- a/dask/array/routines.py
+++ b/dask/array/routines.py
@@ -6,7 +6,6 @@ from collections import Iterable
 from distutils.version import LooseVersion
 from functools import wraps, partial
 from numbers import Integral
-from operator import getitem
 
 import numpy as np
 from toolz import concat, sliding_window, interleave
@@ -14,7 +13,7 @@ from toolz import concat, sliding_window, interleave
 from .. import sharedict
 from ..core import flatten
 from ..base import tokenize
-from . import numpy_compat, chunk
+from . import chunk
 from .creation import arange
 from .utils import safe_wraps
 from .wrap import ones
@@ -881,38 +880,6 @@ def squeeze(a, axis=None):
     return a[sl]
 
 
-def topk(k, x):
-    """ The top k elements of an array
-
-    Returns the k greatest elements of the array in sorted order.  Only works
-    on arrays of a single dimension.
-
-    This assumes that ``k`` is small.  All results will be returned in a single
-    chunk.
-
-    Examples
-    --------
-
-    >>> x = np.array([5, 1, 3, 6])
-    >>> d = from_array(x, chunks=2)
-    >>> d.topk(2).compute()
-    array([6, 5])
-    """
-    if x.ndim != 1:
-        raise ValueError("Topk only works on arrays of one dimension")
-
-    token = tokenize(k, x)
-    name = 'chunk.topk-' + token
-    dsk = {(name, i): (chunk.topk, k, key)
-           for i, key in enumerate(x.__dask_keys__())}
-    name2 = 'topk-' + token
-    dsk[(name2, 0)] = (getitem, (np.sort, (np.concatenate, list(dsk))),
-                       slice(-1, -k - 1, -1))
-    chunks = ((k,),)
-
-    return Array(sharedict.merge((name2, dsk), x.dask), name2, chunks, dtype=x.dtype)
-
-
 @wraps(np.compress)
 def compress(condition, a, axis=None):
     if axis is None:
@@ -995,9 +962,9 @@ def notnull(values):
     return ~isnull(values)
 
 
-@wraps(numpy_compat.isclose)
+@wraps(np.isclose)
 def isclose(arr1, arr2, rtol=1e-5, atol=1e-8, equal_nan=False):
-    func = partial(numpy_compat.isclose, rtol=rtol, atol=atol, equal_nan=equal_nan)
+    func = partial(np.isclose, rtol=rtol, atol=atol, equal_nan=equal_nan)
     return elemwise(func, arr1, arr2, dtype='bool')
 
 
diff --git a/dask/array/utils.py b/dask/array/utils.py
index 7e35865f7..3ac9b43e2 100644
--- a/dask/array/utils.py
+++ b/dask/array/utils.py
@@ -1,6 +1,5 @@
 from __future__ import absolute_import, division, print_function
 
-from distutils.version import LooseVersion
 import difflib
 import functools
 import math
@@ -14,23 +13,9 @@ from ..local import get_sync
 from ..sharedict import ShareDict
 
 
-if LooseVersion(np.__version__) >= '1.10.0':
-    _allclose = np.allclose
-else:
-    def _allclose(a, b, **kwargs):
-        if kwargs.pop('equal_nan', False):
-            a_nans = np.isnan(a)
-            b_nans = np.isnan(b)
-            if not (a_nans == b_nans).all():
-                return False
-            a = a[~a_nans]
-            b = b[~b_nans]
-        return np.allclose(a, b, **kwargs)
-
-
 def allclose(a, b, equal_nan=False, **kwargs):
     if getattr(a, 'dtype', None) != 'O':
-        return _allclose(a, b, equal_nan=equal_nan, **kwargs)
+        return np.allclose(a, b, equal_nan=equal_nan, **kwargs)
     if equal_nan:
         return (a.shape == b.shape and
                 all(np.isnan(b) if np.isnan(a) else a == b
diff --git a/dask/array/wrap.py b/dask/array/wrap.py
index accee3d64..1306c781d 100644
--- a/dask/array/wrap.py
+++ b/dask/array/wrap.py
@@ -12,7 +12,6 @@ except ImportError:
 
 from ..base import tokenize
 from .core import Array, normalize_chunks
-from .numpy_compat import full
 
 
 def wrap_func_shape_as_first_arg(func, *args, **kwargs):
@@ -68,4 +67,4 @@ w = wrap(wrap_func_shape_as_first_arg)
 ones = w(np.ones, dtype='f8')
 zeros = w(np.zeros, dtype='f8')
 empty = w(np.empty, dtype='f8')
-full = w(full)
+full = w(np.full)
diff --git a/docs/source/array-api.rst b/docs/source/array-api.rst
index b253f28ec..f6fa498c4 100644
--- a/docs/source/array-api.rst
+++ b/docs/source/array-api.rst
@@ -22,6 +22,7 @@ Top level user functions:
    arctanh
    argmax
    argmin
+   argtopk
    argwhere
    around
    array
@@ -341,7 +342,6 @@ Other functions
 .. autofunction:: from_array
 .. autofunction:: from_delayed
 .. autofunction:: store
-.. autofunction:: topk
 .. autofunction:: coarsen
 .. autofunction:: stack
 .. autofunction:: concatenate
@@ -362,6 +362,7 @@ Other functions
 .. autofunction:: arctanh
 .. autofunction:: argmax
 .. autofunction:: argmin
+.. autofunction:: argtopk
 .. autofunction:: argwhere
 .. autofunction:: around
 .. autofunction:: array
diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst
index d55f3a042..301db78af 100644
--- a/docs/source/changelog.rst
+++ b/docs/source/changelog.rst
@@ -12,6 +12,12 @@ Array
 - Add ``piecewise`` for Dask Arrays (:pr:`3350`) `John A Kirkham`_
 - Fix handling of ``nan`` in ``broadcast_shapes`` (:pr:`3356`) `John A Kirkham`_
 - Add ``isin`` for dask arrays (:pr:`3363`). `Stephan Hoyer`_
+- Overhauled ``topk`` for Dask Arrays: faster algorithm, particularly for large k's; added support
+  for multiple axes, recursive aggregation, and an option to pick the bottom k elements instead.
+  (:pr:`3395`) `Guido Imperiale`_
+- The ``topk`` API has changed from topk(k, array) to the more conventional topk(array, k).
+  The legacy API still works but is now deprecated. (:pr:`2965`) `Guido Imperiale`_
+- New function ``argtopk`` for Dask Arrays (:pr:`3396`) `Guido Imperiale`_
 
 DataFrame
 +++++++++
@@ -1027,6 +1033,7 @@ Other
 - There is also a gitter chat room and a stackoverflow tag
 
 
+.. _`Guido Imperiale`: https://github.com/crusaderky
 .. _`John A Kirkham`: https://github.com/jakirkham
 .. _`Matthew Rocklin`: https://github.com/mrocklin
 .. _`Jim Crist`: https://github.com/jcrist
diff --git a/setup.py b/setup.py
index 75ccaa59f..8daeba180 100755
--- a/setup.py
+++ b/setup.py
@@ -8,9 +8,9 @@ import versioneer
 # NOTE: These are tested in `continuous_integration/travis/test_imports.sh` If
 # you modify these, make sure to change the corresponding line there.
 extras_require = {
-  'array': ['numpy >= 1.10.4', 'toolz >= 0.7.3'],
+  'array': ['numpy >= 1.11.0', 'toolz >= 0.7.3'],
   'bag': ['cloudpickle >= 0.2.1', 'toolz >= 0.7.3', 'partd >= 0.3.8'],
-  'dataframe': ['numpy >= 1.10.4', 'pandas >= 0.19.0', 'toolz >= 0.7.3',
+  'dataframe': ['numpy >= 1.11.0', 'pandas >= 0.19.0', 'toolz >= 0.7.3',
                 'partd >= 0.3.8', 'cloudpickle >= 0.2.1'],
   'distributed': ['distributed >= 1.21'],
   'delayed': ['toolz >= 0.7.3'],

Dropping NumPy 1.10
Increasingly we discover issues with PRs after merging them on NumPy 1.10, which we then either need to fix ourselves or hope the submitter of the PR will kindly fix the issue. While these issues can normally be solved by skipping, adding compat functions, etc., it starts to raise the question: how long do we want to support NumPy 1.10. As of January NumPy 1.14 was relased and has since had 2 patch releases. The list of NumPy 1.15 issue is not too long either (roughly two thirds have already been resolved). To me this is a pretty good case for dropping, but am interested to hear other thoughts.

If we do feel strongly about keeping NumPy 1.10, could we discuss adding it as part of the PR builds to cutdown on strain caused by the issues mentioned above?
diff --git a/dask/array/tests/test_array_core.py b/dask/array/tests/test_array_core.py
index adf24fe13..211a2b849 100644
--- a/dask/array/tests/test_array_core.py
+++ b/dask/array/tests/test_array_core.py
@@ -286,8 +286,6 @@ def test_stack_promote_type():
     assert_eq(res, np.stack([i, f]))
 
 
-@pytest.mark.skipif(LooseVersion(np.__version__) < '1.10.0',
-                    reason="NumPy doesn't yet support stack")
 def test_stack_rechunk():
     x = da.random.random(10, chunks=5)
     y = da.random.random(10, chunks=4)
diff --git a/dask/array/tests/test_linalg.py b/dask/array/tests/test_linalg.py
index eafd86144..18d9e5473 100644
--- a/dask/array/tests/test_linalg.py
+++ b/dask/array/tests/test_linalg.py
@@ -500,10 +500,6 @@ def test_norm_1dim(shape, chunks, axis, norm, keepdims):
 
     a_r = np.linalg.norm(a, ord=norm, axis=axis, keepdims=keepdims)
     d_r = da.linalg.norm(d, ord=norm, axis=axis, keepdims=keepdims)
-
-    # Fix a type mismatch on NumPy 1.10.
-    a_r = a_r.astype(float)
-
     assert_eq(a_r, d_r)
 
 
diff --git a/dask/array/tests/test_reductions.py b/dask/array/tests/test_reductions.py
index 2dda9e1d5..ed6a2e6a0 100644
--- a/dask/array/tests/test_reductions.py
+++ b/dask/array/tests/test_reductions.py
@@ -1,21 +1,13 @@
 from __future__ import absolute_import, division, print_function
 
 import pytest
-pytest.importorskip('numpy')
+np = pytest.importorskip('numpy')
 
 import dask.array as da
 from dask.array.utils import assert_eq as _assert_eq, same_keys
 from dask.core import get_deps
 from dask.context import set_options
 
-import numpy as np
-# temporary until numpy functions migrated
-try:
-    from numpy import nanprod
-except ImportError:  # pragma: no cover
-    import dask.array.numpy_compat as npcompat
-    nanprod = npcompat.nanprod
-
 
 def assert_eq(a, b):
     _assert_eq(a, b, equal_nan=True)
@@ -56,7 +48,7 @@ def test_reductions_1D(dtype):
     reduction_1d_test(da.all, a, np.all, x, False)
 
     reduction_1d_test(da.nansum, a, np.nansum, x)
-    reduction_1d_test(da.nanprod, a, nanprod, x)
+    reduction_1d_test(da.nanprod, a, np.nanprod, x)
     reduction_1d_test(da.nanmean, a, np.mean, x)
     reduction_1d_test(da.nanvar, a, np.var, x)
     reduction_1d_test(da.nanstd, a, np.std, x)
@@ -127,7 +119,7 @@ def test_reductions_2D(dtype):
     reduction_2d_test(da.all, a, np.all, x, False)
 
     reduction_2d_test(da.nansum, a, np.nansum, x)
-    reduction_2d_test(da.nanprod, a, nanprod, x)
+    reduction_2d_test(da.nanprod, a, np.nanprod, x)
     reduction_2d_test(da.nanmean, a, np.mean, x)
     reduction_2d_test(da.nanvar, a, np.nanvar, x, False)  # Difference in dtype algo
     reduction_2d_test(da.nanstd, a, np.nanstd, x, False)  # Difference in dtype algo
@@ -207,7 +199,7 @@ def test_reductions_2D_nans():
     reduction_2d_test(da.all, a, np.all, x, False, False)
 
     reduction_2d_test(da.nansum, a, np.nansum, x, False, False)
-    reduction_2d_test(da.nanprod, a, nanprod, x, False, False)
+    reduction_2d_test(da.nanprod, a, np.nanprod, x, False, False)
     reduction_2d_test(da.nanmean, a, np.nanmean, x, False, False)
     with pytest.warns(None):  # division by 0 warning
         reduction_2d_test(da.nanvar, a, np.nanvar, x, False, False)
@@ -287,7 +279,7 @@ def test_nan():
     assert_eq(np.nanstd(x, axis=0), da.nanstd(d, axis=0))
     assert_eq(np.nanargmin(x, axis=0), da.nanargmin(d, axis=0))
     assert_eq(np.nanargmax(x, axis=0), da.nanargmax(d, axis=0))
-    assert_eq(nanprod(x), da.nanprod(d))
+    assert_eq(np.nanprod(x), da.nanprod(d))
 
 
 @pytest.mark.skipif(np.__version__ < '1.13.0', reason='nanmax/nanmin for object dtype')
@@ -422,3 +414,65 @@ def test_array_cumreduction_out(func):
     x = da.ones((10, 10), chunks=(4, 4))
     func(x, axis=0, out=x)
     assert_eq(x, func(np.ones((10, 10)), axis=0))
+
+
+@pytest.mark.parametrize('npfunc,daskfunc', [
+    (np.sort, da.topk),
+    (np.argsort, da.argtopk),
+])
+@pytest.mark.parametrize('split_every', [None, 2])
+def test_topk_argtopk1(npfunc, daskfunc, split_every):
+    # Test data
+    k = 5
+    a = da.random.random(1000, chunks=250)
+    b = da.random.random((10, 20, 30), chunks=(4, 8, 8))
+    c = da.from_array(np.array([(1, 'Hello'), (2, 'World')], dtype=[('foo', int), ('bar', '<U5')]),
+                      chunks=1)
+
+    # 1-dimensional arrays
+    # top 5 elements, sorted descending
+    assert_eq(npfunc(a)[-k:][::-1],
+              daskfunc(a, k, split_every=split_every))
+    # bottom 5 elements, sorted ascending
+    assert_eq(npfunc(a)[:k],
+              daskfunc(a, -k, split_every=split_every))
+
+    # n-dimensional arrays
+    # also testing when k > chunk
+    # top 5 elements, sorted descending
+    assert_eq(npfunc(b, axis=0)[-k:, :, :][::-1, :, :],
+              daskfunc(b, k, axis=0, split_every=split_every))
+    assert_eq(npfunc(b, axis=1)[:, -k:, :][:, ::-1, :],
+              daskfunc(b, k, axis=1, split_every=split_every))
+    assert_eq(npfunc(b, axis=-1)[:, :, -k:][:, :, ::-1],
+              daskfunc(b, k, axis=-1, split_every=split_every))
+    with pytest.raises(ValueError):
+        daskfunc(b, k, axis=3, split_every=split_every)
+
+    # bottom 5 elements, sorted ascending
+    assert_eq(npfunc(b, axis=0)[:k, :, :],
+              daskfunc(b, -k, axis=0, split_every=split_every))
+    assert_eq(npfunc(b, axis=1)[:, :k, :],
+              daskfunc(b, -k, axis=1, split_every=split_every))
+    assert_eq(npfunc(b, axis=-1)[:, :, :k],
+              daskfunc(b, -k, axis=-1, split_every=split_every))
+    with pytest.raises(ValueError):
+        daskfunc(b, -k, axis=3, split_every=split_every)
+
+    # structured arrays
+    assert_eq(npfunc(c, axis=0)[-1:][::-1],
+              daskfunc(c, 1, split_every=split_every))
+    assert_eq(npfunc(c, axis=0)[:1],
+              daskfunc(c, -1, split_every=split_every))
+
+
+def test_topk_argtopk2():
+    a = da.random.random((10, 20, 30), chunks=(4, 8, 8))
+
+    # Support for deprecated API for topk
+    with pytest.warns(UserWarning):
+        assert_eq(da.topk(a, 5), da.topk(5, a))
+
+    # As Array methods
+    assert_eq(a.topk(5, axis=1, split_every=2), da.topk(a, 5, axis=1, split_every=2))
+    assert_eq(a.argtopk(5, axis=1, split_every=2), da.argtopk(a, 5, axis=1, split_every=2))
diff --git a/dask/array/tests/test_routines.py b/dask/array/tests/test_routines.py
index 882941d35..7b8443644 100644
--- a/dask/array/tests/test_routines.py
+++ b/dask/array/tests/test_routines.py
@@ -11,6 +11,7 @@ np = pytest.importorskip('numpy')
 import dask.array as da
 from dask.utils import ignoring
 from dask.array.utils import assert_eq, same_keys
+from dask.array.einsumfuncs import einsum_can_optimize
 
 
 def test_array():
@@ -418,27 +419,6 @@ def test_ediff1d(shape, to_end, to_begin):
     assert_eq(da.ediff1d(a, to_end, to_begin), np.ediff1d(x, to_end, to_begin))
 
 
-def test_topk():
-    x = np.array([5, 2, 1, 6])
-    d = da.from_array(x, chunks=2)
-
-    e = da.topk(2, d)
-
-    assert e.chunks == ((2,),)
-    assert_eq(e, np.sort(x)[-1:-3:-1])
-    assert same_keys(da.topk(2, d), e)
-
-
-def test_topk_k_bigger_than_chunk():
-    x = np.array([5, 2, 1, 6])
-    d = da.from_array(x, chunks=2)
-
-    e = da.topk(3, d)
-
-    assert e.chunks == ((3,),)
-    assert_eq(e, np.array([6, 5, 2]))
-
-
 def test_bincount():
     x = np.array([2, 1, 5, 2, 1])
     d = da.from_array(x, chunks=2)
@@ -469,8 +449,6 @@ def test_bincount_raises_informative_error_on_missing_minlength_kwarg():
         assert False
 
 
-@pytest.mark.skipif(LooseVersion(np.__version__) < '1.10.0',
-                    reason="NumPy doesn't yet support nd digitize")
 def test_digitize():
     x = np.array([2, 4, 5, 6, 1])
     bins = np.array([1, 2, 3, 4, 5])
@@ -1356,6 +1334,8 @@ def test_einsum(einsum_signature):
               da.einsum(einsum_signature, *da_inputs))
 
 
+@pytest.mark.skipif(not einsum_can_optimize,
+                    reason="np.einsum(optimize) unavailable")
 @pytest.mark.parametrize('optimize_opts', [
     (True, False),
     ('greedy', False),
diff --git a/dask/array/tests/test_sparse.py b/dask/array/tests/test_sparse.py
index dc7519f5a..028bcfef4 100644
--- a/dask/array/tests/test_sparse.py
+++ b/dask/array/tests/test_sparse.py
@@ -9,7 +9,7 @@ from dask.array.utils import assert_eq
 
 sparse = pytest.importorskip('sparse')
 
-if LooseVersion(np.__version__) < '1.11.0':
+if LooseVersion(np.__version__) < '1.11.2':
     pytestmark = pytest.mark.skip
 
 
diff --git a/dask/dataframe/tests/test_dataframe.py b/dask/dataframe/tests/test_dataframe.py
index 6c447ecd2..35e290f7c 100644
--- a/dask/dataframe/tests/test_dataframe.py
+++ b/dask/dataframe/tests/test_dataframe.py
@@ -1,6 +1,7 @@
 import sys
-from operator import add
+from distutils.version import LooseVersion
 from itertools import product
+from operator import add
 
 import pandas as pd
 import pandas.util.testing as tm
@@ -331,24 +332,25 @@ def test_cumulative():
     assert_eq(ddf.cummin(axis=1), df.cummin(axis=1))
     assert_eq(ddf.cummax(axis=1), df.cummax(axis=1))
 
-    # testing out parameter
-    np.cumsum(ddf, out=ddf_out)
-    assert_eq(ddf_out, df.cumsum())
-    np.cumprod(ddf, out=ddf_out)
-    assert_eq(ddf_out, df.cumprod())
-    ddf.cummin(out=ddf_out)
-    assert_eq(ddf_out, df.cummin())
-    ddf.cummax(out=ddf_out)
-    assert_eq(ddf_out, df.cummax())
-
-    np.cumsum(ddf, out=ddf_out, axis=1)
-    assert_eq(ddf_out, df.cumsum(axis=1))
-    np.cumprod(ddf, out=ddf_out, axis=1)
-    assert_eq(ddf_out, df.cumprod(axis=1))
-    ddf.cummin(out=ddf_out, axis=1)
-    assert_eq(ddf_out, df.cummin(axis=1))
-    ddf.cummax(out=ddf_out, axis=1)
-    assert_eq(ddf_out, df.cummax(axis=1))
+    # testing out parameter if out parameter supported
+    if LooseVersion(np.__version__) >= '1.13.0':
+        np.cumsum(ddf, out=ddf_out)
+        assert_eq(ddf_out, df.cumsum())
+        np.cumprod(ddf, out=ddf_out)
+        assert_eq(ddf_out, df.cumprod())
+        ddf.cummin(out=ddf_out)
+        assert_eq(ddf_out, df.cummin())
+        ddf.cummax(out=ddf_out)
+        assert_eq(ddf_out, df.cummax())
+
+        np.cumsum(ddf, out=ddf_out, axis=1)
+        assert_eq(ddf_out, df.cumsum(axis=1))
+        np.cumprod(ddf, out=ddf_out, axis=1)
+        assert_eq(ddf_out, df.cumprod(axis=1))
+        ddf.cummin(out=ddf_out, axis=1)
+        assert_eq(ddf_out, df.cummin(axis=1))
+        ddf.cummax(out=ddf_out, axis=1)
+        assert_eq(ddf_out, df.cummax(axis=1))
 
     assert_eq(ddf.a.cumsum(), df.a.cumsum())
     assert_eq(ddf.a.cumprod(), df.a.cumprod())

pip install -e .[complete]
parse_log_pytest
requirements.txt
pytest
apt-get update apt-get install -y gcc
3.6
py.test --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==22.2.0
certifi==2021.5.30
click==8.0.4
cloudpickle==2.2.1
-e git+https://github.com/dask/dask.git@a842d448b7dabd48f8ad23cba906f2502e6149a8#egg=dask
distributed==1.21.8
HeapDict==1.0.1
importlib-metadata==4.8.3
iniconfig==1.1.1
locket==1.0.0
msgpack==1.0.5
numpy==1.19.5
packaging==21.3
pandas==1.1.5
partd==1.2.0
pluggy==1.0.0
psutil==7.0.0
py==1.11.0
pyparsing==3.1.4
pytest==7.0.1
python-dateutil==2.9.0.post0
pytz==2025.2
six==1.17.0
sortedcontainers==2.4.0
tblib==1.7.0
tomli==1.2.3
toolz==0.12.0
tornado==6.1
typing_extensions==4.1.1
zict==2.1.0
zipp==3.6.0

name: dask
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==22.2.0
      - click==8.0.4
      - cloudpickle==2.2.1
      - distributed==1.21.8
      - heapdict==1.0.1
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - locket==1.0.0
      - msgpack==1.0.5
      - numpy==1.19.5
      - packaging==21.3
      - pandas==1.1.5
      - partd==1.2.0
      - pluggy==1.0.0
      - psutil==7.0.0
      - py==1.11.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - python-dateutil==2.9.0.post0
      - pytz==2025.2
      - six==1.17.0
      - sortedcontainers==2.4.0
      - tblib==1.7.0
      - tomli==1.2.3
      - toolz==0.12.0
      - tornado==6.1
      - typing-extensions==4.1.1
      - zict==2.1.0
      - zipp==3.6.0
prefix: /opt/conda/envs/dask

dask/array/tests/test_array_core.py::test_getem dask/array/tests/test_array_core.py::test_top dask/array/tests/test_array_core.py::test_top_supports_broadcasting_rules dask/array/tests/test_array_core.py::test_top_literals dask/array/tests/test_array_core.py::test_atop_literals dask/array/tests/test_array_core.py::test_concatenate3_on_scalars dask/array/tests/test_array_core.py::test_chunked_dot_product dask/array/tests/test_array_core.py::test_chunked_transpose_plus_one dask/array/tests/test_array_core.py::test_broadcast_dimensions_works_with_singleton_dimensions dask/array/tests/test_array_core.py::test_broadcast_dimensions dask/array/tests/test_array_core.py::test_Array dask/array/tests/test_array_core.py::test_uneven_chunks dask/array/tests/test_array_core.py::test_numblocks_suppoorts_singleton_block_dims dask/array/tests/test_array_core.py::test_keys dask/array/tests/test_array_core.py::test_Array_computation dask/array/tests/test_array_core.py::test_stack dask/array/tests/test_array_core.py::test_short_stack dask/array/tests/test_array_core.py::test_stack_scalars dask/array/tests/test_array_core.py::test_stack_promote_type dask/array/tests/test_array_core.py::test_stack_rechunk dask/array/tests/test_array_core.py::test_concatenate dask/array/tests/test_array_core.py::test_concatenate_types[dtypes0] dask/array/tests/test_array_core.py::test_concatenate_types[dtypes1] dask/array/tests/test_array_core.py::test_concatenate_unknown_axes dask/array/tests/test_array_core.py::test_concatenate_rechunk dask/array/tests/test_array_core.py::test_concatenate_fixlen_strings dask/array/tests/test_array_core.py::test_block_simple_row_wise dask/array/tests/test_array_core.py::test_block_simple_column_wise dask/array/tests/test_array_core.py::test_block_with_1d_arrays_row_wise dask/array/tests/test_array_core.py::test_block_with_1d_arrays_multiple_rows dask/array/tests/test_array_core.py::test_block_with_1d_arrays_column_wise dask/array/tests/test_array_core.py::test_block_mixed_1d_and_2d dask/array/tests/test_array_core.py::test_block_complicated dask/array/tests/test_array_core.py::test_block_nested dask/array/tests/test_array_core.py::test_block_3d dask/array/tests/test_array_core.py::test_block_with_mismatched_shape dask/array/tests/test_array_core.py::test_block_no_lists dask/array/tests/test_array_core.py::test_block_invalid_nesting dask/array/tests/test_array_core.py::test_block_empty_lists dask/array/tests/test_array_core.py::test_block_tuple dask/array/tests/test_array_core.py::test_binops dask/array/tests/test_array_core.py::test_broadcast_shapes dask/array/tests/test_array_core.py::test_elemwise_on_scalars dask/array/tests/test_array_core.py::test_elemwise_with_ndarrays dask/array/tests/test_array_core.py::test_elemwise_differently_chunked dask/array/tests/test_array_core.py::test_elemwise_dtype dask/array/tests/test_array_core.py::test_operators dask/array/tests/test_array_core.py::test_operator_dtype_promotion dask/array/tests/test_array_core.py::test_T dask/array/tests/test_array_core.py::test_norm dask/array/tests/test_array_core.py::test_broadcast_to dask/array/tests/test_array_core.py::test_broadcast_to_array dask/array/tests/test_array_core.py::test_broadcast_to_scalar dask/array/tests/test_array_core.py::test_broadcast_to_chunks dask/array/tests/test_array_core.py::test_broadcast_arrays dask/array/tests/test_array_core.py::test_broadcast_operator[u_shape0-v_shape0] dask/array/tests/test_array_core.py::test_broadcast_operator[u_shape1-v_shape1] dask/array/tests/test_array_core.py::test_broadcast_operator[u_shape2-v_shape2] dask/array/tests/test_array_core.py::test_broadcast_operator[u_shape3-v_shape3] dask/array/tests/test_array_core.py::test_broadcast_operator[u_shape4-v_shape4] dask/array/tests/test_array_core.py::test_broadcast_operator[u_shape5-v_shape5] dask/array/tests/test_array_core.py::test_broadcast_operator[u_shape6-v_shape6] dask/array/tests/test_array_core.py::test_reshape[original_shape0-new_shape0-chunks0] dask/array/tests/test_array_core.py::test_reshape[original_shape1-new_shape1-5] dask/array/tests/test_array_core.py::test_reshape[original_shape2-new_shape2-5] dask/array/tests/test_array_core.py::test_reshape[original_shape3-new_shape3-12] dask/array/tests/test_array_core.py::test_reshape[original_shape4-new_shape4-12] dask/array/tests/test_array_core.py::test_reshape[original_shape5-new_shape5-chunks5] dask/array/tests/test_array_core.py::test_reshape[original_shape6-new_shape6-4] dask/array/tests/test_array_core.py::test_reshape[original_shape7-new_shape7-4] dask/array/tests/test_array_core.py::test_reshape[original_shape8-new_shape8-4] dask/array/tests/test_array_core.py::test_reshape[original_shape9-new_shape9-2] dask/array/tests/test_array_core.py::test_reshape[original_shape10-new_shape10-2] dask/array/tests/test_array_core.py::test_reshape[original_shape11-new_shape11-2] dask/array/tests/test_array_core.py::test_reshape[original_shape12-new_shape12-2] dask/array/tests/test_array_core.py::test_reshape[original_shape13-new_shape13-2] dask/array/tests/test_array_core.py::test_reshape[original_shape14-new_shape14-2] dask/array/tests/test_array_core.py::test_reshape[original_shape15-new_shape15-2] dask/array/tests/test_array_core.py::test_reshape[original_shape16-new_shape16-chunks16] dask/array/tests/test_array_core.py::test_reshape[original_shape17-new_shape17-3] dask/array/tests/test_array_core.py::test_reshape[original_shape18-new_shape18-4] dask/array/tests/test_array_core.py::test_reshape[original_shape19-new_shape19-chunks19] dask/array/tests/test_array_core.py::test_reshape[original_shape20-new_shape20-1] dask/array/tests/test_array_core.py::test_reshape[original_shape21-new_shape21-1] dask/array/tests/test_array_core.py::test_reshape[original_shape22-new_shape22-24] dask/array/tests/test_array_core.py::test_reshape[original_shape23-new_shape23-6] dask/array/tests/test_array_core.py::test_reshape[original_shape24-new_shape24-6] dask/array/tests/test_array_core.py::test_reshape[original_shape25-new_shape25-6] dask/array/tests/test_array_core.py::test_reshape[original_shape26-new_shape26-chunks26] dask/array/tests/test_array_core.py::test_reshape[original_shape27-new_shape27-chunks27] dask/array/tests/test_array_core.py::test_reshape[original_shape28-new_shape28-chunks28] dask/array/tests/test_array_core.py::test_reshape[original_shape29-new_shape29-chunks29] dask/array/tests/test_array_core.py::test_reshape[original_shape30-new_shape30-chunks30] dask/array/tests/test_array_core.py::test_reshape[original_shape31-new_shape31-chunks31] dask/array/tests/test_array_core.py::test_reshape[original_shape32-new_shape32-chunks32] dask/array/tests/test_array_core.py::test_reshape[original_shape33-new_shape33-chunks33] dask/array/tests/test_array_core.py::test_reshape[original_shape34-new_shape34-chunks34] dask/array/tests/test_array_core.py::test_reshape_exceptions dask/array/tests/test_array_core.py::test_reshape_splat dask/array/tests/test_array_core.py::test_reshape_fails_for_dask_only dask/array/tests/test_array_core.py::test_reshape_unknown_dimensions dask/array/tests/test_array_core.py::test_full dask/array/tests/test_array_core.py::test_map_blocks dask/array/tests/test_array_core.py::test_map_blocks2 dask/array/tests/test_array_core.py::test_map_blocks_with_constants dask/array/tests/test_array_core.py::test_map_blocks_with_kwargs dask/array/tests/test_array_core.py::test_map_blocks_with_chunks dask/array/tests/test_array_core.py::test_map_blocks_dtype_inference dask/array/tests/test_array_core.py::test_from_function_requires_block_args dask/array/tests/test_array_core.py::test_repr dask/array/tests/test_array_core.py::test_slicing_with_ellipsis dask/array/tests/test_array_core.py::test_slicing_with_ndarray dask/array/tests/test_array_core.py::test_dtype dask/array/tests/test_array_core.py::test_blockdims_from_blockshape dask/array/tests/test_array_core.py::test_coerce dask/array/tests/test_array_core.py::test_bool dask/array/tests/test_array_core.py::test_store_kwargs dask/array/tests/test_array_core.py::test_store_delayed_target dask/array/tests/test_array_core.py::test_store dask/array/tests/test_array_core.py::test_store_regions dask/array/tests/test_array_core.py::test_store_compute_false dask/array/tests/test_array_core.py::test_store_locks dask/array/tests/test_array_core.py::test_store_method_return dask/array/tests/test_array_core.py::test_to_dask_dataframe dask/array/tests/test_array_core.py::test_np_array_with_zero_dimensions dask/array/tests/test_array_core.py::test_dtype_complex dask/array/tests/test_array_core.py::test_astype dask/array/tests/test_array_core.py::test_arithmetic dask/array/tests/test_array_core.py::test_elemwise_consistent_names dask/array/tests/test_array_core.py::test_optimize dask/array/tests/test_array_core.py::test_slicing_with_non_ndarrays dask/array/tests/test_array_core.py::test_getter dask/array/tests/test_array_core.py::test_size dask/array/tests/test_array_core.py::test_nbytes dask/array/tests/test_array_core.py::test_itemsize dask/array/tests/test_array_core.py::test_Array_normalizes_dtype dask/array/tests/test_array_core.py::test_from_array_with_lock dask/array/tests/test_array_core.py::test_from_array_tasks_always_call_getter dask/array/tests/test_array_core.py::test_from_array_no_asarray dask/array/tests/test_array_core.py::test_from_array_getitem dask/array/tests/test_array_core.py::test_from_array_minus_one dask/array/tests/test_array_core.py::test_asarray dask/array/tests/test_array_core.py::test_asanyarray dask/array/tests/test_array_core.py::test_from_func dask/array/tests/test_array_core.py::test_concatenate3_2 dask/array/tests/test_array_core.py::test_map_blocks3 dask/array/tests/test_array_core.py::test_from_array_with_missing_chunks dask/array/tests/test_array_core.py::test_normalize_chunks dask/array/tests/test_array_core.py::test_raise_on_no_chunks dask/array/tests/test_array_core.py::test_chunks_is_immutable dask/array/tests/test_array_core.py::test_raise_on_bad_kwargs dask/array/tests/test_array_core.py::test_long_slice dask/array/tests/test_array_core.py::test_ellipsis_slicing dask/array/tests/test_array_core.py::test_point_slicing dask/array/tests/test_array_core.py::test_point_slicing_with_full_slice dask/array/tests/test_array_core.py::test_slice_with_floats dask/array/tests/test_array_core.py::test_slice_with_integer_types dask/array/tests/test_array_core.py::test_index_with_integer_types dask/array/tests/test_array_core.py::test_vindex_basic dask/array/tests/test_array_core.py::test_vindex_nd dask/array/tests/test_array_core.py::test_vindex_negative dask/array/tests/test_array_core.py::test_vindex_errors dask/array/tests/test_array_core.py::test_vindex_merge dask/array/tests/test_array_core.py::test_empty_array dask/array/tests/test_array_core.py::test_memmap dask/array/tests/test_array_core.py::test_to_npy_stack dask/array/tests/test_array_core.py::test_view dask/array/tests/test_array_core.py::test_view_fortran dask/array/tests/test_array_core.py::test_map_blocks_with_changed_dimension dask/array/tests/test_array_core.py::test_broadcast_chunks dask/array/tests/test_array_core.py::test_chunks_error dask/array/tests/test_array_core.py::test_array_compute_forward_kwargs dask/array/tests/test_array_core.py::test_dont_fuse_outputs dask/array/tests/test_array_core.py::test_dont_dealias_outputs dask/array/tests/test_array_core.py::test_timedelta_op dask/array/tests/test_array_core.py::test_to_delayed dask/array/tests/test_array_core.py::test_to_delayed_optimize_graph dask/array/tests/test_array_core.py::test_cumulative dask/array/tests/test_array_core.py::test_atop_names dask/array/tests/test_array_core.py::test_atop_new_axes dask/array/tests/test_array_core.py::test_atop_kwargs dask/array/tests/test_array_core.py::test_atop_chunks dask/array/tests/test_array_core.py::test_atop_raises_on_incorrect_indices dask/array/tests/test_array_core.py::test_from_delayed dask/array/tests/test_array_core.py::test_A_property dask/array/tests/test_array_core.py::test_copy_mutate dask/array/tests/test_array_core.py::test_npartitions dask/array/tests/test_array_core.py::test_astype_gh1151 dask/array/tests/test_array_core.py::test_elemwise_name dask/array/tests/test_array_core.py::test_map_blocks_name dask/array/tests/test_array_core.py::test_array_picklable dask/array/tests/test_array_core.py::test_from_array_raises_on_bad_chunks dask/array/tests/test_array_core.py::test_concatenate_axes dask/array/tests/test_array_core.py::test_atop_concatenate dask/array/tests/test_array_core.py::test_common_blockdim dask/array/tests/test_array_core.py::test_uneven_chunks_that_fit_neatly dask/array/tests/test_array_core.py::test_elemwise_uneven_chunks dask/array/tests/test_array_core.py::test_uneven_chunks_atop dask/array/tests/test_array_core.py::test_warn_bad_rechunking dask/array/tests/test_array_core.py::test_optimize_fuse_keys dask/array/tests/test_array_core.py::test_concatenate_stack_dont_warn dask/array/tests/test_array_core.py::test_map_blocks_delayed dask/array/tests/test_array_core.py::test_no_chunks dask/array/tests/test_array_core.py::test_no_chunks_2d dask/array/tests/test_array_core.py::test_no_chunks_yes_chunks dask/array/tests/test_array_core.py::test_raise_informative_errors_no_chunks dask/array/tests/test_array_core.py::test_no_chunks_slicing_2d dask/array/tests/test_array_core.py::test_index_array_with_array_1d dask/array/tests/test_array_core.py::test_index_array_with_array_2d dask/array/tests/test_array_core.py::test_setitem_1d dask/array/tests/test_array_core.py::test_setitem_2d dask/array/tests/test_array_core.py::test_setitem_errs dask/array/tests/test_array_core.py::test_zero_slice_dtypes dask/array/tests/test_array_core.py::test_zero_sized_array_rechunk dask/array/tests/test_array_core.py::test_atop_zero_shape dask/array/tests/test_array_core.py::test_atop_zero_shape_new_axes dask/array/tests/test_array_core.py::test_broadcast_against_zero_shape dask/array/tests/test_array_core.py::test_from_array_name dask/array/tests/test_array_core.py::test_concatenate_errs dask/array/tests/test_array_core.py::test_stack_errs dask/array/tests/test_array_core.py::test_atop_with_numpy_arrays dask/array/tests/test_array_core.py::test_elemwise_with_lists[other0-100] dask/array/tests/test_array_core.py::test_elemwise_with_lists[other0-6] dask/array/tests/test_array_core.py::test_elemwise_with_lists[other1-100] dask/array/tests/test_array_core.py::test_elemwise_with_lists[other1-6] dask/array/tests/test_array_core.py::test_elemwise_with_lists[other2-100] dask/array/tests/test_array_core.py::test_elemwise_with_lists[other2-6] dask/array/tests/test_array_core.py::test_constructor_plugin dask/array/tests/test_array_core.py::test_no_warnings_on_metadata dask/array/tests/test_array_core.py::test_delayed_array_key_hygeine dask/array/tests/test_array_core.py::test_empty_chunks_in_array_len dask/array/tests/test_array_core.py::test_meta[None] dask/array/tests/test_array_core.py::test_meta[dtype1] dask/array/tests/test_reductions.py::test_reductions_1D[f4] dask/array/tests/test_reductions.py::test_reductions_1D[i4] dask/array/tests/test_reductions.py::test_reduction_errors dask/array/tests/test_reductions.py::test_arg_reductions[argmin-argmin] dask/array/tests/test_reductions.py::test_arg_reductions[argmax-argmax] dask/array/tests/test_reductions.py::test_arg_reductions[_nanargmin-nanargmin] dask/array/tests/test_reductions.py::test_arg_reductions[_nanargmax-nanargmax] dask/array/tests/test_reductions.py::test_nanarg_reductions[_nanargmin-nanargmin] dask/array/tests/test_reductions.py::test_nanarg_reductions[_nanargmax-nanargmax] dask/array/tests/test_reductions.py::test_reductions_2D_nans dask/array/tests/test_reductions.py::test_moment dask/array/tests/test_reductions.py::test_reductions_with_negative_axes dask/array/tests/test_reductions.py::test_nan dask/array/tests/test_reductions.py::test_0d_array dask/array/tests/test_reductions.py::test_reduction_on_scalar dask/array/tests/test_reductions.py::test_reductions_with_empty_array dask/array/tests/test_reductions.py::test_tree_reduce_depth dask/array/tests/test_reductions.py::test_tree_reduce_set_options dask/array/tests/test_reductions.py::test_reduction_names dask/array/tests/test_reductions.py::test_array_reduction_out[sum] dask/array/tests/test_reductions.py::test_array_reduction_out[argmax] dask/array/tests/test_reductions.py::test_array_cumreduction_axis[None-cumsum] dask/array/tests/test_reductions.py::test_array_cumreduction_axis[None-cumprod] dask/array/tests/test_reductions.py::test_array_cumreduction_axis[0-cumsum] dask/array/tests/test_reductions.py::test_array_cumreduction_axis[0-cumprod] dask/array/tests/test_reductions.py::test_array_cumreduction_axis[1-cumsum] dask/array/tests/test_reductions.py::test_array_cumreduction_axis[1-cumprod] dask/array/tests/test_reductions.py::test_array_cumreduction_axis[-1-cumsum] dask/array/tests/test_reductions.py::test_array_cumreduction_axis[-1-cumprod] dask/array/tests/test_reductions.py::test_array_cumreduction_out[cumsum] dask/array/tests/test_reductions.py::test_array_cumreduction_out[cumprod] dask/array/tests/test_reductions.py::test_topk_argtopk1[None-sort-topk] dask/array/tests/test_reductions.py::test_topk_argtopk1[None-argsort-argtopk] dask/array/tests/test_reductions.py::test_topk_argtopk1[2-sort-topk] dask/array/tests/test_reductions.py::test_topk_argtopk1[2-argsort-argtopk] dask/array/tests/test_reductions.py::test_topk_argtopk2 dask/array/tests/test_routines.py::test_array dask/array/tests/test_routines.py::test_atleast_nd_no_args[atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_no_args[atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_no_args[atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_one_arg[shape0-chunks0-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_one_arg[shape0-chunks0-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_one_arg[shape0-chunks0-atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_one_arg[shape1-chunks1-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_one_arg[shape1-chunks1-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_one_arg[shape1-chunks1-atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_one_arg[shape2-chunks2-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_one_arg[shape2-chunks2-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_one_arg[shape2-chunks2-atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_one_arg[shape3-chunks3-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_one_arg[shape3-chunks3-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_one_arg[shape3-chunks3-atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_one_arg[shape4-chunks4-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_one_arg[shape4-chunks4-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_one_arg[shape4-chunks4-atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape10-shape20-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape10-shape20-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape10-shape20-atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape11-shape21-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape11-shape21-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape11-shape21-atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape12-shape22-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape12-shape22-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape12-shape22-atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape13-shape23-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape13-shape23-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape13-shape23-atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape14-shape24-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape14-shape24-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape14-shape24-atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape15-shape25-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape15-shape25-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape15-shape25-atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape16-shape26-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape16-shape26-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape16-shape26-atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape17-shape27-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape17-shape27-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape17-shape27-atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape18-shape28-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape18-shape28-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape18-shape28-atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape19-shape29-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape19-shape29-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape19-shape29-atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape110-shape210-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape110-shape210-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape110-shape210-atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape111-shape211-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape111-shape211-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape111-shape211-atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape112-shape212-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape112-shape212-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape112-shape212-atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape113-shape213-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape113-shape213-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape113-shape213-atleast_3d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape114-shape214-atleast_1d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape114-shape214-atleast_2d] dask/array/tests/test_routines.py::test_atleast_nd_two_args[shape114-shape214-atleast_3d] dask/array/tests/test_routines.py::test_transpose dask/array/tests/test_routines.py::test_transpose_negative_axes dask/array/tests/test_routines.py::test_swapaxes dask/array/tests/test_routines.py::test_flip[shape0-flipud-kwargs0] dask/array/tests/test_routines.py::test_flip[shape0-fliplr-kwargs1] dask/array/tests/test_routines.py::test_flip[shape0-flip-kwargs2] dask/array/tests/test_routines.py::test_flip[shape0-flip-kwargs3] dask/array/tests/test_routines.py::test_flip[shape0-flip-kwargs4] dask/array/tests/test_routines.py::test_flip[shape0-flip-kwargs5] dask/array/tests/test_routines.py::test_flip[shape1-flipud-kwargs0] dask/array/tests/test_routines.py::test_flip[shape1-fliplr-kwargs1] dask/array/tests/test_routines.py::test_flip[shape1-flip-kwargs2] dask/array/tests/test_routines.py::test_flip[shape1-flip-kwargs3] dask/array/tests/test_routines.py::test_flip[shape1-flip-kwargs4] dask/array/tests/test_routines.py::test_flip[shape1-flip-kwargs5] dask/array/tests/test_routines.py::test_flip[shape2-flipud-kwargs0] dask/array/tests/test_routines.py::test_flip[shape2-fliplr-kwargs1] dask/array/tests/test_routines.py::test_flip[shape2-flip-kwargs2] dask/array/tests/test_routines.py::test_flip[shape2-flip-kwargs3] dask/array/tests/test_routines.py::test_flip[shape2-flip-kwargs4] dask/array/tests/test_routines.py::test_flip[shape2-flip-kwargs5] dask/array/tests/test_routines.py::test_flip[shape3-flipud-kwargs0] dask/array/tests/test_routines.py::test_flip[shape3-fliplr-kwargs1] dask/array/tests/test_routines.py::test_flip[shape3-flip-kwargs2] dask/array/tests/test_routines.py::test_flip[shape3-flip-kwargs3] dask/array/tests/test_routines.py::test_flip[shape3-flip-kwargs4] dask/array/tests/test_routines.py::test_flip[shape3-flip-kwargs5] dask/array/tests/test_routines.py::test_flip[shape4-flipud-kwargs0] dask/array/tests/test_routines.py::test_flip[shape4-fliplr-kwargs1] dask/array/tests/test_routines.py::test_flip[shape4-flip-kwargs2] dask/array/tests/test_routines.py::test_flip[shape4-flip-kwargs3] dask/array/tests/test_routines.py::test_flip[shape4-flip-kwargs4] dask/array/tests/test_routines.py::test_flip[shape4-flip-kwargs5] dask/array/tests/test_routines.py::test_matmul[x_shape0-y_shape0] dask/array/tests/test_routines.py::test_matmul[x_shape1-y_shape1] dask/array/tests/test_routines.py::test_matmul[x_shape2-y_shape2] dask/array/tests/test_routines.py::test_matmul[x_shape3-y_shape3] dask/array/tests/test_routines.py::test_matmul[x_shape4-y_shape4] dask/array/tests/test_routines.py::test_matmul[x_shape5-y_shape5] dask/array/tests/test_routines.py::test_matmul[x_shape6-y_shape6] dask/array/tests/test_routines.py::test_matmul[x_shape7-y_shape7] dask/array/tests/test_routines.py::test_matmul[x_shape8-y_shape8] dask/array/tests/test_routines.py::test_matmul[x_shape9-y_shape9] dask/array/tests/test_routines.py::test_matmul[x_shape10-y_shape10] dask/array/tests/test_routines.py::test_matmul[x_shape11-y_shape11] dask/array/tests/test_routines.py::test_matmul[x_shape12-y_shape12] dask/array/tests/test_routines.py::test_matmul[x_shape13-y_shape13] dask/array/tests/test_routines.py::test_matmul[x_shape14-y_shape14] dask/array/tests/test_routines.py::test_matmul[x_shape15-y_shape15] dask/array/tests/test_routines.py::test_matmul[x_shape16-y_shape16] dask/array/tests/test_routines.py::test_matmul[x_shape17-y_shape17] dask/array/tests/test_routines.py::test_matmul[x_shape18-y_shape18] dask/array/tests/test_routines.py::test_matmul[x_shape19-y_shape19] dask/array/tests/test_routines.py::test_matmul[x_shape20-y_shape20] dask/array/tests/test_routines.py::test_matmul[x_shape21-y_shape21] dask/array/tests/test_routines.py::test_matmul[x_shape22-y_shape22] dask/array/tests/test_routines.py::test_matmul[x_shape23-y_shape23] dask/array/tests/test_routines.py::test_matmul[x_shape24-y_shape24] dask/array/tests/test_routines.py::test_tensordot dask/array/tests/test_routines.py::test_tensordot_2[0] dask/array/tests/test_routines.py::test_tensordot_2[1] dask/array/tests/test_routines.py::test_tensordot_2[axes2] dask/array/tests/test_routines.py::test_tensordot_2[axes3] dask/array/tests/test_routines.py::test_tensordot_2[axes4] dask/array/tests/test_routines.py::test_tensordot_2[axes5] dask/array/tests/test_routines.py::test_tensordot_2[axes6] dask/array/tests/test_routines.py::test_dot_method dask/array/tests/test_routines.py::test_vdot[shape0-chunks0] dask/array/tests/test_routines.py::test_vdot[shape1-chunks1] dask/array/tests/test_routines.py::test_apply_along_axis[shape0-0-ndim-<lambda>] dask/array/tests/test_routines.py::test_apply_along_axis[shape0-0-sum-<lambda>] dask/array/tests/test_routines.py::test_apply_along_axis[shape0-0-range-<lambda>] dask/array/tests/test_routines.py::test_apply_along_axis[shape0-0-range2-<lambda>] dask/array/tests/test_routines.py::test_apply_along_axis[shape1-1-ndim-<lambda>] dask/array/tests/test_routines.py::test_apply_along_axis[shape1-1-sum-<lambda>] dask/array/tests/test_routines.py::test_apply_along_axis[shape1-1-range-<lambda>] dask/array/tests/test_routines.py::test_apply_along_axis[shape1-1-range2-<lambda>] dask/array/tests/test_routines.py::test_apply_along_axis[shape2-2-ndim-<lambda>] dask/array/tests/test_routines.py::test_apply_along_axis[shape2-2-sum-<lambda>] dask/array/tests/test_routines.py::test_apply_along_axis[shape2-2-range-<lambda>] dask/array/tests/test_routines.py::test_apply_along_axis[shape2-2-range2-<lambda>] dask/array/tests/test_routines.py::test_apply_along_axis[shape3--1-ndim-<lambda>] dask/array/tests/test_routines.py::test_apply_along_axis[shape3--1-sum-<lambda>] dask/array/tests/test_routines.py::test_apply_along_axis[shape3--1-range-<lambda>] dask/array/tests/test_routines.py::test_apply_along_axis[shape3--1-range2-<lambda>] dask/array/tests/test_routines.py::test_apply_over_axes[shape0-axes0-sum0-<lambda>] dask/array/tests/test_routines.py::test_apply_over_axes[shape0-axes0-sum1-<lambda>] dask/array/tests/test_routines.py::test_apply_over_axes[shape0-axes0-range-<lambda>] dask/array/tests/test_routines.py::test_apply_over_axes[shape1-0-sum0-<lambda>] dask/array/tests/test_routines.py::test_apply_over_axes[shape1-0-sum1-<lambda>] dask/array/tests/test_routines.py::test_apply_over_axes[shape1-0-range-<lambda>] dask/array/tests/test_routines.py::test_apply_over_axes[shape2-axes2-sum0-<lambda>] dask/array/tests/test_routines.py::test_apply_over_axes[shape2-axes2-sum1-<lambda>] dask/array/tests/test_routines.py::test_apply_over_axes[shape2-axes2-range-<lambda>] dask/array/tests/test_routines.py::test_apply_over_axes[shape3-axes3-sum0-<lambda>] dask/array/tests/test_routines.py::test_apply_over_axes[shape3-axes3-sum1-<lambda>] dask/array/tests/test_routines.py::test_apply_over_axes[shape3-axes3-range-<lambda>] dask/array/tests/test_routines.py::test_apply_over_axes[shape4-axes4-sum0-<lambda>] dask/array/tests/test_routines.py::test_apply_over_axes[shape4-axes4-sum1-<lambda>] dask/array/tests/test_routines.py::test_apply_over_axes[shape4-axes4-range-<lambda>] dask/array/tests/test_routines.py::test_ptp[shape0-None] dask/array/tests/test_routines.py::test_ptp[shape1-0] dask/array/tests/test_routines.py::test_ptp[shape2-1] dask/array/tests/test_routines.py::test_ptp[shape3-2] dask/array/tests/test_routines.py::test_ptp[shape4--1] dask/array/tests/test_routines.py::test_diff[0-shape0-0] dask/array/tests/test_routines.py::test_diff[0-shape1-1] dask/array/tests/test_routines.py::test_diff[0-shape2-2] dask/array/tests/test_routines.py::test_diff[0-shape3--1] dask/array/tests/test_routines.py::test_diff[1-shape0-0] dask/array/tests/test_routines.py::test_diff[1-shape1-1] dask/array/tests/test_routines.py::test_diff[1-shape2-2] dask/array/tests/test_routines.py::test_diff[1-shape3--1] dask/array/tests/test_routines.py::test_diff[2-shape0-0] dask/array/tests/test_routines.py::test_diff[2-shape1-1] dask/array/tests/test_routines.py::test_diff[2-shape2-2] dask/array/tests/test_routines.py::test_diff[2-shape3--1] dask/array/tests/test_routines.py::test_ediff1d[None-None-shape0] dask/array/tests/test_routines.py::test_ediff1d[None-None-shape1] dask/array/tests/test_routines.py::test_ediff1d[0-0-shape0] dask/array/tests/test_routines.py::test_ediff1d[0-0-shape1] dask/array/tests/test_routines.py::test_ediff1d[to_end2-to_begin2-shape0] dask/array/tests/test_routines.py::test_ediff1d[to_end2-to_begin2-shape1] dask/array/tests/test_routines.py::test_bincount dask/array/tests/test_routines.py::test_bincount_with_weights dask/array/tests/test_routines.py::test_bincount_raises_informative_error_on_missing_minlength_kwarg dask/array/tests/test_routines.py::test_digitize dask/array/tests/test_routines.py::test_histogram dask/array/tests/test_routines.py::test_histogram_alternative_bins_range dask/array/tests/test_routines.py::test_histogram_return_type dask/array/tests/test_routines.py::test_histogram_extra_args_and_shapes dask/array/tests/test_routines.py::test_cov dask/array/tests/test_routines.py::test_corrcoef dask/array/tests/test_routines.py::test_round dask/array/tests/test_routines.py::test_unique_kwargs[False-False-False] dask/array/tests/test_routines.py::test_unique_kwargs[False-False-True] dask/array/tests/test_routines.py::test_unique_kwargs[False-True-False] dask/array/tests/test_routines.py::test_unique_kwargs[False-True-True] dask/array/tests/test_routines.py::test_unique_kwargs[True-False-False] dask/array/tests/test_routines.py::test_unique_kwargs[True-False-True] dask/array/tests/test_routines.py::test_unique_kwargs[True-True-False] dask/array/tests/test_routines.py::test_unique_kwargs[True-True-True] dask/array/tests/test_routines.py::test_unique_rand[shape0-chunks0-0-10-23] dask/array/tests/test_routines.py::test_unique_rand[shape0-chunks0-0-10-796] dask/array/tests/test_routines.py::test_unique_rand[shape1-chunks1-0-10-23] dask/array/tests/test_routines.py::test_unique_rand[shape1-chunks1-0-10-796] dask/array/tests/test_routines.py::test_unique_rand[shape2-chunks2-0-10-23] dask/array/tests/test_routines.py::test_unique_rand[shape2-chunks2-0-10-796] dask/array/tests/test_routines.py::test_unique_rand[shape3-chunks3-0-10-23] dask/array/tests/test_routines.py::test_unique_rand[shape3-chunks3-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape0-test_chunks0-elements_shape0-elements_chunks0-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape0-test_chunks0-elements_shape0-elements_chunks0-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape0-test_chunks0-elements_shape1-elements_chunks1-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape0-test_chunks0-elements_shape1-elements_chunks1-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape0-test_chunks0-elements_shape2-elements_chunks2-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape0-test_chunks0-elements_shape2-elements_chunks2-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape0-test_chunks0-elements_shape3-elements_chunks3-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape0-test_chunks0-elements_shape3-elements_chunks3-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape1-test_chunks1-elements_shape0-elements_chunks0-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape1-test_chunks1-elements_shape0-elements_chunks0-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape1-test_chunks1-elements_shape1-elements_chunks1-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape1-test_chunks1-elements_shape1-elements_chunks1-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape1-test_chunks1-elements_shape2-elements_chunks2-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape1-test_chunks1-elements_shape2-elements_chunks2-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape1-test_chunks1-elements_shape3-elements_chunks3-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape1-test_chunks1-elements_shape3-elements_chunks3-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape2-test_chunks2-elements_shape0-elements_chunks0-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape2-test_chunks2-elements_shape0-elements_chunks0-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape2-test_chunks2-elements_shape1-elements_chunks1-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape2-test_chunks2-elements_shape1-elements_chunks1-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape2-test_chunks2-elements_shape2-elements_chunks2-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape2-test_chunks2-elements_shape2-elements_chunks2-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape2-test_chunks2-elements_shape3-elements_chunks3-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape2-test_chunks2-elements_shape3-elements_chunks3-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape3-test_chunks3-elements_shape0-elements_chunks0-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape3-test_chunks3-elements_shape0-elements_chunks0-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape3-test_chunks3-elements_shape1-elements_chunks1-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape3-test_chunks3-elements_shape1-elements_chunks1-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape3-test_chunks3-elements_shape2-elements_chunks2-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape3-test_chunks3-elements_shape2-elements_chunks2-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape3-test_chunks3-elements_shape3-elements_chunks3-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[True-test_shape3-test_chunks3-elements_shape3-elements_chunks3-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape0-test_chunks0-elements_shape0-elements_chunks0-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape0-test_chunks0-elements_shape0-elements_chunks0-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape0-test_chunks0-elements_shape1-elements_chunks1-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape0-test_chunks0-elements_shape1-elements_chunks1-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape0-test_chunks0-elements_shape2-elements_chunks2-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape0-test_chunks0-elements_shape2-elements_chunks2-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape0-test_chunks0-elements_shape3-elements_chunks3-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape0-test_chunks0-elements_shape3-elements_chunks3-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape1-test_chunks1-elements_shape0-elements_chunks0-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape1-test_chunks1-elements_shape0-elements_chunks0-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape1-test_chunks1-elements_shape1-elements_chunks1-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape1-test_chunks1-elements_shape1-elements_chunks1-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape1-test_chunks1-elements_shape2-elements_chunks2-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape1-test_chunks1-elements_shape2-elements_chunks2-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape1-test_chunks1-elements_shape3-elements_chunks3-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape1-test_chunks1-elements_shape3-elements_chunks3-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape2-test_chunks2-elements_shape0-elements_chunks0-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape2-test_chunks2-elements_shape0-elements_chunks0-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape2-test_chunks2-elements_shape1-elements_chunks1-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape2-test_chunks2-elements_shape1-elements_chunks1-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape2-test_chunks2-elements_shape2-elements_chunks2-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape2-test_chunks2-elements_shape2-elements_chunks2-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape2-test_chunks2-elements_shape3-elements_chunks3-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape2-test_chunks2-elements_shape3-elements_chunks3-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape3-test_chunks3-elements_shape0-elements_chunks0-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape3-test_chunks3-elements_shape0-elements_chunks0-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape3-test_chunks3-elements_shape1-elements_chunks1-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape3-test_chunks3-elements_shape1-elements_chunks1-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape3-test_chunks3-elements_shape2-elements_chunks2-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape3-test_chunks3-elements_shape2-elements_chunks2-0-10-796] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape3-test_chunks3-elements_shape3-elements_chunks3-0-10-23] dask/array/tests/test_routines.py::test_isin_rand[False-test_shape3-test_chunks3-elements_shape3-elements_chunks3-0-10-796] dask/array/tests/test_routines.py::test_isin_assume_unique[True] dask/array/tests/test_routines.py::test_isin_assume_unique[False] dask/array/tests/test_routines.py::test_roll[None-3-chunks0] dask/array/tests/test_routines.py::test_roll[None-3-chunks1] dask/array/tests/test_routines.py::test_roll[None-7-chunks0] dask/array/tests/test_routines.py::test_roll[None-7-chunks1] dask/array/tests/test_routines.py::test_roll[None-9-chunks0] dask/array/tests/test_routines.py::test_roll[None-9-chunks1] dask/array/tests/test_routines.py::test_roll[None-shift3-chunks0] dask/array/tests/test_routines.py::test_roll[None-shift3-chunks1] dask/array/tests/test_routines.py::test_roll[None-shift4-chunks0] dask/array/tests/test_routines.py::test_roll[None-shift4-chunks1] dask/array/tests/test_routines.py::test_roll[0-3-chunks0] dask/array/tests/test_routines.py::test_roll[0-3-chunks1] dask/array/tests/test_routines.py::test_roll[0-7-chunks0] dask/array/tests/test_routines.py::test_roll[0-7-chunks1] dask/array/tests/test_routines.py::test_roll[0-9-chunks0] dask/array/tests/test_routines.py::test_roll[0-9-chunks1] dask/array/tests/test_routines.py::test_roll[0-shift3-chunks0] dask/array/tests/test_routines.py::test_roll[0-shift3-chunks1] dask/array/tests/test_routines.py::test_roll[0-shift4-chunks0] dask/array/tests/test_routines.py::test_roll[0-shift4-chunks1] dask/array/tests/test_routines.py::test_roll[1-3-chunks0] dask/array/tests/test_routines.py::test_roll[1-3-chunks1] dask/array/tests/test_routines.py::test_roll[1-7-chunks0] dask/array/tests/test_routines.py::test_roll[1-7-chunks1] dask/array/tests/test_routines.py::test_roll[1-9-chunks0] dask/array/tests/test_routines.py::test_roll[1-9-chunks1] dask/array/tests/test_routines.py::test_roll[1-shift3-chunks0] dask/array/tests/test_routines.py::test_roll[1-shift3-chunks1] dask/array/tests/test_routines.py::test_roll[1-shift4-chunks0] dask/array/tests/test_routines.py::test_roll[1-shift4-chunks1] dask/array/tests/test_routines.py::test_roll[-1-3-chunks0] dask/array/tests/test_routines.py::test_roll[-1-3-chunks1] dask/array/tests/test_routines.py::test_roll[-1-7-chunks0] dask/array/tests/test_routines.py::test_roll[-1-7-chunks1] dask/array/tests/test_routines.py::test_roll[-1-9-chunks0] dask/array/tests/test_routines.py::test_roll[-1-9-chunks1] dask/array/tests/test_routines.py::test_roll[-1-shift3-chunks0] dask/array/tests/test_routines.py::test_roll[-1-shift3-chunks1] dask/array/tests/test_routines.py::test_roll[-1-shift4-chunks0] dask/array/tests/test_routines.py::test_roll[-1-shift4-chunks1] dask/array/tests/test_routines.py::test_roll[axis4-3-chunks0] dask/array/tests/test_routines.py::test_roll[axis4-3-chunks1] dask/array/tests/test_routines.py::test_roll[axis4-7-chunks0] dask/array/tests/test_routines.py::test_roll[axis4-7-chunks1] dask/array/tests/test_routines.py::test_roll[axis4-9-chunks0] dask/array/tests/test_routines.py::test_roll[axis4-9-chunks1] dask/array/tests/test_routines.py::test_roll[axis4-shift3-chunks0] dask/array/tests/test_routines.py::test_roll[axis4-shift3-chunks1] dask/array/tests/test_routines.py::test_roll[axis4-shift4-chunks0] dask/array/tests/test_routines.py::test_roll[axis4-shift4-chunks1] dask/array/tests/test_routines.py::test_roll[axis5-3-chunks0] dask/array/tests/test_routines.py::test_roll[axis5-3-chunks1] dask/array/tests/test_routines.py::test_roll[axis5-7-chunks0] dask/array/tests/test_routines.py::test_roll[axis5-7-chunks1] dask/array/tests/test_routines.py::test_roll[axis5-9-chunks0] dask/array/tests/test_routines.py::test_roll[axis5-9-chunks1] dask/array/tests/test_routines.py::test_roll[axis5-shift3-chunks0] dask/array/tests/test_routines.py::test_roll[axis5-shift3-chunks1] dask/array/tests/test_routines.py::test_roll[axis5-shift4-chunks0] dask/array/tests/test_routines.py::test_roll[axis5-shift4-chunks1] dask/array/tests/test_routines.py::test_ravel dask/array/tests/test_routines.py::test_squeeze[None-True] dask/array/tests/test_routines.py::test_squeeze[None-False] dask/array/tests/test_routines.py::test_squeeze[0-True] dask/array/tests/test_routines.py::test_squeeze[0-False] dask/array/tests/test_routines.py::test_squeeze[-1-True] dask/array/tests/test_routines.py::test_squeeze[-1-False] dask/array/tests/test_routines.py::test_squeeze[axis3-True] dask/array/tests/test_routines.py::test_squeeze[axis3-False] dask/array/tests/test_routines.py::test_vstack dask/array/tests/test_routines.py::test_hstack dask/array/tests/test_routines.py::test_dstack dask/array/tests/test_routines.py::test_take dask/array/tests/test_routines.py::test_take_dask_from_numpy dask/array/tests/test_routines.py::test_compress dask/array/tests/test_routines.py::test_extract dask/array/tests/test_routines.py::test_isnull dask/array/tests/test_routines.py::test_isclose dask/array/tests/test_routines.py::test_allclose dask/array/tests/test_routines.py::test_choose dask/array/tests/test_routines.py::test_piecewise dask/array/tests/test_routines.py::test_piecewise_otherwise dask/array/tests/test_routines.py::test_argwhere dask/array/tests/test_routines.py::test_argwhere_obj dask/array/tests/test_routines.py::test_argwhere_str dask/array/tests/test_routines.py::test_where dask/array/tests/test_routines.py::test_where_scalar_dtype dask/array/tests/test_routines.py::test_where_bool_optimization dask/array/tests/test_routines.py::test_where_nonzero dask/array/tests/test_routines.py::test_where_incorrect_args dask/array/tests/test_routines.py::test_count_nonzero dask/array/tests/test_routines.py::test_count_nonzero_axis[None] dask/array/tests/test_routines.py::test_count_nonzero_axis[0] dask/array/tests/test_routines.py::test_count_nonzero_axis[axis2] dask/array/tests/test_routines.py::test_count_nonzero_axis[axis3] dask/array/tests/test_routines.py::test_count_nonzero_obj dask/array/tests/test_routines.py::test_count_nonzero_obj_axis[None] dask/array/tests/test_routines.py::test_count_nonzero_obj_axis[0] dask/array/tests/test_routines.py::test_count_nonzero_obj_axis[axis2] dask/array/tests/test_routines.py::test_count_nonzero_obj_axis[axis3] dask/array/tests/test_routines.py::test_count_nonzero_str dask/array/tests/test_routines.py::test_flatnonzero dask/array/tests/test_routines.py::test_nonzero dask/array/tests/test_routines.py::test_nonzero_method dask/array/tests/test_routines.py::test_coarsen dask/array/tests/test_routines.py::test_coarsen_with_excess dask/array/tests/test_routines.py::test_insert dask/array/tests/test_routines.py::test_multi_insert dask/array/tests/test_routines.py::test_result_type dask/array/tests/test_routines.py::test_einsum[abc,bad->abcd] dask/array/tests/test_routines.py::test_einsum[abcdef,bcdfg->abcdeg] dask/array/tests/test_routines.py::test_einsum[ea,fb,abcd,gc,hd->efgh] dask/array/tests/test_routines.py::test_einsum[ab,b] dask/array/tests/test_routines.py::test_einsum[aa] dask/array/tests/test_routines.py::test_einsum[a,a->] dask/array/tests/test_routines.py::test_einsum[a,a->a] dask/array/tests/test_routines.py::test_einsum[a,a] dask/array/tests/test_routines.py::test_einsum[a,b] dask/array/tests/test_routines.py::test_einsum[a,b,c] dask/array/tests/test_routines.py::test_einsum[a] dask/array/tests/test_routines.py::test_einsum[ba,b] dask/array/tests/test_routines.py::test_einsum[ba,b->] dask/array/tests/test_routines.py::test_einsum[defab,fedbc->defac] dask/array/tests/test_routines.py::test_einsum[ab...,bc...->ac...] dask/array/tests/test_routines.py::test_einsum[a...a] dask/array/tests/test_routines.py::test_einsum[abc...->cba...] dask/array/tests/test_routines.py::test_einsum[...ab->...a] dask/array/tests/test_routines.py::test_einsum[a...a->a...] dask/array/tests/test_routines.py::test_einsum[...abc,...abcd->...d] dask/array/tests/test_routines.py::test_einsum[ab...,b->ab...] dask/array/tests/test_routines.py::test_einsum[aa->a] dask/array/tests/test_routines.py::test_einsum[ab,ab,c->c] dask/array/tests/test_routines.py::test_einsum[aab,bc->ac] dask/array/tests/test_routines.py::test_einsum[aab,bcc->ac] dask/array/tests/test_routines.py::test_einsum[fdf,cdd,ccd,afe->ae] dask/array/tests/test_routines.py::test_einsum[fff,fae,bef,def->abd] dask/array/tests/test_routines.py::test_einsum_optimize[optimize_opts0] dask/array/tests/test_routines.py::test_einsum_optimize[optimize_opts1] dask/array/tests/test_routines.py::test_einsum_optimize[optimize_opts2] dask/array/tests/test_routines.py::test_einsum_order[C] dask/array/tests/test_routines.py::test_einsum_order[F] dask/array/tests/test_routines.py::test_einsum_order[A] dask/array/tests/test_routines.py::test_einsum_order[K] dask/array/tests/test_routines.py::test_einsum_casting[no] dask/array/tests/test_routines.py::test_einsum_casting[equiv] dask/array/tests/test_routines.py::test_einsum_casting[safe] dask/array/tests/test_routines.py::test_einsum_casting[same_kind] dask/array/tests/test_routines.py::test_einsum_casting[unsafe] dask/array/tests/test_routines.py::test_einsum_broadcasting_contraction dask/array/tests/test_routines.py::test_einsum_broadcasting_contraction2 dask/array/tests/test_routines.py::test_einsum_broadcasting_contraction3 dask/dataframe/tests/test_dataframe.py::test_head_tail dask/dataframe/tests/test_dataframe.py::test_head_npartitions dask/dataframe/tests/test_dataframe.py::test_head_npartitions_warn dask/dataframe/tests/test_dataframe.py::test_index_head dask/dataframe/tests/test_dataframe.py::test_Series dask/dataframe/tests/test_dataframe.py::test_Index dask/dataframe/tests/test_dataframe.py::test_Scalar dask/dataframe/tests/test_dataframe.py::test_column_names dask/dataframe/tests/test_dataframe.py::test_index_names dask/dataframe/tests/test_dataframe.py::test_timezone_freq[1] dask/dataframe/tests/test_dataframe.py::test_rename_columns dask/dataframe/tests/test_dataframe.py::test_rename_series dask/dataframe/tests/test_dataframe.py::test_rename_series_method dask/dataframe/tests/test_dataframe.py::test_describe dask/dataframe/tests/test_dataframe.py::test_describe_empty dask/dataframe/tests/test_dataframe.py::test_cumulative dask/dataframe/tests/test_dataframe.py::test_dropna dask/dataframe/tests/test_dataframe.py::test_squeeze dask/dataframe/tests/test_dataframe.py::test_where_mask dask/dataframe/tests/test_dataframe.py::test_map_partitions_multi_argument dask/dataframe/tests/test_dataframe.py::test_map_partitions dask/dataframe/tests/test_dataframe.py::test_map_partitions_names dask/dataframe/tests/test_dataframe.py::test_map_partitions_column_info dask/dataframe/tests/test_dataframe.py::test_map_partitions_method_names dask/dataframe/tests/test_dataframe.py::test_map_partitions_keeps_kwargs_readable dask/dataframe/tests/test_dataframe.py::test_metadata_inference_single_partition_aligned_args dask/dataframe/tests/test_dataframe.py::test_drop_duplicates dask/dataframe/tests/test_dataframe.py::test_drop_duplicates_subset dask/dataframe/tests/test_dataframe.py::test_get_partition dask/dataframe/tests/test_dataframe.py::test_ndim dask/dataframe/tests/test_dataframe.py::test_dtype dask/dataframe/tests/test_dataframe.py::test_value_counts dask/dataframe/tests/test_dataframe.py::test_unique dask/dataframe/tests/test_dataframe.py::test_isin dask/dataframe/tests/test_dataframe.py::test_len dask/dataframe/tests/test_dataframe.py::test_size dask/dataframe/tests/test_dataframe.py::test_nbytes dask/dataframe/tests/test_dataframe.py::test_quantile dask/dataframe/tests/test_dataframe.py::test_quantile_missing dask/dataframe/tests/test_dataframe.py::test_empty_quantile dask/dataframe/tests/test_dataframe.py::test_dataframe_quantile dask/dataframe/tests/test_dataframe.py::test_index dask/dataframe/tests/test_dataframe.py::test_assign dask/dataframe/tests/test_dataframe.py::test_map dask/dataframe/tests/test_dataframe.py::test_concat dask/dataframe/tests/test_dataframe.py::test_args dask/dataframe/tests/test_dataframe.py::test_known_divisions dask/dataframe/tests/test_dataframe.py::test_unknown_divisions dask/dataframe/tests/test_dataframe.py::test_align[inner] dask/dataframe/tests/test_dataframe.py::test_align[outer] dask/dataframe/tests/test_dataframe.py::test_align[left] dask/dataframe/tests/test_dataframe.py::test_align[right] dask/dataframe/tests/test_dataframe.py::test_align_axis[inner] dask/dataframe/tests/test_dataframe.py::test_align_axis[outer] dask/dataframe/tests/test_dataframe.py::test_align_axis[left] dask/dataframe/tests/test_dataframe.py::test_align_axis[right] dask/dataframe/tests/test_dataframe.py::test_combine dask/dataframe/tests/test_dataframe.py::test_combine_first dask/dataframe/tests/test_dataframe.py::test_random_partitions dask/dataframe/tests/test_dataframe.py::test_series_round dask/dataframe/tests/test_dataframe.py::test_repartition_divisions dask/dataframe/tests/test_dataframe.py::test_repartition_on_pandas_dataframe dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-1-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-1-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-1-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-1-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-1-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-1-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-1-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-1-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-2-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-2-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-2-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-2-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-2-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-2-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-2-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-2-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-4-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-4-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-4-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-4-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-4-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-4-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-4-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-4-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-5-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-5-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-5-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-5-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-5-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-5-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-5-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-int-5-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-1-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-1-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-1-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-1-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-1-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-1-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-1-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-1-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-2-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-2-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-2-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-2-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-2-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-2-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-2-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-2-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-4-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-4-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-4-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-4-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-4-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-4-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-4-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-4-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-5-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-5-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-5-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-5-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-5-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-5-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-5-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-float-5-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-1-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-1-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-1-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-1-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-1-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-1-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-1-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-1-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-2-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-2-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-2-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-2-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-2-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-2-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-2-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-2-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-4-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-4-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-4-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-4-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-4-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-4-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-4-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-4-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-5-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-5-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-5-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-5-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-5-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-5-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-5-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>0-M8[ns]-5-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-1-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-1-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-1-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-1-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-1-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-1-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-1-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-1-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-2-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-2-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-2-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-2-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-2-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-2-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-2-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-2-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-4-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-4-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-4-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-4-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-4-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-4-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-4-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-4-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-5-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-5-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-5-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-5-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-5-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-5-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-5-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-int-5-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-1-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-1-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-1-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-1-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-1-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-1-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-1-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-1-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-2-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-2-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-2-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-2-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-2-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-2-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-2-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-2-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-4-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-4-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-4-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-4-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-4-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-4-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-4-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-4-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-5-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-5-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-5-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-5-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-5-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-5-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-5-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-float-5-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-1-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-1-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-1-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-1-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-1-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-1-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-1-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-1-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-2-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-2-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-2-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-2-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-2-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-2-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-2-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-2-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-4-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-4-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-4-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-4-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-4-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-4-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-4-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-4-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-5-1-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-5-1-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-5-2-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-5-2-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-5-4-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-5-4-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-5-5-True] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions[<lambda>1-M8[ns]-5-5-False] dask/dataframe/tests/test_dataframe.py::test_repartition_npartitions_same_limits dask/dataframe/tests/test_dataframe.py::test_repartition_object_index dask/dataframe/tests/test_dataframe.py::test_repartition_freq_errors dask/dataframe/tests/test_dataframe.py::test_embarrassingly_parallel_operations dask/dataframe/tests/test_dataframe.py::test_fillna dask/dataframe/tests/test_dataframe.py::test_fillna_multi_dataframe dask/dataframe/tests/test_dataframe.py::test_ffill_bfill dask/dataframe/tests/test_dataframe.py::test_fillna_series_types dask/dataframe/tests/test_dataframe.py::test_sample dask/dataframe/tests/test_dataframe.py::test_sample_without_replacement dask/dataframe/tests/test_dataframe.py::test_datetime_accessor dask/dataframe/tests/test_dataframe.py::test_str_accessor dask/dataframe/tests/test_dataframe.py::test_empty_max dask/dataframe/tests/test_dataframe.py::test_deterministic_apply_concat_apply_names dask/dataframe/tests/test_dataframe.py::test_aca_meta_infer dask/dataframe/tests/test_dataframe.py::test_aca_split_every dask/dataframe/tests/test_dataframe.py::test_reduction_method dask/dataframe/tests/test_dataframe.py::test_reduction_method_split_every dask/dataframe/tests/test_dataframe.py::test_pipe dask/dataframe/tests/test_dataframe.py::test_gh_517 dask/dataframe/tests/test_dataframe.py::test_drop_axis_1 dask/dataframe/tests/test_dataframe.py::test_gh580 dask/dataframe/tests/test_dataframe.py::test_rename_dict dask/dataframe/tests/test_dataframe.py::test_rename_function dask/dataframe/tests/test_dataframe.py::test_rename_index dask/dataframe/tests/test_dataframe.py::test_to_frame dask/dataframe/tests/test_dataframe.py::test_apply_warns dask/dataframe/tests/test_dataframe.py::test_applymap dask/dataframe/tests/test_dataframe.py::test_abs dask/dataframe/tests/test_dataframe.py::test_round dask/dataframe/tests/test_dataframe.py::test_cov dask/dataframe/tests/test_dataframe.py::test_corr dask/dataframe/tests/test_dataframe.py::test_cov_corr_meta dask/dataframe/tests/test_dataframe.py::test_autocorr dask/dataframe/tests/test_dataframe.py::test_index_time_properties dask/dataframe/tests/test_dataframe.py::test_nlargest_nsmallest dask/dataframe/tests/test_dataframe.py::test_reset_index dask/dataframe/tests/test_dataframe.py::test_dataframe_compute_forward_kwargs dask/dataframe/tests/test_dataframe.py::test_series_iteritems dask/dataframe/tests/test_dataframe.py::test_dataframe_iterrows dask/dataframe/tests/test_dataframe.py::test_dataframe_itertuples dask/dataframe/tests/test_dataframe.py::test_astype dask/dataframe/tests/test_dataframe.py::test_astype_categoricals dask/dataframe/tests/test_dataframe.py::test_astype_categoricals_known dask/dataframe/tests/test_dataframe.py::test_groupby_callable dask/dataframe/tests/test_dataframe.py::test_methods_tokenize_differently dask/dataframe/tests/test_dataframe.py::test_gh_1301 dask/dataframe/tests/test_dataframe.py::test_timeseries_sorted dask/dataframe/tests/test_dataframe.py::test_column_assignment dask/dataframe/tests/test_dataframe.py::test_columns_assignment dask/dataframe/tests/test_dataframe.py::test_attribute_assignment dask/dataframe/tests/test_dataframe.py::test_setitem_triggering_realign dask/dataframe/tests/test_dataframe.py::test_inplace_operators dask/dataframe/tests/test_dataframe.py::test_idxmaxmin[idx0-True] dask/dataframe/tests/test_dataframe.py::test_idxmaxmin[idx0-False] dask/dataframe/tests/test_dataframe.py::test_idxmaxmin[idx1-True] dask/dataframe/tests/test_dataframe.py::test_idxmaxmin[idx1-False] dask/dataframe/tests/test_dataframe.py::test_idxmaxmin_empty_partitions dask/dataframe/tests/test_dataframe.py::test_getitem_meta dask/dataframe/tests/test_dataframe.py::test_getitem_multilevel dask/dataframe/tests/test_dataframe.py::test_diff dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[None-2-1] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[None-2-4] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[None-2-20] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[None-5-1] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[None-5-4] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[None-5-20] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[1-2-1] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[1-2-4] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[1-2-20] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[1-5-1] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[1-5-4] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[1-5-20] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[5-2-1] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[5-2-4] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[5-2-20] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[5-5-1] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[5-5-4] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[5-5-20] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[20-2-1] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[20-2-4] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[20-2-20] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[20-5-1] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[20-5-4] dask/dataframe/tests/test_dataframe.py::test_hash_split_unique[20-5-20] dask/dataframe/tests/test_dataframe.py::test_split_out_drop_duplicates[None] dask/dataframe/tests/test_dataframe.py::test_split_out_drop_duplicates[2] dask/dataframe/tests/test_dataframe.py::test_split_out_value_counts[None] dask/dataframe/tests/test_dataframe.py::test_split_out_value_counts[2] dask/dataframe/tests/test_dataframe.py::test_values dask/dataframe/tests/test_dataframe.py::test_copy dask/dataframe/tests/test_dataframe.py::test_del dask/dataframe/tests/test_dataframe.py::test_memory_usage[True-True] dask/dataframe/tests/test_dataframe.py::test_memory_usage[True-False] dask/dataframe/tests/test_dataframe.py::test_memory_usage[False-True] dask/dataframe/tests/test_dataframe.py::test_memory_usage[False-False] dask/dataframe/tests/test_dataframe.py::test_dataframe_reductions_arithmetic[sum] dask/dataframe/tests/test_dataframe.py::test_dataframe_reductions_arithmetic[mean] dask/dataframe/tests/test_dataframe.py::test_dataframe_reductions_arithmetic[std] dask/dataframe/tests/test_dataframe.py::test_dataframe_reductions_arithmetic[var] dask/dataframe/tests/test_dataframe.py::test_dataframe_reductions_arithmetic[count] dask/dataframe/tests/test_dataframe.py::test_dataframe_reductions_arithmetic[min] dask/dataframe/tests/test_dataframe.py::test_dataframe_reductions_arithmetic[max] dask/dataframe/tests/test_dataframe.py::test_dataframe_reductions_arithmetic[idxmin] dask/dataframe/tests/test_dataframe.py::test_dataframe_reductions_arithmetic[idxmax] dask/dataframe/tests/test_dataframe.py::test_dataframe_reductions_arithmetic[prod] dask/dataframe/tests/test_dataframe.py::test_dataframe_reductions_arithmetic[all] dask/dataframe/tests/test_dataframe.py::test_dataframe_reductions_arithmetic[sem] dask/dataframe/tests/test_dataframe.py::test_to_datetime dask/dataframe/tests/test_dataframe.py::test_to_timedelta dask/dataframe/tests/test_dataframe.py::test_isna[values0] dask/dataframe/tests/test_dataframe.py::test_isna[values1] dask/dataframe/tests/test_dataframe.py::test_slice_on_filtered_boundary[0] dask/dataframe/tests/test_dataframe.py::test_slice_on_filtered_boundary[9] dask/dataframe/tests/test_dataframe.py::test_boundary_slice_nonmonotonic dask/dataframe/tests/test_dataframe.py::test_with_boundary[-1-None-False-False-drop0] dask/dataframe/tests/test_dataframe.py::test_with_boundary[-1-None-False-True-drop1] dask/dataframe/tests/test_dataframe.py::test_with_boundary[None-3-False-False-drop2] dask/dataframe/tests/test_dataframe.py::test_with_boundary[None-3-True-False-drop3] dask/dataframe/tests/test_dataframe.py::test_with_boundary[-0.5-None-False-False-drop4] dask/dataframe/tests/test_dataframe.py::test_with_boundary[-0.5-None-False-True-drop5] dask/dataframe/tests/test_dataframe.py::test_with_boundary[-1.5-None-False-True-drop6] dask/dataframe/tests/test_dataframe.py::test_with_boundary[None-3.5-False-False-drop7] dask/dataframe/tests/test_dataframe.py::test_with_boundary[None-3.5-True-False-drop8] dask/dataframe/tests/test_dataframe.py::test_with_boundary[None-2.5-False-False-drop9] dask/dataframe/tests/test_dataframe.py::test_boundary_slice_same[index0-0-9] dask/dataframe/tests/test_dataframe.py::test_boundary_slice_same[index1--1-None] dask/dataframe/tests/test_dataframe.py::test_boundary_slice_same[index2-None-10] dask/dataframe/tests/test_dataframe.py::test_boundary_slice_same[index3-None-None] dask/dataframe/tests/test_dataframe.py::test_boundary_slice_same[index4--1-None] dask/dataframe/tests/test_dataframe.py::test_boundary_slice_same[index5-None-2] dask/dataframe/tests/test_dataframe.py::test_boundary_slice_same[index6--2-3] dask/dataframe/tests/test_dataframe.py::test_boundary_slice_same[index7-None-None] dask/dataframe/tests/test_dataframe.py::test_boundary_slice_same[index8-left8-None] dask/dataframe/tests/test_dataframe.py::test_boundary_slice_same[index9-None-right9] dask/dataframe/tests/test_dataframe.py::test_boundary_slice_same[index10-left10-None] dask/dataframe/tests/test_dataframe.py::test_boundary_slice_same[index11-None-right11] dask/dataframe/tests/test_dataframe.py::test_better_errors_object_reductions dask/dataframe/tests/test_dataframe.py::test_sample_empty_partitions dask/dataframe/tests/test_dataframe.py::test_coerce dask/dataframe/tests/test_dataframe.py::test_bool dask/dataframe/tests/test_dataframe.py::test_cumulative_multiple_columns dask/dataframe/tests/test_dataframe.py::test_map_partition_array[asarray] dask/dataframe/tests/test_dataframe.py::test_map_partition_array[func1] dask/dataframe/tests/test_dataframe.py::test_mixed_dask_array_operations dask/dataframe/tests/test_dataframe.py::test_mixed_dask_array_operations_errors dask/dataframe/tests/test_dataframe.py::test_mixed_dask_array_multi_dimensional dask/dataframe/tests/test_dataframe.py::test_meta_raises
dask/array/tests/test_array_core.py::test_field_access dask/array/tests/test_array_core.py::test_field_access_with_shape dask/array/tests/test_array_core.py::test_matmul dask/array/tests/test_reductions.py::test_nan_object[nansum] dask/array/tests/test_reductions.py::test_nan_object[sum] dask/array/tests/test_reductions.py::test_nan_object[nanmin] dask/array/tests/test_reductions.py::test_nan_object[min] dask/array/tests/test_reductions.py::test_nan_object[nanmax] dask/array/tests/test_reductions.py::test_nan_object[max] dask/dataframe/tests/test_dataframe.py::test_Dataframe dask/dataframe/tests/test_dataframe.py::test_attributes dask/dataframe/tests/test_dataframe.py::test_timezone_freq[npartitions1] dask/dataframe/tests/test_dataframe.py::test_clip[2-5] dask/dataframe/tests/test_dataframe.py::test_clip[2.5-3.5] dask/dataframe/tests/test_dataframe.py::test_dataframe_picklable dask/dataframe/tests/test_dataframe.py::test_repartition_freq_divisions dask/dataframe/tests/test_dataframe.py::test_repartition_freq_month dask/dataframe/tests/test_dataframe.py::test_select_dtypes[include0-None] dask/dataframe/tests/test_dataframe.py::test_select_dtypes[None-exclude1] dask/dataframe/tests/test_dataframe.py::test_select_dtypes[include2-exclude2] dask/dataframe/tests/test_dataframe.py::test_select_dtypes[include3-None] dask/dataframe/tests/test_dataframe.py::test_to_timestamp dask/dataframe/tests/test_dataframe.py::test_apply dask/dataframe/tests/test_dataframe.py::test_cov_corr_mixed dask/dataframe/tests/test_dataframe.py::test_apply_infer_columns dask/dataframe/tests/test_dataframe.py::test_info dask/dataframe/tests/test_dataframe.py::test_groupby_multilevel_info dask/dataframe/tests/test_dataframe.py::test_categorize_info dask/dataframe/tests/test_dataframe.py::test_idxmaxmin[idx2-True] dask/dataframe/tests/test_dataframe.py::test_idxmaxmin[idx2-False] dask/dataframe/tests/test_dataframe.py::test_shift dask/dataframe/tests/test_dataframe.py::test_shift_with_freq dask/dataframe/tests/test_dataframe.py::test_first_and_last[first] dask/dataframe/tests/test_dataframe.py::test_first_and_last[last] dask/dataframe/tests/test_dataframe.py::test_datetime_loc_open_slicing
dask/array/einsumfuncs.py dask/array/utils.py dask/array/numpy_compat.py dask/array/reductions.py docs/source/array-api.rst dask/array/wrap.py setup.py dask/array/routines.py .gitignore dask/array/core.py .travis.yml dask/array/chunk.py dask/array/__init__.py dask/array/ma.py docs/source/changelog.rst
dask/array/einsumfuncs.py dask/array/utils.py dask/array/numpy_compat.py dask/array/reductions.py docs/source/array-api.rst dask/array/wrap.py setup.py dask/array/routines.py .gitignore dask/array/core.py .travis.yml dask/array/chunk.py dask/array/__init__.py dask/array/ma.py docs/source/changelog.rst