ó
¦–Õ\c        
   @   s’  d  d l  Z  d  d l m Z d  d l Z d  d l m Z e j d ƒ Z d  d l Z d  d l	 j
 Z d  d l m Z m Z m Z m Z m Z m Z m Z m Z d  d l m Z m Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d e' f d „  ƒ  YZ( e j) j* d d ƒ d „  ƒ Z+ d „  Z, d „  Z- d „  Z. d „  Z/ d „  Z0 d  „  Z1 d! „  Z2 d" „  Z3 d# „  Z4 d$ „  Z5 d% „  Z6 d& „  Z7 d' „  Z8 d( „  Z9 e j) j: d) d d* d+ d, g ƒ e j) j: d- d d^ d_ d` da g ƒ d/ „  ƒ ƒ Z< e j) j: d0 d, d+ d* g ƒ d1 „  ƒ Z= e j) j: d0 d, d+ d* d2 d. g ƒ d3 „  ƒ Z> e j) j: d0 d+ d2 g ƒ d4 „  ƒ Z? e j) j: d0 d+ d2 g ƒ d5 „  ƒ Z@ e j) j: d6 d7 d8 d9 d: d; d< d= d> g ƒ d? „  ƒ ZA d@ „  ZB dA „  ZC dB „  ZD e j) jE dC „  ƒ ZF e j) j: dD db dc dd g ƒ e j) j: dE eG f d eG f eG d f d eG d f g ƒ dF „  ƒ ƒ ZH eG eI d+ ƒ dG d, dH d  eI dH d ƒ d g ZJ dI „  ZK e j) jL dJ „  ƒ ZM dK „  ZN dL „  ZO dM „  ZP dN „  ZQ dO „  ZR dP „  ZS e j) j: dQ de e jT d. dR ƒ dS d, e jT d. ƒ f dG e jT d. ƒ f g f df e jT dT ƒ d+ dG e jT dS ƒ d+ f d, e jT dS ƒ d+ f g f dg dR d+ d* dR g d, d. g f dG d+ d* g f d, d. g f g f g ƒ dU „  ƒ ZU dV „  ZV e j) j: dW dh di g ƒ dX „  ƒ ZW dY „  ZX e j) j: dZ eY eZ g ƒ e j) j: d[ eY eZ g ƒ e j) j: d\ eY eZ g ƒ d] „  ƒ ƒ ƒ Z[ d S(j   iÿÿÿÿN(   t   getitem(   t   merget   numpy(   t   _sanitize_index_elementt	   _slice_1dt   new_blockdimt   sanitize_indext   slice_arrayt   taket   normalize_indext   slicing_plan(   t	   assert_eqt	   same_keysc          C   så  i t  d d d ƒ d 6t  d  d  d  ƒ d 6t  d d d ƒ d 6}  t d d g d t  d d d  ƒ ƒ } |  | k sv t ‚ i t  d	 d
 d ƒ d 6t  d d d ƒ d 6t  d d d ƒ d 6t  d	 d d ƒ d 6t  d d d ƒ d 6}  t d d g d t  d d d ƒ ƒ } |  | k st ‚ i t  d	 d d ƒ d 6t  d d d ƒ d 6t  d d d ƒ d 6t  d	 d d ƒ d 6t  d d d ƒ d 6}  t d d g d t  d d  d ƒ ƒ } |  | k s®t ‚ i t  d d d ƒ d 6t  d d d ƒ d 6t  d d d ƒ d 6t  d d d ƒ d 6t  d d d ƒ d 6}  t d d g d t  d  d  d ƒ ƒ } |  | k sJt ‚ i t  d d d ƒ d 6t  d d d ƒ d 6t  d d d ƒ d 6t  d	 d d ƒ d 6t  d d d ƒ d 6}  t d d g d t  d  d  d ƒ ƒ } |  | k sæt ‚ i t  d d d ƒ d 6t  d	 d d ƒ d 6t  d d d ƒ d 6t  d d d ƒ d 6t  d d d ƒ d 6}  t d d g d t  d  d  d ƒ ƒ } |  | k s‚t ‚ i t  d d d ƒ d 6t  d d d ƒ d 6t  d	 d d ƒ d 6t  d d d ƒ d 6}  t d d g d t  d d  d ƒ ƒ } |  | k st ‚ i t  d d
 d ƒ d 6}  t d d d d d d g t  d d d ƒ ƒ } |  | k sct ‚ i t  d d d ƒ d 6t  d d d ƒ d 6}  t d d d d d d g t  d d d ƒ ƒ } |  | k sÎt ‚ i  }  t d d d d d d g t  d ƒ ƒ } | st ‚ i t  d d d ƒ d 6t  d	 d d ƒ d 6t  d d d ƒ d 6t  d	 d d ƒ d 6t  d d d ƒ d 6}  t d d d d d d g t  d d  d ƒ ƒ } |  | k s«t ‚ i t  d d d ƒ d 6t  d d d ƒ d 6t  d d d ƒ d 6t  d d  d ƒ d 6t  d d! d ƒ d 6}  t d" d d d# d$ d% g t  d  d  d ƒ ƒ } |  | k sOt ‚ i t  d d& d ƒ d 6t  d d d ƒ d 6t  d d  d ƒ d 6t  d d! d ƒ d 6}  t d" d d d# d$ d% g t  d  d# d ƒ ƒ } |  | k sàt ‚ i t  d d& d ƒ d 6t  d d d ƒ d 6t  d d  d ƒ d 6t  d d! d ƒ d 6}  t d" d d d# d$ d% g t  d d# d ƒ ƒ } |  | k sqt ‚ i t  d' d( d ƒ d 6}  |  j d) „  t d d' ƒ Dƒ ƒ t d* d( g d' t  d' d  d  ƒ ƒ } |  | k sát ‚ d  S(+   Ni
   i   i   i    i   id   i   i3   iþÿÿÿiøÿÿÿiýÿÿÿiÿÿÿÿiëÿÿÿi   i   i   i   if   iüÿÿÿiûÿÿÿiùÿÿÿièÿÿÿiúÿÿÿis   i   iO   i\   iìÿÿÿic   i   iäÿÿÿiòÿÿÿiêÿÿÿih   i   i   i   iðÿÿÿiè  i Êš;c         S   s%   i  |  ] } t  d  d  d  ƒ | “ q S(   N(   t   slicet   None(   t   .0t   ii(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pys
   <dictcomp>ˆ   s   	 I ¥Ôè   (   R   R   R   t   AssertionErrort   updatet   range(   t   expectedt   result(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_slice_1d   s¬    ?%%%%%%%--'---- 
c           C   sW   t  d d d d g d ƒ i d d 6k s. t ‚ t  d d d ƒ i d d 6k sS t ‚ d  S(   Ni   i   i
   i    i   i   (   i   i   i   i   i   i   (   R   R   (    (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt&   test_slice_singleton_value_on_boundary   s    .c          C   sØ  i t  d t d d d ƒ f f d 6t  d t d d d ƒ f f d 6t  d t d d d ƒ f f d 6t  d t d d d ƒ f f d 6}  t d d d g d	 g t d d  d ƒ g ƒ \ } } |  | k sÈ t ‚ i t  d t d d d ƒ f f d 6t  d t d d d ƒ f f d 6t  d t d d d ƒ f f d 6}  t d d d g d	 g t d
 d  d ƒ g ƒ \ } } |  | k sqt ‚ i t  d t d d d ƒ f f d 6t  d t d d d ƒ f f d 6t  d t d d d ƒ f f d 6t  d t d d d ƒ f f d  6}  t d d d" g t d d  d ƒ f ƒ \ } } |  | k s2t ‚ i t  d# t d d d ƒ f f d$ 6t  d% t d d d ƒ f f d& 6t  d' t d d d ƒ f f d( 6}  t d d d* g t d
 d  d ƒ f ƒ \ } } |  | k sÔt ‚ d  S(+   Nt   xi    i   i   i   t   yi   i   i   i   (   R   i    (   R   i    (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i    (   R   i   (   R   i   (   R   i   (   R   i   (   R   i    (   R   i    (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   i   (   i   i   i   i   (   R   i   (   R   i    (   R   i   (   R   i   (   R   i   (   R   i   (   i   (   i   i   i   i   (   R    R   R   R   R   (   R   R   t   chunks(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_slice_array_1d•   s,    ""4""4""-""-c       	   C   s®  i t  d
 t d d d ƒ t d d d ƒ f f d 6t  d t d d d ƒ t d  d  d  ƒ f f d 6t  d t d d d ƒ t d  d  d  ƒ f f d 6}  t d d d g d d d	 g g t d d  d ƒ t d d  d ƒ g ƒ \ } } |  | k sí t ‚ i t  d d	 t d d d ƒ f f d 6t  d d	 t d  d  d  ƒ f f d 6t  d d	 t d  d  d  ƒ f f d 6}  t d d d g d d d	 g f d	 t d d  d ƒ g ƒ \ } } |  | k sªt ‚ d  S(   NR   i    i   i   i   i
   i   R   i   (   R   i    i    (   R   i    i    (   R   i    i   (   R   i    i   (   R   i    i   (   R   i    i   (   R   i    i    (   R   i    (   R   i    i   (   R   i   (   R   i    i   (   R   i   (   R    R   R   R   R   (   R   R   R   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_slice_array_2d¹   s$    	((+-	!c       
   C   sË   i d	 d
 6}  t  d d d g g t d  d  d  ƒ f ƒ \ } } |  | k sO t ‚ i d d 6d d 6d d 6}  t  d d d g t d  d  d  ƒ t d  d  d  ƒ t d  d  d  ƒ f ƒ \ } } |  | k sÇ t ‚ d  S(   Nt   bari    t   fooid   i   i   iè  i'  (   R   i    (   R   i    (   R   i    (   R   i    (   R   i   (   R   i   (   R   i   (   R   i   (   id   iè  i'  (   R   R   R   R   (   R   R   R   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_slice_optimizationsÕ   s    0

c          C   sz   t  d d d d g d d g f t d d ƒ d f ƒ \ }  } i t d t d  d  d  ƒ d f f d	 6} | |  k sv t ‚ d  S(
   NR   R   i   i    i   i   i   (   R   i    i   (   R   i    (   R   R   R    R   R   (   R   R   R   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt#   test_slicing_with_singleton_indicesæ   s    <(c       
   C   sä   t  d d d d g d d g f t d d ƒ d  t d  d  d  ƒ f ƒ \ }  } i t d t d d d ƒ d  t d  d  d  ƒ f f d 6t d	 t d d d ƒ d  t d  d  d  ƒ f f d
 6} | |  k sÅ t ‚ | d d d f k sà t ‚ d  S(   NR   R   i   i    i   i   (   R   i    i    (   R   i    i    i    (   R   i    i   (   R   i    i    i   (   i   (   i   (   i   i   (   R   R   R   R    R   (   R   R   R   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_slicing_with_newaxisî   s    -+.c          C   sm  t  d d d g d d d d g d d	 ƒ\ }  } i t d t j d d g ƒ f f d 6t d t j d g ƒ f f d 6t d t j d g ƒ f f d 6} t j j t | j ƒ  ƒ t | j ƒ  ƒ ƒ |  d k sÓ t ‚ t  d d d d g d d d d g d d	 ƒ\ }  } i t d t j d d g ƒ t	 d  d  d  ƒ f f d 6t d t j d d g ƒ t	 d  d  d  ƒ f f d 6t d t j d g ƒ t	 d  d  d  ƒ f f d 6t d t j d g ƒ t	 d  d  d  ƒ f f d 6t d t j d g ƒ t	 d  d  d  ƒ f f d  6t d! t j d g ƒ t	 d  d  d  ƒ f f d" 6} t j j t | j ƒ  ƒ t | j ƒ  ƒ ƒ |  d# d$ f k sit ‚ d  S(%   NR   R   i   i   i   i/   i   t   axisi    i   i   (   i   i   i   i   (   R   i    (   R   i    (   R   i   (   R   i   (   R   i    (   R   i   (   i   i   i   (   (   i   i   i   (   i   i   i   i   (   i   i   (   R   i    i    (   R   i    i    (   R   i    i   (   R   i    i   (   R   i   i    (   R   i   i    (   R   i   i   (   R   i   i   (   R   i    i    (   R   i   i    (   R   i    i   (   R   i   i   (   i   i   i   (   i   i   (   R   R    t   npt   arrayt   testingt   assert_equalt   sortedt   itemsR   R   R   (   R   t   dskR   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt	   test_takeü   s     0%"+!41...1+c          C   s*  t  d d d g d d d d g d d	 ƒ\ }  } i t d d d d g f f d 6t d d g f f d 6} t j j | | ƒ |  d k s t ‚ t  d d d d g d d d d g d d ƒ\ }  } t t d „  t d ƒ Dƒ ƒ t d „  t d ƒ Dƒ ƒ ƒ } t j j | | ƒ |  d d f k s&t ‚ d  S(   NR   R   i   i   i   i   i/   R"   i    i   i   i%   c         s   sQ   |  ]G } d  | d f t  d | d f t d d d ƒ d d d g f f f Vq d S(   R   i    R   i   i   i   N(   R    R   R   (   R   t   i(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pys	   <genexpr>  s   i   c         s   sK   |  ]A } d  | d f t  d | d f t d d d ƒ d g f f f Vq d S(   R   i   R   i   N(   R    R   R   (   R   R+   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pys	   <genexpr>  s   (   i   i   i   i   (   R   i    (   R   i    (   R   i   (   R   i   (   i   i   (   (   i   i   (   i   i   i   i   (   i   i   (   i   i   i   i   (   i   i   (	   R   R    R#   R%   R&   R   R   t   dictR   (   R   R)   R   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_take_sorted  s    03	c       	   C   s  t  d d d d g d d g f d t j d d d g ƒ f ƒ \ }  } | d
 k sW t ‚ t  d d d d g d d g f t d d ƒ t j d d d g ƒ f ƒ \ }  } | d d f k s½ t ‚ t  d d d d g d d g f t d d ƒ d f ƒ \ }  } | d k st ‚ d  S(   NR   R   i   i   i   i    i   i   (   i   (   (   i   (   i   i   (   i   (   i   i   (   (   i   i   (   R   R#   R$   R   R   (   R   R   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_slicing_chunks"  s    '0c       
   C   sD  t  d d d d	 f t j d d d g ƒ t d  d  d  ƒ f ƒ \ }  } t  d d d
 d f t j d d d g ƒ t d  d  d  ƒ f ƒ \ } } | | k sœ t ‚ t j j |  | ƒ t t	 t	 t t t t t t t	 g
 } | t d  d  d  ƒ f } t
 | d ƒ } t  d d d d f | ƒ \ } } | | k s-t ‚ t j j |  | ƒ d  S(   NR   R   i   i   i   i	   i
   (   i   i   i   i   (   i   i   i   i   (   i   i   i   i   (   i   i   i   i   (   i
   i
   (   i   i   i   i   (   i   i   i   i   (   R   R#   R$   R   R   R   R%   R&   t   Falset   TrueR	   (   t   at   bd1t   bt   bd2R+   t   indext   ct   bd3(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_slicing_with_numpy_arrays0  s    33!c          C   sV   t  j d
 d d d f ƒ}  |  d d … d d	 … f } | j d d f k sR t ‚ d  S(   Ni   i   R   i   i   i   i   iüÿÿÿiþÿÿÿ(   i   i   (   i   i   i   i   (   i   i   i   i   (   i   i   (   i   i   (   t   dat   onesR   R   (   t   ot   t(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_slicing_and_chunksB  s    c          C   s:  t  j d d d d f ƒ}  |  |  t d  ƒ k s7 t ‚ |  |  k sJ t ‚ |  |  d  d  d  … k si t ‚ |  |  d k s t ‚ |  |  d	 k s• t ‚ |  |  d	 d  d  … k s´ t ‚ |  |  d  d  d
 … k sÓ t ‚ |  |  d	 t |  ƒ !k sò t ‚ |  |  d	 d  d
 … k st ‚ |  |  d	 t |  ƒ d
 … k s6t ‚ d  S(   Ni   i   R   i   i   i   i   .i    i   (   i   i   (   i   i   i   i   (   i   i   i   i   (   R9   R:   R   R   R   t   len(   R1   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_slicing_identitiesH  s    c          C   sC   t  j d d d ƒd  j ƒ  }  t j d ƒ d  } t |  | ƒ d  S(   Ni
   R   i    (   i
   (   R9   R:   t   computeR#   R   (   R1   R3   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_slice_stop_0W  s    c          C   sF   t  j d d d d ƒ }  |  d d g d  } t | t j d	 ƒ ƒ d  S(
   Nt   shapei   R   i   i   i   (   i   i   (   i   i   (   i   i   i   (   R9   t   zerosR   R   R#   (   R   R   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_slice_list_then_None^  s    t
   ReturnItemc           B   s   e  Z d  „  Z RS(   c         C   s   | S(   N(    (   t   selft   key(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   __getitem__g  s    (   t   __name__t
   __module__RH   (    (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyRE   e  s   t   reasons   really long testc    	      C   sw  t  j j d d d ƒ }  t j |  d d ƒ} t ƒ  } d d | | d  d d	 g d d	 d
 g d d
 g | d  d  d … d  | d  g  g } x%| D]} t |  | | | ƒ | f xù | D]ñ } t |  | d  d  … | f | | d  d  … | f ƒ | | f f t |  d  d  … | f | | d  d  … | f | ƒ | | f f xf | D]^ } t |  d | f d  d  … | f | | d | f d  d  … | f | ƒ | | | f f qFWq· Wq W| | d  t  j d ƒ d d	 d d d g t  j d ƒ d k  g } d d d | | d  | d
 d !d
 d g g  | d  g	 } xH | D]@ } x7 | D]/ } t |  | | | | | ƒ | | f f q<Wq/Wd  S(   Ni   i   i   R   i   i    iþÿÿÿi   i   i   i   iÿÿÿÿ.(   i   i   i   (	   R#   t   randomt   randR9   t
   from_arrayRE   R   R   t   arange(	   R   R1   t   It   indexersR+   t   jt   kt   first_indexerst   second_indexers(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_slicing_exhaustivelyk  s     	RAAdA7c          C   s@  t  j d d d ƒ}  |  d  d d … } |  j d f | j | j d f k sS t ‚ |  j d f | j | j d f k s~ t ‚ t | t j d ƒ d  d d … ƒ | j d k s¶ t ‚ | j | j d f t |  j d f t	 d d d ƒ f f k sù t ‚ | j | j d f t |  j d f t	 d d	 d ƒ f f k s<t ‚ d  S(   Ni
   R   i   i   iÿÿÿÿi    i   iúÿÿÿiüÿÿÿ(   i   i   (   (   i   i   (
   R9   RO   t   namet   daskR   R   R#   R   R    R   (   R   R   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt*   test_slicing_with_negative_step_flops_keysƒ  s    ++#"!"c          C   sI   t  j d d d d d ƒ}  |  d  } t | t j d	 d d ƒd  ƒ d  S(
   Ni   R   i   t   dtypet   i4i    (   i   i   (   i   i   (   i   i   (   R9   R:   R   R#   (   R   R   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_empty_slice“  s    
c          C   s„   t  j j d d d ƒ }  t j |  d d	 ƒ} t |  d  d  … d d d g f d d g | d  d  … d d d g f d d g ƒ d  S(
   Ni   i   i   R   i   i    i   i   (   i   i   i   (   R#   RL   RM   R9   RN   R   (   R   R1   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_multiple_list_slicingš  s    c       	   C   sß   t  j t ƒ  t j t d ƒ ƒ t g Wd  QXt  j t ƒ % t j t d ƒ ƒ t t t g Wd  QXt j	 d ƒ }  t t t t t g } t
 t j |  ƒ | |  | ƒ t g } t
 t j d g ƒ | t j	 d ƒ | ƒ d  S(   Ni   i   i    i   (   t   pytestt   raisest
   IndexErrorR9   t   asarrayR   R0   R/   R#   RO   R   (   R   t   ind(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_boolean_list_slicing   s     &	c       
   C   s  t  j t ƒ ( t j t d ƒ ƒ t j t g ƒ Wd  QXt  j t ƒ . t j t d ƒ ƒ t j t	 t	 t	 g ƒ Wd  QXt j
 d ƒ }  t j t t	 t	 t	 t g ƒ } t t j |  ƒ | |  | ƒ t j t g ƒ } t t j d g ƒ | t j
 d ƒ | ƒ d  S(   Ni   i   i    i   (   R^   R_   R`   R9   Ra   R   R#   R$   R0   R/   RO   R   (   R   Rb   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt    test_boolean_numpy_array_slicing­  s    )/c          C   së   t  j d d d ƒ}  t j |  d d ƒ} t | g  d  d … d  d … f |  g  d  d … d  d … f ƒ t | d  d … g  d  d … f |  d  d … g  d  d … f ƒ t | d  d … d  d … g  f |  d  d … d  d … g  f ƒ d  S(   Ni   RZ   R[   R   i   i   (   i   i   i   (   R#   R:   R9   RN   R   (   R   t   dx(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_empty_listº  s
    ??c           C   s5   t  j d d d ƒd  d  d … j d k s1 t ‚ d  S(   Ni   R   i   i   i   (   i   i   i   i   (   (   i   i   i   i   (   R9   R:   R   R   (    (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_uneven_chunksÃ  s    c           C   sF   t  d d d d d g t d d  d ƒ ƒ d d d d g k sB t ‚ d  S(   Ni   i   i    i   i   (   R   R   R   R   (    (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_new_blockdimÇ  s    c          C   sÎ  t  j d ƒ j d ƒ }  t j |  d d ƒ} t | d | d ƒ sJ t ‚ t | d  d  … d d d g f | d  d  … d d d g f ƒ s‘ t ‚ t | d  d  … d d d	 … f | d  d  … d d d	 … f ƒ sØ t ‚ t | d | d ƒ sõ t ‚ t | d
 | d
 ƒ st ‚ t | d d d g | d d d g ƒ sAt ‚ t | d d !| ƒ s^t ‚ t | d d !| d  ƒ s~t ‚ t | d	 | d ƒ s›t ‚ t | d d  d	 … | d d d	 … ƒ sÊt ‚ d  S(   Nid   i
   R   i   i    i   i   i   iÿÿÿÿ.iõÿÿÿi   i÷ÿÿÿi	   (   i
   i
   (   i   i   (   i    .(   i    .(   R#   RO   t   reshapeR9   RN   R   R   (   R   R1   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_slicing_consistent_namesË  s    GG/ c          C   sŸ   t  j d d d ƒ}  t |  d |  d  ƒ s2 t ‚ t |  d |  d d !ƒ sR t ‚ t |  d |  d d d … ƒ sx t ‚ t |  |  d d d … ƒ s› t ‚ d  S(   Ni
   R   i   i    i   (   i   (   R9   RC   R   R   (   R   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt1   test_slicing_consistent_names_after_normalizationÚ  s
     &c           C   s$   t  j t ƒ  t d ƒ Wd  QXd  S(   Ns   Hello!(   R^   R_   t	   TypeErrorR   (    (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_sanitize_index_elementâ  s    c          C   s‰   t  j d ƒ }  t  j t ƒ  t d ƒ Wd  QXt j j t |  j d d d g ƒ ƒ d d d g ƒ t j j t d ƒ d d d g ƒ d  S(   Nt   pandass   Hello!i   i   i   (   i   i   i   (	   R^   t   importorskipR_   Rl   R   R#   R%   R&   t   Series(   t   pd(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_sanitize_indexç  s
    4c          C   s=  d d f }  t  d d ƒ t  d  ƒ f } t d d |  | ƒ \ } } i t d t  d d d ƒ t  d  ƒ f f d 6t d t  d
 d d ƒ t  d  ƒ f f d 6} | | k sª t ‚ | d d f k sÂ t ‚ d  }  t  d d ƒ t  d d ƒ f } t d d |  | ƒ \ } } i t d! t  d d d ƒ t  d d d ƒ f f d" 6t d# t  d d d ƒ t  d  ƒ f f d$ 6t d% t  d d d ƒ t  d
 d d ƒ f f d& 6t d' t  d
 d d ƒ t  d d d ƒ f f d( 6t d) t  d
 d d ƒ t  d  ƒ f f d* 6t d+ t  d
 d d ƒ t  d
 d d ƒ f f d, 6} | | k s!t ‚ | d- d. f k s9t ‚ d  S(/   Ni   i   i   id   ið   i  t   int   outi   i    i   i   i   i   i   i´   iæ   i   i   i   i   (   i   i   i   i   i   i   i   i   i   i   i   (   id   (   Rt   i   i    (   Rs   i    i    (   Rt   i   i    (   Rs   i   i    (   i   i   (   id   (   i   i   i   i   i   i   i   i   i   i   i   (   (   i   i   i   i   i   i   i   i   i   i   i   (   (   i   i   i   i   i   i   i   i   i   i   i   (   i   i   i   i   i   i   i   i   i   i   i   (   Rt   i   i   (   Rs   i    i    (   Rt   i   i   (   Rs   i    i   (   Rt   i   i   (   Rs   i    i   (   Rt   i   i   (   Rs   i   i    (   Rt   i   i   (   Rs   i   i   (   Rt   i   i   (   Rs   i   i   (   i   i   (   i   i   i   (   R   R   R   R    R   (   t	   blockdimsR5   t   dsk_outt   bd_outt   sol(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_uneven_blockdimsð  s$    ++1(..(1c          C   sµ   t  j d d d ƒ}  t j t ƒ  |  d Wd  QXt j t ƒ  |  d g Wd  QXt j t ƒ  |  d Wd  QXt j t ƒ  |  d g Wd  QXt j t ƒ  |  d Wd  QXd  S(	   Ni   R   i   i   iöÿÿÿi    (   i   (   i    i    (   R9   R:   R^   R_   R`   (   R   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_oob_check  s    t
   idx_chunksi   i   i   t   x_chunksi   c         C   s  t  j d d d d d g d d d d	 d
 g d d d d d g g ƒ } t  j d d d g ƒ } t  j d d d g d	 d d g d d d g g ƒ } |  d  k	 r´ t j | d |  ƒ} n  | d  k	 rØ t j | d | ƒ} n  t | d  d  … | f | ƒ t | j | d  d  … f | j ƒ d  S(   Ni
   i   i   i(   i2   i<   iF   iP   iZ   id   in   ix   i‚   iŒ   i–   i   i    i   R   (   R#   R$   R   R9   RN   R   t   T(   R|   R{   R   t   idxt   expect(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_index_with_int_dask_array  s    R   c         C   s    t  j d d d g d d d g g d |  ƒ} t  j d d d ƒ} t | | d  d  … f | d d  d  … f ƒ t | d  d  … | f | d  d  … d f ƒ d  S(	   Ni
   i   i   i(   i2   i<   R   i   (   R9   RN   R   (   R   R   t   idx0(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt!   test_index_with_int_dask_array_0d,  s
    -i   c         C   s}   t  j d d d |  ƒ} t | | j ƒ  t j d d d d g ƒ ƒ t  j d d |  ƒ} t | | j ƒ  t j g  ƒ ƒ d  S(   Niþÿÿÿi   R   iÿÿÿÿi   i   i   (   R9   RO   R   t   nonzeroR#   R$   RC   (   R   R1   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt(   test_index_with_int_dask_array_nanchunks6  s    ,c         C   sT   t  j d d |  ƒ} t  j d d g d d ƒ} t | | t j d d g ƒ ƒ d  S(   Ni   R   iÿÿÿÿiüÿÿÿi   i   i    (   R9   RO   RN   R   R#   R$   (   R   R1   R~   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt'   test_index_with_int_dask_array_negindex@  s    c         C   s‘   t  j d d |  ƒ} t  j d g d d ƒ} t j t ƒ  | | j ƒ  Wd  QXt  j d g d d ƒ} t j t ƒ  | | j ƒ  Wd  QXd  S(   Ni   R   i   iûÿÿÿ(   R9   RO   RN   R^   R_   R`   R@   (   R   R1   R~   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt)   test_index_with_int_dask_array_indexerrorG  s    RZ   t   int8t   int16t   int32t   int64t   uint8t   uint16t   uint32t   uint64c         C   sr   t  j d d d d g d d ƒ} t  j t j d d g ƒ j |  ƒ d d ƒ} t | | t j d d g ƒ ƒ d  S(	   Ni
   i   i   i(   R   iÿÿÿÿi   i   (   R9   RN   R#   R$   t   astypeR   (   RZ   R1   R~   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt%   test_index_with_int_dask_array_dtypesR  s    !-c          C   sz   d „  }  t  j d d d ƒ} t  j i |  f d 6d d d d d	 t j ƒ} | | } t j t ƒ  | j ƒ  Wd
 QXd
 S(   sX    Test that when the indices are a dask array
    they are not accidentally computed
    c           S   s   t  ƒ  ‚ d  S(   N(   t   NotImplementedError(    (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   crash^  s    i   R   iÿÿÿÿR   i    RW   i   RZ   N(   R   i    (   i   (   (   i   (	   R9   RO   t   ArrayR#   RŠ   R^   R_   R‘   R@   (   R’   R   R~   R   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt(   test_index_with_int_dask_array_nocomputeZ  s    	
c          C   sÓ   t  j d ƒ j d ƒ }  t j |  d d ƒ} t  j t t t t t t g d t ƒ} t j | d d ƒ} xc | t	 d d d ƒ | f | t	 d d	 d ƒ f g D]. } t
 j | ƒ d
 } t |  | | | ƒ q Wd  S(   Ni$   i   R   i   RZ   i   i   i	   i   i    (   i   i   (   i   i   (   R#   RO   Ri   R9   RN   Ra   R0   R/   t   boolR   RX   R@   R   (   R   t   dRb   R5   t   x_index(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_index_with_bool_dask_arrayi  s    ':c          C   sß   t  j j d	 ƒ }  t  j j d ƒ d k } t j |  d d
 ƒ} t j | d d ƒ} t d d d ƒ t d  ƒ g } xf t |  j ƒ D]U } | } | j | | ƒ | } | j | | ƒ t	 |  t
 | ƒ | t
 | ƒ ƒ q‚ Wd  S(   Ni
   g      à?R   i   i   i   i   i	   (   i
   i
   i
   (   i   i   i   (   R#   RL   R9   RN   R   R   R   t   ndimt   insertR   t   tuple(   R   Rb   R–   t   dindR5   R+   t   index2t   index3(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt!   test_index_with_bool_dask_array_2s  s    c          C   sv   t  j d d d ƒ}  xZ d t d d ƒ t d d  d ƒ g D]4 } |  | } t | j ƒ t |  j ƒ k  s: t ‚ q: Wd  S(	   Niè  R   i
   i   i    i   id   (   i
   (   R9   R:   R   R   R>   RX   R   (   R   t   slcR   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt	   test_cull†  s    +
RB   R5   c         C   s@   t  j j |  ƒ } t j | d |  ƒ} t | | | | ƒ d  S(   NR   (   R#   RL   R9   RN   R   (   RB   R5   R   R–   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_slicing_with_Nones  s    i    iþÿÿÿc          C   sr   t  j j d d ƒ }  t j d d d d g ƒ } t j d  ƒ  } |  | j ƒ  Wd  QXt | ƒ d k sn t	 ‚ d  S(   Nid   i   i    i   (   id   i   (   i   i   (
   R9   RL   R#   R$   R^   t   warnsR   R@   R>   R   (   t   XR~   t   rec(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt    test_slicing_integer_no_warnings±  s
    c          C   s   d }  t  j t  j |  ƒ ƒ j |  ƒ } t j j | ƒ } xP t j t	 t	 t	 t	 ƒ D]6 } | j
 t ƒ d k rs qR n  t | | | | ƒ qR Wd  S(   Ni   i   i   i   i   i   (   i   i   i   i   i   (   R#   RO   t   prodRi   R9   t   coreRa   t	   itertoolst   productRQ   t   countt   EllipsisR   (   RB   R   R   Rb   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_slicing_none_int_ellipesº  s    !c    	      C   s    d t  d  d d  ƒ d  t f \ }  } } } d } t j t j | ƒ ƒ j | ƒ } t j j	 | ƒ } | |  | | | f } | |  | | | f } t
 | | ƒ d  S(   Ni    i   i   i   i   i   (   i   i   i   i   i   (   R   R   R¬   R#   RO   R§   Ri   R9   R¨   Ra   R   (	   R1   R3   R6   R–   RB   R   R   t   xxt   yy(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_None_overlap_intÆ  s    *!c           C   s1   t  t j d d d ƒd t j d ƒ d ƒ d  S(   Ni   R   iþÿÿÿ(   R   R9   R:   R#   (    (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_negative_n_slicingÑ  s    c          C   sj   t  j d ƒ }  t j |  d d ƒ} t | d d g |  d d g ƒ t | d d g |  d d g ƒ d  S(   Ni   R   i   i    iûÿÿÿi   iÿÿÿÿ(   R#   RO   R9   RN   R   (   R   Re   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_negative_list_slicingÕ  s    !c          C   s|   t  j d ƒ }  t j |  d d ƒ} t |  d | d ƒ t |  d | d ƒ t |  d  | d  ƒ t |  d  | d  ƒ d  S(   Ni   R   i   išÿÿÿif   (   R#   RO   R9   RN   R   (   R   Re   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_permit_oob_slicesÜ  s    c          C   së   t  t d  f d ƒ t d  ƒ d  f k s- t ‚ t  d t j f ƒ d k sN t ‚ t  d t j f ƒ d k so t ‚ t  d d d g t j f ƒ \ }  |  j ƒ  d d d g k s± t ‚ t  t d d ƒ t j f ƒ t d d ƒ f k sç t ‚ d  S(	   Ni
   i   iûÿÿÿiþÿÿÿi   (   i
   (   i   (   iûÿÿÿ(   R	   R¬   R   R   R   R#   t   nant   tolist(   R   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_normalize_indexæ  s    -!!!!c          C   sK   t  j d d d ƒ}  t j d ƒ d } |  | } | j d k sG t ‚ d  S(   Ni
   R   i   i   (   i   (   i   i   i   (   (   i   i   i   (   R9   R:   R#   RO   R   R   (   R   R5   R   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_take_semi_sortedï  s    
s   chunks,index,expectedi   i
   i   c         C   s¥   t  |  | ƒ } t | ƒ t | ƒ k s- t ‚ xq t | | ƒ D]` \ \ } } \ } } | | k sg t ‚ t | ƒ t | ƒ k s… t ‚ | | k j ƒ  s= t ‚ q= Wd  S(   N(   R
   R>   R   t   zipt   all(   R   R5   R   t   planR+   R   RR   R   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_slicing_plan÷  s    (c          C   s¡   t  j d d d ƒ}  t j d ƒ j d d ƒ j d d ƒ } t j t  j ƒ  } |  | Wd  QXd t	 | j
 d ƒ k s~ t ‚ d t	 | j
 d ƒ k s t ‚ d  S(	   Nid   R   i
   t   ordert   Ft   10i    s   out-of-order(   R9   R:   R#   RO   Ri   t   ravelR^   R£   t   PerformanceWarningt   strt   listR   (   R   R5   t   info(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt"   test_pathological_unsorted_slicing  s    't   paramsc         C   sk   |  \ } } } t  j | d | ƒ} t  j | d | ƒ} d | | <| j ƒ  } | j | j k sg t ‚ d S(   s   Reproducer for https://github.com/dask/dask/issues/3730.

    Mutating based on an array with different chunks can cause new chunks to be
    used.  We need to ensure those new chunk sizes are applied to the mutated
    array, otherwise the array won't generate the correct keys.
    R   i   N(   R9   RC   R@   RB   R   (   RÅ   t
   array_sizet   chunk_size1t   chunk_size2R   t   maskR   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt2   test_setitem_with_different_chunks_preserves_shape"  s    
c           C   s‚   t  t j d ƒ d d  d … t j d d d ƒd d  d … ƒ t  t j d ƒ d  d  d … t j d d d ƒd  d  d … ƒ d  S(   Ni
   i    iÿÿÿÿR   i   (   R   R#   RO   R9   (    (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_gh35792  s    ?t   lockRa   t   fancyc      
   C   s†   t  j t j d ƒ d d d | d |  d | ƒ} t  j t j d ƒ d d d | d |  d | ƒ} t  j | | g ƒ } t | | ƒ d  S(   Ni   R   i   Ra   RÌ   RÍ   (   R9   RN   R#   RC   R:   t   stackR   (   RÌ   Ra   RÍ   t   a1t   a2t   al(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   test_gh40437  s    00(   i   i   (   i   i   (   i   i   (   i   i   (   i   (   i   i   (   i   i   i   (   i   i   i   (   i   i   i   i   (   i
   i
   (   i   i   i   (   i   i   i   (\   R©   t   operatorR    R^   t   toolzR   Ro   R#   RX   t
   dask.arrayR$   R9   t   dask.array.slicingR   R   R   R   R   R   R	   R
   t   dask.array.utilsR   R   R   R   R   R   R   R    R!   R*   R-   R.   R8   R=   R?   RA   RD   t   objectRE   t   markt   skipRV   RY   R\   R]   Rc   Rd   Rf   Rg   Rh   Rj   Rk   Rm   Rr   Ry   Rz   t   parametrizeR   R€   R‚   R„   R…   R†   R   R”   R˜   RŸ   t   xfailR¡   R¬   R¢   R   RQ   R¦   t   slowR­   R°   R±   R²   R³   R¶   R·   RO   R»   RÄ   RÊ   RË   R0   R/   RÒ   (    (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_slicing.pyt   <module>   sª   :			$																												0'
-
$$		
				!-						
			$	$	