jakirkham: Thanks @jcrist. LGTM.
diff --git a/dask/array/core.py b/dask/array/core.py
index c880fa0cd..2371200c4 100644
--- a/dask/array/core.py
+++ b/dask/array/core.py
@@ -3955,6 +3955,11 @@ def repeat(a, repeats, axis=None):
     if not isinstance(repeats, Integral):
         raise NotImplementedError("Only integer valued repeats supported")
 
+    if -a.ndim <= axis < 0:
+        axis += a.ndim
+    elif not 0 <= axis <= a.ndim - 1:
+        raise ValueError("axis(=%d) out of bounds" % axis)
+
     if repeats == 1:
         return a
 

Dask array repeat mishandles negative axis
When providing `repeat` with a valid negative value for `axis`, it appears to mishandle and raise an `IndexError` instead. An example of the problem is included in the details below along with the environment used to reproduce it.

Note: These all come from `conda-forge` where possible, but it seems `conda` stopped exporting that info. Have raised that problem in issue ( https://github.com/conda/conda/issues/5706 ).

Traceback:

<details>

```python
In [1]: import dask.array as da

In [2]: a = da.ones((4, 6), chunks=(2, 3))

In [3]: da.repeat(a, 2, axis=1)
Out[3]: dask.array<concatenate, shape=(4, 12), dtype=float64, chunksize=(2, 6)>

In [4]: da.repeat(a, 2, axis=-1)
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-4-1ea79a1dccaa> in <module>()
----> 1 da.repeat(a, 2, axis=-1)

/zopt/conda2/envs/daskenv/lib/python2.7/site-packages/dask/array/core.pyc in repeat(a, repeats, axis)
   3971               for s in slices]
   3972 
-> 3973     slabs = [a[slc] for slc in slices]
   3974 
   3975     out = []

/zopt/conda2/envs/daskenv/lib/python2.7/site-packages/dask/array/core.pyc in __getitem__(self, index)
   1233             return self
   1234 
-> 1235         dsk, chunks = slice_array(out, self.name, self.chunks, index)
   1236 
   1237         dsk2 = sharedict.merge(self.dask, (out, dsk))

/zopt/conda2/envs/daskenv/lib/python2.7/site-packages/dask/array/slicing.pyc in slice_array(out_name, in_name, blockdims, index)
    158 
    159     # Pass down to next function
--> 160     dsk_out, bd_out = slice_with_newaxes(out_name, in_name, blockdims, index)
    161 
    162     bd_out = tuple(map(tuple, bd_out))

/zopt/conda2/envs/daskenv/lib/python2.7/site-packages/dask/array/slicing.pyc in slice_with_newaxes(out_name, in_name, blockdims, index)
    180 
    181     # Pass down and do work
--> 182     dsk, blockdims2 = slice_wrap_lists(out_name, in_name, blockdims, index2)
    183 
    184     if where_none:

/zopt/conda2/envs/daskenv/lib/python2.7/site-packages/dask/array/slicing.pyc in slice_wrap_lists(out_name, in_name, blockdims, index)
    220                for i in index)
    221     if not len(blockdims) == len(index):
--> 222         raise IndexError("Too many indices for array")
    223 
    224     for bd_size, i in zip(shape, index):

IndexError: Too many indices for array
```

</details>

<br>
Environment:
<br>
<br>

<details>

```yaml
name: daskenv
channels:
- conda-forge
- defaults
dependencies:
- alabaster=0.7.10=py27_0
- appnope=0.1.0=py27_0
- asn1crypto=0.22.0=py27_0
- babel=2.3.4=py27_0
- backports.lzma=0.0.8=py27_0
- backports.shutil_get_terminal_size=1.0.0=py27_1
- backports_abc=0.5=py27_0
- bkcharts=0.2=py27_0
- blas=1.1=openblas
- bokeh=0.12.6=py27_0
- boto3=1.4.4=py27_0
- botocore=1.5.84=py27_0
- ca-certificates=2017.4.17=0
- certifi=2017.4.17=py27_0
- cffi=1.10.0=py27_0
- chardet=3.0.2=py27_1
- click=6.7=py27_0
- cloudpickle=0.3.1=py27_0
- configparser=3.5.0=py27_0
- coverage=4.4.1=py27_0
- cryptography=1.9=py27_0
- cycler=0.10.0=py27_0
- dask=0.15.1=py27_0
- decorator=4.1.1=py27_0
- distributed=1.18.0=py27_0
- docutils=0.13.1=py27_0
- enum34=1.1.6=py27_1
- flake8=3.3.0=py27_0
- freetype=2.7=1
- functools32=3.2.3.2=py27_1
- futures=3.0.5=py27_0
- graphviz=2.38.0=4
- h5py=2.7.0=np113py27_1
- hdf5=1.8.18=0
- heapdict=1.0.0=py27_0
- idna=2.5=py27_0
- imagesize=0.7.1=py27_0
- ipaddress=1.0.18=py27_0
- ipython=5.4.1=py27_0
- ipython_genutils=0.2.0=py27_0
- jinja2=2.9.5=py27_0
- jmespath=0.9.3=py27_0
- jpeg=9b=0
- libffi=3.2.1=3
- libgfortran=3.0.0=0
- libpng=1.6.28=0
- libtiff=4.0.6=7
- locket=0.2.0=py27_1
- markupsafe=1.0=py27_0
- matplotlib=2.0.2=np113py27_0
- mccabe=0.6.1=py27_0
- msgpack-python=0.4.8=py27_0
- ncurses=5.9=10
- numpy=1.13.1=py27_blas_openblas_200
- numpydoc=0.7.0=py27_0
- openblas=0.2.19=2
- openssl=1.0.2l=0
- pandas=0.20.3=py27_1
- partd=0.3.8=py27_0
- pathlib2=2.3.0=py27_0
- pexpect=4.2.1=py27_0
- pickleshare=0.7.3=py27_0
- pip=9.0.1=py27_0
- prompt_toolkit=1.0.14=py27_0
- psutil=5.2.1=py27_0
- ptyprocess=0.5.2=py27_0
- py=1.4.34=py27_0
- pycodestyle=2.3.1=py27_0
- pycparser=2.18=py27_0
- pyfftw=0.10.4=np113py27_1
- pyflakes=1.5.0=py27_0
- pygments=2.2.0=py27_0
- pyopenssl=16.2.0=py27_0
- pyparsing=2.2.0=py27_0
- pysocks=1.6.7=py27_0
- pytest=3.1.3=py27_0
- pytest-cov=2.5.1=py27_0
- python=2.7.13=1
- python-dateutil=2.6.1=py27_0
- python-graphviz=0.7.1=py27_0
- pytz=2017.2=py27_0
- pyyaml=3.12=py27_1
- readline=6.2=0
- requests=2.18.1=py27_0
- s3fs=0.1.2=py27_0
- s3transfer=0.1.10=py27_1
- scandir=1.5=py27_1
- scipy=0.19.1=np113py27_blas_openblas_200
- setuptools=33.1.1=py27_0
- simplegeneric=0.8.1=py27_0
- singledispatch=3.4.0.3=py27_0
- six=1.10.0=py27_1
- snowballstemmer=1.2.1=py27_0
- sortedcontainers=1.5.3=py27_0
- sphinx=1.6.3=py27_0
- sphinx_rtd_theme=0.2.4=py27_0
- sphinxcontrib-websupport=1.0.1=py27_0
- sqlite=3.13.0=1
- ssl_match_hostname=3.5.0.1=py27_1
- subprocess32=3.2.7=py27_0
- tblib=1.3.2=py27_0
- tk=8.5.19=1
- toolz=0.8.2=py27_0
- tornado=4.5.1=py27_0
- traitlets=4.3.2=py27_0
- typing=3.6.1=py27_0
- urllib3=1.21.1=py27_1
- wcwidth=0.1.7=py27_0
- wheel=0.29.0=py27_0
- xz=5.2.2=0
- yaml=0.1.6=0
- zict=0.1.2=py27_0
- zlib=1.2.11=0
- pip:
  - backports-abc==0.5
  - backports.shutil-get-terminal-size==1.0.0
  - backports.ssl-match-hostname==3.5.0.1
  - dask (/zopt/conda2/envs/daskenv/lib/python2.7/site-packages)==0.15.1
  - ipython-genutils==0.2.0
  - prompt-toolkit==1.0.14
  - sphinx-rtd-theme==0.2.4
```

</details>
diff --git a/dask/array/tests/test_array_core.py b/dask/array/tests/test_array_core.py
index 701d2674a..9a48a0734 100644
--- a/dask/array/tests/test_array_core.py
+++ b/dask/array/tests/test_array_core.py
@@ -2764,7 +2764,7 @@ def test_repeat():
     d = da.from_array(x, chunks=(4, 5, 3))
 
     repeats = [1, 2, 5]
-    axes = [0, 1, 2]
+    axes = [-3, -2, -1, 0, 1, 2]
 
     for r in repeats:
         for a in axes:
@@ -2781,6 +2781,10 @@ def test_repeat():
     with pytest.raises(NotImplementedError):
         da.repeat(d, 2)
 
+    for invalid_axis in [3, -4]:
+        with pytest.raises(ValueError):
+            da.repeat(d, 2, axis=invalid_axis)
+
     x = np.arange(5)
     d = da.arange(5, chunks=(2,))
 

pip install -e .[complete]
parse_log_pytest
pytest
pytest pytest-xdist pytest-mock pytest-asyncio numpy>=1.16.0 pandas>=1.0.0
apt-get update apt-get install -y gcc
3.6
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
aiobotocore==2.1.2
aiohttp==3.8.6
aioitertools==0.11.0
aiosignal==1.2.0
async-timeout==4.0.2
asynctest==0.13.0
attrs @ file:///opt/conda/conda-bld/attrs_1642510447205/work
botocore==1.23.24
certifi==2021.5.30
charset-normalizer==3.0.1
click==8.0.4
cloudpickle==2.2.1
-e git+https://github.com/dask/dask.git@6d58b523a53bee22a76ea9860ca1a131b2f9312d#egg=dask
distributed==1.19.3
execnet==1.9.0
frozenlist==1.2.0
fsspec==2022.1.0
HeapDict==1.0.1
idna==3.10
idna-ssl==1.1.0
importlib-metadata @ file:///tmp/build/80754af9/importlib-metadata_1631916693255/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
jmespath==0.10.0
locket==1.0.0
more-itertools @ file:///tmp/build/80754af9/more-itertools_1637733554872/work
msgpack-python==0.5.6
multidict==5.2.0
numpy==1.19.5
packaging @ file:///tmp/build/80754af9/packaging_1637314298585/work
pandas==1.1.5
partd==1.2.0
pluggy @ file:///tmp/build/80754af9/pluggy_1615976315926/work
psutil==7.0.0
py @ file:///opt/conda/conda-bld/py_1644396412707/work
pyparsing @ file:///tmp/build/80754af9/pyparsing_1635766073266/work
pytest==6.2.4
pytest-asyncio==0.16.0
pytest-mock==3.6.1
pytest-xdist==3.0.2
python-dateutil==2.9.0.post0
pytz==2025.2
s3fs==2022.1.0
six==1.17.0
sortedcontainers==2.4.0
tblib==1.7.0
toml @ file:///tmp/build/80754af9/toml_1616166611790/work
toolz==0.12.0
tornado==6.1
typing_extensions @ file:///opt/conda/conda-bld/typing_extensions_1647553014482/work
urllib3==1.26.20
wrapt==1.16.0
yarl==1.7.2
zict==2.1.0
zipp @ file:///tmp/build/80754af9/zipp_1633618647012/work

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
  - attrs=21.4.0=pyhd3eb1b0_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - importlib-metadata=4.8.1=py36h06a4308_0
  - importlib_metadata=4.8.1=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_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
  - more-itertools=8.12.0=pyhd3eb1b0_0
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=21.3=pyhd3eb1b0_0
  - pip=21.2.2=py36h06a4308_0
  - pluggy=0.13.1=py36h06a4308_0
  - py=1.11.0=pyhd3eb1b0_0
  - pyparsing=3.0.4=pyhd3eb1b0_0
  - pytest=6.2.4=py36h06a4308_2
  - 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
  - toml=0.10.2=pyhd3eb1b0_0
  - typing_extensions=4.1.1=pyh06a4308_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.6.0=pyhd3eb1b0_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - aiobotocore==2.1.2
      - aiohttp==3.8.6
      - aioitertools==0.11.0
      - aiosignal==1.2.0
      - async-timeout==4.0.2
      - asynctest==0.13.0
      - botocore==1.23.24
      - charset-normalizer==3.0.1
      - click==8.0.4
      - cloudpickle==2.2.1
      - distributed==1.19.3
      - execnet==1.9.0
      - frozenlist==1.2.0
      - fsspec==2022.1.0
      - heapdict==1.0.1
      - idna==3.10
      - idna-ssl==1.1.0
      - jmespath==0.10.0
      - locket==1.0.0
      - msgpack-python==0.5.6
      - multidict==5.2.0
      - numpy==1.19.5
      - pandas==1.1.5
      - partd==1.2.0
      - psutil==7.0.0
      - pytest-asyncio==0.16.0
      - pytest-mock==3.6.1
      - pytest-xdist==3.0.2
      - python-dateutil==2.9.0.post0
      - pytz==2025.2
      - s3fs==2022.1.0
      - six==1.17.0
      - sortedcontainers==2.4.0
      - tblib==1.7.0
      - toolz==0.12.0
      - tornado==6.1
      - urllib3==1.26.20
      - wrapt==1.16.0
      - yarl==1.7.2
      - zict==2.1.0
prefix: /opt/conda/envs/dask

dask/array/tests/test_array_core.py::test_repeat
dask/array/tests/test_array_core.py::test_concatenate_unknown_axes 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_array_core.py::test_to_dask_dataframe
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_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_transpose 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_rechunk dask/array/tests/test_array_core.py::test_concatenate_fixlen_strings dask/array/tests/test_array_core.py::test_vstack dask/array/tests/test_array_core.py::test_hstack dask/array/tests/test_array_core.py::test_dstack dask/array/tests/test_array_core.py::test_take dask/array/tests/test_array_core.py::test_compress dask/array/tests/test_array_core.py::test_binops dask/array/tests/test_array_core.py::test_isnull dask/array/tests/test_array_core.py::test_isclose 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_partial_by_order 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_operators dask/array/tests/test_array_core.py::test_operator_dtype_promotion dask/array/tests/test_array_core.py::test_tensordot dask/array/tests/test_array_core.py::test_tensordot_2[0] dask/array/tests/test_array_core.py::test_tensordot_2[1] dask/array/tests/test_array_core.py::test_tensordot_2[axes2] dask/array/tests/test_array_core.py::test_tensordot_2[axes3] dask/array/tests/test_array_core.py::test_tensordot_2[axes4] dask/array/tests/test_array_core.py::test_tensordot_2[axes5] dask/array/tests/test_array_core.py::test_tensordot_2[axes6] dask/array/tests/test_array_core.py::test_dot_method 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_choose dask/array/tests/test_array_core.py::test_where dask/array/tests/test_array_core.py::test_where_bool_optimization dask/array/tests/test_array_core.py::test_where_has_informative_error dask/array/tests/test_array_core.py::test_coarsen dask/array/tests/test_array_core.py::test_coarsen_with_excess dask/array/tests/test_array_core.py::test_insert dask/array/tests/test_array_core.py::test_multi_insert 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_ravel dask/array/tests/test_array_core.py::test_roll[None-3-chunks0] dask/array/tests/test_array_core.py::test_roll[None-3-chunks1] dask/array/tests/test_array_core.py::test_roll[None-7-chunks0] dask/array/tests/test_array_core.py::test_roll[None-7-chunks1] dask/array/tests/test_array_core.py::test_roll[None-9-chunks0] dask/array/tests/test_array_core.py::test_roll[None-9-chunks1] dask/array/tests/test_array_core.py::test_roll[None-shift3-chunks0] dask/array/tests/test_array_core.py::test_roll[None-shift3-chunks1] dask/array/tests/test_array_core.py::test_roll[None-shift4-chunks0] dask/array/tests/test_array_core.py::test_roll[None-shift4-chunks1] dask/array/tests/test_array_core.py::test_roll[0-3-chunks0] dask/array/tests/test_array_core.py::test_roll[0-3-chunks1] dask/array/tests/test_array_core.py::test_roll[0-7-chunks0] dask/array/tests/test_array_core.py::test_roll[0-7-chunks1] dask/array/tests/test_array_core.py::test_roll[0-9-chunks0] dask/array/tests/test_array_core.py::test_roll[0-9-chunks1] dask/array/tests/test_array_core.py::test_roll[0-shift3-chunks0] dask/array/tests/test_array_core.py::test_roll[0-shift3-chunks1] dask/array/tests/test_array_core.py::test_roll[0-shift4-chunks0] dask/array/tests/test_array_core.py::test_roll[0-shift4-chunks1] dask/array/tests/test_array_core.py::test_roll[1-3-chunks0] dask/array/tests/test_array_core.py::test_roll[1-3-chunks1] dask/array/tests/test_array_core.py::test_roll[1-7-chunks0] dask/array/tests/test_array_core.py::test_roll[1-7-chunks1] dask/array/tests/test_array_core.py::test_roll[1-9-chunks0] dask/array/tests/test_array_core.py::test_roll[1-9-chunks1] dask/array/tests/test_array_core.py::test_roll[1-shift3-chunks0] dask/array/tests/test_array_core.py::test_roll[1-shift3-chunks1] dask/array/tests/test_array_core.py::test_roll[1-shift4-chunks0] dask/array/tests/test_array_core.py::test_roll[1-shift4-chunks1] dask/array/tests/test_array_core.py::test_roll[-1-3-chunks0] dask/array/tests/test_array_core.py::test_roll[-1-3-chunks1] dask/array/tests/test_array_core.py::test_roll[-1-7-chunks0] dask/array/tests/test_array_core.py::test_roll[-1-7-chunks1] dask/array/tests/test_array_core.py::test_roll[-1-9-chunks0] dask/array/tests/test_array_core.py::test_roll[-1-9-chunks1] dask/array/tests/test_array_core.py::test_roll[-1-shift3-chunks0] dask/array/tests/test_array_core.py::test_roll[-1-shift3-chunks1] dask/array/tests/test_array_core.py::test_roll[-1-shift4-chunks0] dask/array/tests/test_array_core.py::test_roll[-1-shift4-chunks1] dask/array/tests/test_array_core.py::test_roll[axis4-3-chunks0] dask/array/tests/test_array_core.py::test_roll[axis4-3-chunks1] dask/array/tests/test_array_core.py::test_roll[axis4-7-chunks0] dask/array/tests/test_array_core.py::test_roll[axis4-7-chunks1] dask/array/tests/test_array_core.py::test_roll[axis4-9-chunks0] dask/array/tests/test_array_core.py::test_roll[axis4-9-chunks1] dask/array/tests/test_array_core.py::test_roll[axis4-shift3-chunks0] dask/array/tests/test_array_core.py::test_roll[axis4-shift3-chunks1] dask/array/tests/test_array_core.py::test_roll[axis4-shift4-chunks0] dask/array/tests/test_array_core.py::test_roll[axis4-shift4-chunks1] dask/array/tests/test_array_core.py::test_roll[axis5-3-chunks0] dask/array/tests/test_array_core.py::test_roll[axis5-3-chunks1] dask/array/tests/test_array_core.py::test_roll[axis5-7-chunks0] dask/array/tests/test_array_core.py::test_roll[axis5-7-chunks1] dask/array/tests/test_array_core.py::test_roll[axis5-9-chunks0] dask/array/tests/test_array_core.py::test_roll[axis5-9-chunks1] dask/array/tests/test_array_core.py::test_roll[axis5-shift3-chunks0] dask/array/tests/test_array_core.py::test_roll[axis5-shift3-chunks1] dask/array/tests/test_array_core.py::test_roll[axis5-shift4-chunks0] dask/array/tests/test_array_core.py::test_roll[axis5-shift4-chunks1] 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_fromfunction 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_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_np_array_with_zero_dimensions dask/array/tests/test_array_core.py::test_unique 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_squeeze 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_no_asarray dask/array/tests/test_array_core.py::test_from_array_getitem 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_topk dask/array/tests/test_array_core.py::test_topk_k_bigger_than_chunk dask/array/tests/test_array_core.py::test_bincount dask/array/tests/test_array_core.py::test_bincount_with_weights dask/array/tests/test_array_core.py::test_bincount_raises_informative_error_on_missing_minlength_kwarg dask/array/tests/test_array_core.py::test_digitize dask/array/tests/test_array_core.py::test_histogram dask/array/tests/test_array_core.py::test_histogram_alternative_bins_range dask/array/tests/test_array_core.py::test_histogram_return_type dask/array/tests/test_array_core.py::test_histogram_extra_args_and_shapes 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_take_dask_from_numpy 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_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_array dask/array/tests/test_array_core.py::test_cov dask/array/tests/test_array_core.py::test_corrcoef 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_optimizes dask/array/tests/test_array_core.py::test_cumulative dask/array/tests/test_array_core.py::test_eye dask/array/tests/test_array_core.py::test_diag dask/array/tests/test_array_core.py::test_tril_triu dask/array/tests/test_array_core.py::test_tril_triu_errors 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_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_from_array_names dask/array/tests/test_array_core.py::test_array_picklable dask/array/tests/test_array_core.py::test_swapaxes 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_round dask/array/tests/test_array_core.py::test_tile[0-shape0-chunks0] dask/array/tests/test_array_core.py::test_tile[0-shape1-chunks1] dask/array/tests/test_array_core.py::test_tile[1-shape0-chunks0] dask/array/tests/test_array_core.py::test_tile[1-shape1-chunks1] dask/array/tests/test_array_core.py::test_tile[2-shape0-chunks0] dask/array/tests/test_array_core.py::test_tile[2-shape1-chunks1] dask/array/tests/test_array_core.py::test_tile[3-shape0-chunks0] dask/array/tests/test_array_core.py::test_tile[3-shape1-chunks1] dask/array/tests/test_array_core.py::test_tile[5-shape0-chunks0] dask/array/tests/test_array_core.py::test_tile[5-shape1-chunks1] dask/array/tests/test_array_core.py::test_tile_neg_reps[-1-shape0-chunks0] dask/array/tests/test_array_core.py::test_tile_neg_reps[-1-shape1-chunks1] dask/array/tests/test_array_core.py::test_tile_neg_reps[-5-shape0-chunks0] dask/array/tests/test_array_core.py::test_tile_neg_reps[-5-shape1-chunks1] dask/array/tests/test_array_core.py::test_tile_array_reps[reps0-shape0-chunks0] dask/array/tests/test_array_core.py::test_tile_array_reps[reps0-shape1-chunks1] dask/array/tests/test_array_core.py::test_tile_array_reps[reps1-shape0-chunks0] dask/array/tests/test_array_core.py::test_tile_array_reps[reps1-shape1-chunks1] 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_fast_from_array dask/array/tests/test_array_core.py::test_random_from_array 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_transpose_negative_axes 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/core.py
dask/array/core.py