ó
¦–Õ\c           @   sô  d  d l  m Z d  d l Z d  d l Z e j d ƒ Z d  d l Z d  d l m Z d  d l	 m
 Z
 d  d l m Z m Z m Z d  d l m Z m Z m Z m Z d  d l m Z m Z m Z d  d l j 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 „  Z( d „  Z) d „  Z* d „  Z+ d „  Z, d „  Z- d „  Z. d „  Z/ d  d! d" „ Z0 d# „  Z1 d$ „  Z2 d% „  Z3 d& „  Z4 d' „  Z5 d( „  Z6 e j7 j8 d) dR dS g dT dU g dV dW g g ƒ d, „  ƒ Z9 d- „  Z: d. „  Z; d/ „  Z< d0 „  Z= d1 „  Z> e j7 j8 d2 e j? d3 dX d6 dY ƒ dZ f e j? d3 d[ d6 d\ ƒ i d8 d  6f e j? d3 d] d6 d^ ƒ d d_ f f e j? d3 d` d6 da ƒ db f e j? d3 dc d6 dd ƒ i d8 d  6f e j? d3 de d6 df ƒ d dg f f e j? d3 dh d6 di ƒ dj f e j? d3 dk d6 dl ƒ i d8 d  6f e j? d3 dm d6 dn ƒ d do f f e j? d3 dp d6 dq ƒ dr f e j? d3 ds d6 dt ƒ i d8 d  6f e j? d3 du d6 dv ƒ d dw f f g ƒ d: „  ƒ ZA d; „  ZB d< „  ZC d= „  ZD d> „  ZE d? „  ZF d@ „  ZG dA „  ZH dB „  ZI dC „  ZJ dD „  ZK e j7 j8 dE dF d  d5 dy f dF d4 d5 d{ f dF dF d5 d} f dG dH d5 d~ f dG d d8 d€ f g ƒ dJ „  ƒ ZL dK „  ZM dL „  ZN e j7 j8 dM dF d9 g ƒ dN „  ƒ ZO dO „  ZP dP „  ZQ dQ „  ZR d S(   iÿÿÿÿ(   t   productNt   numpy(   t   funcname(   t	   assert_eq(   t   intersect_chunkst   rechunkt   normalize_chunks(   t   cumdims_labelt   _breakpointst   _intersect_1dt   _old_to_new(   t   plan_rechunkt   divide_to_widtht   merge_to_numberc    	      C   sÒ  t  d d f d ƒ }  t  d d f d ƒ } t d „  t | |  ƒ Dƒ ƒ } d d d d d d f } | d | k sw t ‚ d d d d d d d d d  d! f
 } | d | k s± t ‚ g  | D] } t | ƒ ^ q¸ } d t d d ƒ f g d t d d ƒ f g d t d d ƒ f g g } | d | k s+t ‚ d t d d ƒ f g d t d d ƒ f d t d d ƒ f d	 t d d ƒ f d t d d ƒ f d t d d ƒ f g d t d d ƒ f g g } | d | k sÎt ‚ d S("   sY    Test the cumdims_label and _breakpoints and
    _intersect_1d internal funcs to rechunk.i   i   i   t   ni   t   oc         s   s$   |  ] \ } } t  | | ƒ Vq d  S(   N(   R   (   t   .0R   R   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pys	   <genexpr>   s    i    i   i   i   N(   i   i   i   (   i   i   i   (   i   (   i   (   i   i   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   t   tuplet   zipt   AssertionErrorR	   t   slice(	   t   newt   oldt   breakst   answert   answer2t   bt   i1dt   answer3t   answer4(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_internals_1   s*    c          C   sÊ   d }  d } d t  d d ƒ f f d t  d d ƒ f f d t  d d ƒ f f f d t  d d ƒ f f f d t  d d ƒ f f d	 t  d d ƒ f f f g } t t d
 |  d | ƒ ƒ } | | k sÆ t ‚ d S(   s    Convert 1 D chunksi
   i   i   i   i    i   i   i   i   t
   old_chunkst
   new_chunksN(   i
   i
   i
   i
   i
   (   (   i
   i
   i
   i
   i
   (   i   i   i   (   (   i   i   i   (   R   t   listR   R   (   R   R   R   t   cross(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_intersect_1*   s    3c          C   s÷   d }  d } d t  d d ƒ f f d t  d d ƒ f f d t  d d ƒ f f f d t  d d ƒ f f d t  d d ƒ f f f d t  d d ƒ f f d t  d d ƒ f f f d t  d d ƒ f f f g } t t d	 |  d
 | ƒ ƒ } | | k só t ‚ d S(   s    Convert 1 D chunksi   i:   i   i   i    i   i   i   R   R    N(   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"   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_intersect_28   s    --c          C   s   t  j j d d d ƒ }  t j |  d d ƒ} d } t | d | ƒ} | j | k sZ t ‚ t  j | j	 ƒ  |  k ƒ s{ t ‚ d	 S(   s!   Try rechunking a random 1d matrixi    i   i   t   chunksi
   i   i   i   N(   i
   (   i
   i
   i
   (   (   i
   i
   i
   (   i   (   i   i   i   i   i   i   (   (   i   i   i   i   i   i   (
   t   npt   randomt   uniformt   dat
   from_arrayR   R%   R   t   allt   compute(   t   at   xR   t   x2(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_1dG   s    c          C   s”   t  j j d d d ƒ j d ƒ }  t j |  d d d f ƒ} d d f } t | d | ƒ} | j | k so t ‚ t  j	 | j
 ƒ  |  k ƒ s t ‚ d S(   s!   Try rechunking a random 2d matrixi    i   i,  i
   i   R%   i   i   i   i   i   i   N(   i
   i   (   i   i   i   i   (   i   (   i   i   i   i   i   i   (   i   i   (   i   (   i   i   (   R&   R'   R(   t   reshapeR)   R*   R   R%   R   R+   R,   (   R-   R.   R   R/   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_2dQ   s    !c          C   sŽ   d }  t  j j d d d ƒ j d ƒ } t j | d |  ƒ} d } t | d | ƒ} | j | k si t ‚ t  j	 | j
 ƒ  | k ƒ sŠ t ‚ d S(   s!   Try rechunking a random 4d matrixi   i   i    i   i'  i
   R%   N(   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(   R1   R)   R*   R   R%   R   R+   R,   (   R   R-   R.   R   R/   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_4d[   s    !c          C   ss   t  j j d d d ƒ j d ƒ }  t j |  d d	 ƒ} | j d d
 d f ƒ } t  j | j ƒ  |  k ƒ so t	 ‚ d  S(   Ni    i   id   i
   R%   i   i   (   i
   i
   (   i   i   (   i   i   i   i   (   i   i   i   i   (
   R&   R'   R(   R1   R)   R*   R   R+   R,   R   (   R-   R.   t   y(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_expandf   s    !c    	      C   sN  d \ }  } t  j j d d |  | ƒ j |  f | ƒ } xt t d |  d ƒ t d |  d ƒ ƒ D]ä \ } } |  | | f f | } t j | d | ƒ} |  | | f f | } t  j | j	 d | ƒ j
 ƒ  | k ƒ sÞ t ‚ |  | | d k rb | |  | | | f f | } | j	 d | ƒ j
 ƒ  } t  j | | k ƒ sFt ‚ qb qb Wd  S(   Ni   i   i    i   R%   (   i   i   (   R&   R'   R(   R1   R    t   rangeR)   R*   R+   R   R,   R   (	   R-   R   t   origt   offt   off2R   R.   R   R4   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_expand2m   s    ,6-c          C   sŽ   d }  d } t  j j d d d ƒ j d ƒ } t j | d	 |  ƒ} | j d	 | ƒ } | j | k si t ‚ t  j	 | j
 ƒ  | k ƒ sŠ t ‚ d
 S(   s7    Test rechunking can be done as a method of dask array.i   i   i   i   i   i    i'  i
   R%   N(   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
   i
   i
   i
   (   R&   R'   R(   R1   R)   R*   R   R%   R   R+   R,   (   R   R   R-   R.   R/   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_method{   s    !c          C   sª   d
 d }  } t  | |  ƒ } d d f } t j j d d d ƒ j d ƒ } t j | d | ƒ} t | d | ƒ} | j | k s… t	 ‚ t j
 | j ƒ  | k ƒ s¦ t	 ‚ d	 S(   s"    Test that blockshape can be used.i
   i   i   i   i   i    id   R%   N(   i
   i
   (   i   i   (   i   i   i   (   i   i   i   i   (   i
   i
   (   R   R&   R'   R(   R1   R)   R*   R   R%   R   R+   R,   (   t	   new_shapeR    t   new_blockdimsR   R-   R.   t   check1(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_blockshape†   s    !c          C   s=   t  j d d d ƒ}  |  j d d ƒ j |  j k s9 t ‚ d  S(   Ni   R%   i   i   (   i   (   i   (   R)   t   onesR   t   dtypeR   (   R.   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt
   test_dtype’   s    c          C   sß   t  j d d d	 ƒ}  |  j d i d d 6ƒ } | j d
 d f k sI t ‚ t  j d d d ƒ}  |  j d i d d 6ƒ } | j d d f k s’ t ‚ t  j d d d ƒ}  |  j d i d d 6ƒ } | j d d f k sÛ t ‚ d  S(   Ni   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   i   i   (   R)   R@   R   R%   R   (   R.   R4   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_with_dict—   s    c              sV   t  j d d d ƒ‰  ˆ  j d i  ƒ j ˆ  j k s9 t ‚ t j t ‡  f d †  ƒ d  S(   Ni   R%   i   i   c              s   ˆ  j  d d ƒ S(   NR%   (    (   R   (    (   R.   (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   <lambda>¨   t    (   i   i   (   i   i   (   R)   R@   R   R%   R   t   pytestt   raisest
   ValueError(    (    (   R.   s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_with_empty_input¥   s    $c          C   sU   t  j t j d ƒ d d ƒ}  |  j d d ƒ j t  j d d d	 ƒj k sQ t ‚ d  S(
   Ni   R%   i   i   (   i   i   (   i   i   (   Ni   (   i   i   (   i   i   (   R)   R*   R&   R@   R   t   NoneR%   R   (   R.   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt!   test_rechunk_with_null_dimensions«   s    c          C   sj   t  j t j d ƒ d d ƒ}  |  j d ƒ } | j d k sB t ‚ |  j ƒ  | j ƒ  k j ƒ  sf t ‚ d  S(   Ni   R%   i   i   i   (   i   i   (   (   i   i   (	   R)   R*   R&   t   arangeR   R%   R   R,   R+   (   R.   R4   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_with_integer±   s    c          C   sd   t  j d ƒ }  t j |  d d ƒ} | j d ƒ } | j d k sH t ‚ | j ƒ  |  k s` t ‚ d  S(   Ni*   R%   (    (    (    (   R&   t   arrayR)   R*   R   R%   R   R,   (   R-   R.   R4   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_0d¸   s
    c          C   sP   t  j d d d ƒ}  |  j d ƒ } | j d	 d f k s? t ‚ t |  | ƒ d  S(   Ni    i
   R%   i   i   (   i    i
   (   i   i   (   i   i   (   i    (   i   (   i   i   i   i   i   (   R)   R@   R   R%   R   R   (   R.   R4   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_emptyÀ   s    c          C   s=   t  j d d d ƒ}  |  j |  j ƒ } |  | k s9 t ‚ d  S(   Ni   R%   i   i   (   i   i   (   i   i   (   R)   R@   R   R%   R   (   R.   R4   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_sameÇ   s    c          C   sg   t  j d d d d f ƒ}  t  j d d d	 d
 f ƒ} | j d d f ƒ } |  j | j k sc t ‚ d  S(   Ni   R%   i   i    (   i   i   (   i   i   (   i   i    (   i   i   (   i   i   (   i   i   (   i   i   (   i   i    (   R)   R@   R   R%   R   (   R.   R4   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt#   test_rechunk_with_zero_placeholdersÍ   s    c          C   sP   t  j d d d ƒ}  |  j d ƒ } | j d	 d
 f k s? t ‚ t |  | ƒ d  S(   Ni   R%   i   i   iÿÿÿÿ(   i   i   (   i   i   (   iÿÿÿÿi   (   i   (   i   i   i   (   R)   R@   R   R%   R   R   (   R.   R4   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_minus_oneÔ   s    c          C   sL   t  j j d d d d d ƒ}  |  j d ƒ } t | j ƒ d k sH t ‚ d  S(	   Ni
   gš™™™™™¹?R%   i   i   (   i
   i
   (   i
   i   (   i   i
   (   R)   R'   t   normalR   t   lent   daskR   (   R.   R4   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_intermediatesÛ   s    c          C   sF   t  d	 d ƒ }  |  d
 k s! t ‚ t  d d ƒ }  |  d k sB t ‚ d  S(   Ni   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   (   R   R   (   R%   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_divide_to_widthá   s        c          C   s5  t  d d ƒ }  |  d k s! t ‚ t  d d ƒ }  |  d k sB t ‚ t  d d ƒ }  |  d k sc t ‚ t  d d ƒ }  |  d k s„ t ‚ t  d d ƒ }  |  d k s¥ t ‚ t  d! d ƒ }  |  d# k sÆ t ‚ t  d% d ƒ }  |  d& k sç t ‚ t  d' d ƒ }  |  d( k st ‚ t  d) d ƒ }  |  d* k s)t ‚ t  d+ d ƒ }  |  d, k sJt ‚ t  d- d ƒ }  |  d. k skt ‚ t  d/ d ƒ }  |  d0 k sŒt ‚ t  d1 d ƒ }  |  d2 k s­t ‚ t  d3 d ƒ }  |  d4 k sÎt ‚ t  d5 d ƒ }  |  d6 k sït ‚ t  d7 d ƒ }  |  d8 k st ‚ t  d9 d ƒ }  |  d: k s1t ‚ d  S(;   Ni
   i   i   i   i   i   i   i(   i2   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
   i
   (   i(   (   i
   (
   i
   i
   i
   i
   i
   i
   i
   i
   i
   i
   (   i2   (   i2   i2   (   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    (   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   i   i   (   i   i   i   i   i   i   i   (   i   i   (   i   i   i   i   i   i   i   (   i	   (   R   R   (   R%   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_merge_to_numberï   sD    i   g    ÐcAc         C   s   t  |  | d | d | ƒS(   Nt   itemsizet   block_size_limit(   R   (   R   R    RZ   R[   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   _plan  s    c         C   s4   t  |  ƒ t  | ƒ k s t ‚ |  | k s0 t ‚ d  S(   N(   RU   R   (   t   stepst   expected(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   _assert_steps  s    c    
      C   sï  d }  d } t  d ƒ f d } t  d ƒ f d } t d d ƒ } t | d g ƒ t |  d f | d f ƒ } t | | d f g ƒ t |  f | f ƒ } t | | f g ƒ t | f |  f ƒ } t | |  f g ƒ t |  |  f | | f ƒ } t | | | f g ƒ t | | f |  |  f ƒ } t | |  |  f g ƒ t | |  f |  |  f ƒ } t | |  |  f g ƒ t | |  f |  | f ƒ } t | |  |  f |  | f g ƒ t |  |  |  | f | | |  |  f ƒ } t | |  |  |  |  f | | |  |  f g ƒ t | | |  |  |  | f | | | | |  |  f ƒ } t | | ƒ t | |  f |  | f d d ƒ} t | |  |  f |  | f g ƒ d } t | |  f |  | f d d ƒ} t | | |  f |  | f g ƒ t | |  f |  | f d d	 d
 d ƒ} t | | ƒ d }  d  d } t | |  f |  | f d d ƒ} t | ƒ d k sBt ‚ | d |  | f k s^t ‚ xŠ t t | ƒ d ƒ D]r } | | } | | d }	 t |	 d ƒ t | d ƒ d k s½t ‚ t |	 d ƒ t | d ƒ d k sut ‚ quWd  S(!   Ni   i   t   nanR[   i  i
   i   i  iŸ  RZ   iè  iŸ† i   iÿÿÿÿi   i    g       @(   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   (   t   floatR\   R_   RU   R   R6   (
   t   ct   ft   nct   nfR]   t   mt   steps2t   it   prevt   succ(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_plan_rechunk"  sR    +/9!!'
!
*c          C   s  d }  d } t  |  |  |  |  |  f | | | | | f ƒ } t | | | | | | f g ƒ t  | | | | |  f |  |  |  | | f ƒ } t | |  |  |  | |  f |  |  |  | | f g ƒ t  |  |  | | |  f |  |  |  | | f d d ƒ} t | |  |  |  | |  f |  |  |  | | f g ƒ d  S(	   Ni
   i   R[   g     ˆÓ@(   i
   (   i
   (   i   (
   i   i   i   i   i   i   i   i   i   i   (   R\   R_   (   Rb   Rc   R]   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_plan_rechunk_5da  s    --13c          C   sf  d }  d } |  | } |  |  } | | } | |  } t  | | f | | f ƒ } t | | | f g ƒ t  | | f | | f ƒ } t | | | f g ƒ t  | | f | | f ƒ } t | | | f | | f g ƒ t  | | | f | | | f ƒ } t | | | | f | | | f g ƒ t  | | | f | | | f d d ƒ} t | | | | f | | | f g ƒ d  S(	   Ni
   i   R[   id   (   i
   (   i
   (   i   (
   i   i   i   i   i   i   i   i   i   i   (   R\   R_   (   Rb   Rc   t   cft   cct   fft   fcR]   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_plan_rechunk_heterogenouso  s     



!%'c          C   s¡   d	 d d
 f }  d d d f } t  |  | d d ƒ} t | ƒ d k sM t ‚ t j d d d ƒ} | j d | j d d f ƒ } t | j ƒ d k  s t ‚ d  S(   Ni   iè  i ´Äi€8 RZ   i   R%   i † (   i   (   i ´Ä(   iè  (   i€8 (   iè  i ´Ä(   i   i ´Ä(   R   RU   R   R)   R@   R   t   shapeRV   (   R-   R   R]   R.   R4   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_plan_rechunk_asymmetric  s     c          C   sw   d }  t  j j d |  |  d f d d |  d f ƒ } t j d t ƒ  } | j |  d d f ƒ } Wd  QX| ss t ‚ d  S(   Ni   t   sizeid   R%   i   t   record(   R)   R'   RT   t   warningst   catch_warningst   TrueR   R   (   t   NR.   t   w(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_warning˜  s
    -s   shape,chunksi   i   c         C   sZ   t  j |  d |  ƒ} | j | ƒ } t | j ƒ } t d „  | j ƒ  Dƒ ƒ sV t ‚ d  S(   NR%   c         s   s7   |  ]- } t  j | ƒ r t | d  ƒ j d ƒ Vq d S(   i    t   concatN(   RV   t   istaskR   t
   startswith(   R   t   task(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pys	   <genexpr>¨  s   (   R)   R@   R   t   dictRV   t   anyt   valuesR   (   Rr   R%   R.   R4   t   dsk(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt#   test_dont_concatenate_single_chunks¡  s
    	c       	   C   s-  t  d ƒ t  d ƒ f d f }  t  d ƒ t  d ƒ f d f } t t |  | ƒ ƒ } d t d d  d  ƒ f d t d d d  ƒ f f f d t d d  d  ƒ f d t d d d  ƒ f f f d t d d  d  ƒ f d t d d d  ƒ f f f d t d d  d  ƒ f d t d d d  ƒ f f f g } | | k s)t ‚ d  S(   NR`   i   i   i    i   (   i   (   i   i   (   Ra   R!   R   R   RJ   R   (   R   R    t   resultR^   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_intersect_nan­  s    0006c          C   s»   t  d ƒ f d f }  t  d ƒ f d f } t t |  | ƒ ƒ } d t d d  d  ƒ f d t d d d  ƒ f f f d t d d  d  ƒ f d t d d d  ƒ f f f g } | | k s· t ‚ d  S(   NR`   i
   i   i    (   i
   (   i   i   (   Ra   R!   R   R   RJ   R   (   R   R    R…   R^   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_intersect_nan_single»  s    06c          C   sï  t  t d ƒ g d ƒ d	 f }  t  t d ƒ g d ƒ d
 f } t t |  | ƒ ƒ } d t d d  d  ƒ f d t d d d  ƒ f f f d t d d  d  ƒ f d t d d d  ƒ f f f d t d d  d  ƒ f d t d d d  ƒ f f f d t d d  d  ƒ f d t d d d  ƒ f f f d t d d  d  ƒ f d t d d d  ƒ f f f d t d d  d  ƒ f d t d d d  ƒ f f f d t d d  d  ƒ f d t d d d  ƒ f f f d t d d  d  ƒ f d t d d d  ƒ f f f g } | | k sët ‚ d  S(   NR`   i   i
   i   i    i   i   i   (   i
   (   i   i   (   R   Ra   R!   R   R   RJ   R   (   R   R    R…   R^   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_intersect_nan_longÅ  s    00000006c          C   sþ   t  j d ƒ }  t  j d ƒ } t j j d d ƒ } |  j | j | ƒ d ƒ j } | j d  d f ƒ } t j
 | j d ƒ j ƒ  sˆ t ‚ t j
 | j d ƒ j ƒ  sª t ‚ | j d d k sÃ t ‚ t j | d	 d d f ƒj d  d f ƒ } t | | ƒ d  S(   Ns   dask.dataframet   pandasi2   i
   i   i   i    i   R%   i   (   i   i   (   i   i   (   i   i   (   i
   (   i   i   (   RF   t   importorskipR&   R'   t   randnt   from_pandast	   DataFrameR‚   R   RJ   t   isnanR%   R+   R   R)   R*   R   (   t   ddt   pdt   arrR.   R…   R^   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt    test_rechunk_unknown_from_pandas×  s    ""*c          C   s°   t  j d ƒ }  |  j t j d d d d	 ƒ ƒ j } | j d
 ƒ } t j	 | j
 d ƒ j ƒ  sd t ‚ t j	 | j
 d ƒ j ƒ  s† t ‚ | j
 d d k sŸ t ‚ t | | ƒ d  S(   Ns   dask.dataframeRr   i   R%   i   i    i   (   i   i   (   i   i   (   Ni   (   i   (   RF   RŠ   R*   R)   R@   R‚   R   RJ   R&   RŽ   R%   R+   R   R   (   R   R.   R…   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_unknown_from_arrayå  s    $""s	   x, chunksRr   i2   i
   R%   i   i   iè  c         C   sc   t  j d ƒ } | j |  ƒ j } | j | ƒ } |  j | ƒ } t | j | j ƒ t | | ƒ d  S(   Ns   dask.dataframe(   RF   RŠ   R*   R‚   R   t   assert_chunks_matchR%   R   (   R.   R%   R   R4   R…   R^   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_unknownñ  s    c          C   s™   t  j d ƒ }  t j d d d d	 ƒ } |  j | ƒ j } | j t d ƒ t d ƒ f d
 f ƒ } | j d  d f ƒ } t	 | j
 | j
 ƒ t | | ƒ d  S(   Ns   dask.dataframeRr   i
   R%   i   i   R`   (   i
   i
   (   i   i   (   i   i   (   i   i   (   RF   RŠ   R)   R@   R*   R‚   R   Ra   RJ   R”   R%   R   (   R   R.   R4   R…   R^   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_unknown_explicit  s    'c         C   si   xb t  |  | ƒ D]Q \ } } t j | ƒ j ƒ  rO t j | ƒ j ƒ  sa t ‚ q | | k s t ‚ q Wd  S(   N(   R   R&   RŽ   R   R+   R   (   t   leftt   rightR.   R4   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyR”     s    c       	   C   s`   t  j d ƒ }  |  j t j d d d d ƒ ƒ j } t  j t ƒ  | j d  d f ƒ Wd  QXd  S(	   Ns   dask.dataframeRr   i
   R%   i   (   i
   i
   (   i   i   (   i   i   i   (
   RF   RŠ   R*   R)   R@   R‚   RG   RH   R   RJ   (   R   R.   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_unknown_raises  s    $c          C   sÍ   t  d ƒ t  d ƒ f d f }  t  d ƒ t  d ƒ f d f } t |  | ƒ } d t d d  d  ƒ f g d t d d  d  ƒ f g g d t d d d  ƒ f g d t d d d  ƒ f g g g } | | k sÉ t ‚ d  S(   NR`   i   i   i    i   (   i   (   i   i   (   Ra   R
   R   RJ   R   (   R   R   R…   R^   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_old_to_new_single&  s    39c          C   s£   t  d ƒ f d f }  t  d ƒ f d f } t |  | ƒ } d t d d  d  ƒ f g g d t d d d  ƒ f g d t d d d  ƒ f g g g } | | k sŸ t ‚ d  S(   NR`   i
   i   i    (   i
   (   i   i   (   Ra   R
   R   RJ   R   (   R   R   R…   R^   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_old_to_new1  s    9c          C   sÿ   t  t d ƒ g d ƒ d	 f }  t  t d ƒ g d ƒ d
 f } t |  | ƒ } d t d d  d  ƒ f g d t d d  d  ƒ f g d t d d  d  ƒ f g d t d d  d  ƒ f g g d t d d d  ƒ f g d t d d d  ƒ f g g g } | | k sû t ‚ d  S(   NR`   i   i
   i   i    i   i   i   (   i
   (   i   i   (   R   Ra   R
   R   RJ   R   (   R   R   R…   R^   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_old_to_new_large;  s    9c       	   C   sk   t  d ƒ }  t j t ƒ / } t |  |  f d f |  |  |  f d f ƒ Wd  QXd t | j ƒ k sg t ‚ d  S(   NR`   i   t
   unchanging(   i   i   (   i   i   (   Ra   RF   RG   RH   R
   t   strt   valueR   (   R`   Ru   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_changing_raisesH  s    .c          C   sÁ   d }  d } t  |  | ƒ } d t d d d  ƒ f d t d d d  ƒ f d t d d d  ƒ f g d t d d d  ƒ f g d t d d d  ƒ f d	 t d d d  ƒ f g g g } | | k s½ t ‚ d  S(   Ni
   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   RJ   R   (   R   R   R…   R^   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_old_to_new_knownP  s    B6c          C   sO   t  j d ƒ }  |  j d d d ƒj d	 ƒ } t | j ƒ  ƒ d k sK t ‚ d  S(
   Ns
   dask.arrayi    i
   id   R%   i2   (   i    i
   id   (   i    i
   i
   (   i    i
   i2   (   RF   RŠ   R@   R   RU   R,   R   (   R)   R.   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_zero_dimZ  s    c          C   sL   t  j d d d ƒ}  |  j d ƒ } | j ƒ  } t | ƒ d k sH t ‚ d  S(   Ni   R%   i   i   i
   (   R)   R@   R   t   __dask_graph__RU   R   (   R.   R4   Rƒ   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt$   test_rechunk_avoid_needless_chunkinga  s    s   shape,chunks,bs,expectedid   i   i   i   c         C   sZ   t  j |  d | f ƒ} | j i d d 6d | | j j ƒ} | j | f k sV t ‚ d  S(   NR%   t   autoi    R[   (   R)   R@   R   RA   RZ   R%   R   (   Rr   R%   t   bsR^   R.   R4   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_auto_1dh  s    &c          C   sž  t  j d d d ƒ}  |  j i d d 6d d 6d d |  j j ƒ} | j d d f k s] t ‚ t  j d d d ƒ}  |  j d d d	 |  j j ƒ} | j d d f k s¬ t ‚ t  j d d d ƒ}  |  j i d d 6d d |  j j ƒ} | j d |  j d k st ‚ | j d d k s t ‚ t  j d d d d f ƒ}  |  j i d d 6d d |  j j ƒ} | j d |  j d k st ‚ | j d d k sšt ‚ d  S(    Ni   R%   i   iÿÿÿÿi    R¥   i   R[   iP   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ÿÿÿÿ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   i   i   (   i   i   i   i   i   (   R)   R@   R   RA   RZ   R%   R   (   R.   R4   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_auto_2du  s    -& & c          C   s˜   t  j d
 d d ƒ}  |  j i d d 6d d 6d d |  j j ƒ} | j d |  j d k sb t ‚ | j d d k s{ t ‚ | j d d k s” t ‚ d  S(   Ni   R%   i   R¥   i    i   R[   iÈ   i
   (   i   i   i   (   i   i   i   (   i
   i
   (   i
   i
   (   R)   R@   R   RA   RZ   R%   R   (   R.   R4   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_auto_3d‰  s
    - R   c         C   sh  t  j j i d d 6ƒ  t j |  d d f d d d d ƒ} | j d ƒ } | j d |  d	 d d f k ss t ‚ | j d ƒ j | j k s” t ‚ Wd  QXt  j j i d
 d 6ƒ : | j d ƒ } | j d |  d d d f k sé t ‚ Wd  QXt  j j i d d 6ƒ Z t j |  d d f d d d d ƒ} | j d ƒ } | j d |  d d f k s^t ‚ Wd  QXd  S(   Nt   10MiBs   array.chunk-sizeiè  R%   i   RA   t   uint8R¥   i
   t   7MiBi   t   1MiBt   float64iú   i   (   i   iè  iè  (   i
   (   iè  (   iè  (   i   (   iè  (   iè  (   i   iè  iè  (   i   (   iú   (   iú   iú   iú   iú   (   iú   (   iú   iú   iú   iú   (   RV   t   configt   setR)   R@   R   R%   R   (   R   R.   R4   t   z(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_auto_image_stack‘  s    $&',$c       
   C   sE  t  j j i d d 6ƒ M t j d d d d d ƒ}  |  j d	 ƒ } | j d d d f k sb t ‚ Wd  QXt  j j i d d 6ƒ 2 | j d	 ƒ } | j d d d f k s¯ t ‚ Wd  QXt  j j i d d 6ƒ q | j i d	 d 6ƒ } | j d d d d f k st ‚ | j i d	 d 6ƒ } | j d! d# d$ f k s;t ‚ Wd  QXd  S(%   NRª   s   array.chunk-sizeid   iè  R%   i   RA   R«   R¥   i
   R­   i   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ú   (   iú   (   iú   iú   iú   iú   (   i   (   iè  (   iè  (   i
   (
   i
   i
   i
   i
   i
   i
   i
   i
   i
   i
   (   id   (
   id   id   id   id   id   id   id   id   id   id   (   iè  (   RV   R¯   R°   R)   R@   R   R%   R   (   R.   R4   R±   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_down£  s    $$"c          C   s]   t  j j i d d 6ƒ > t j d d d ƒ}  |  j d ƒ } | j d k sS t ‚ Wd  QXd  S(   Nt   1Bs   array.chunk-sizei
   R%   i   R¥   i   (   i   (   i   (
   i   i   i   i   i   i   i   i   i   i   (   (
   i   i   i   i   i   i   i   i   i   i   (   RV   R¯   R°   R)   R@   R   R%   R   (   R.   R4   (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_zeroµ  s    c       
   C   sN  t  j d d d ƒ}  |  j i d d 6ƒ j d d d f k sC t ‚ |  j i d |  j 6ƒ j d d d f k su t ‚ t j t ƒ  } |  j i d d 6ƒ Wd  QXd t	 | j
 ƒ k s¼ t ‚ t j t ƒ  } |  j i d d 6ƒ Wd  QXd	 t	 | j
 ƒ k st ‚ t j t ƒ  } |  j i d d
 6ƒ Wd  QXd t	 | j
 ƒ k sJt ‚ d  S(   Ni   i   i   R%   i   iÿÿÿÿt   blahid   t   100iœÿÿÿs   -100(   i   i   i   (   i   i   (   i   i   i   (   i   (   i   (   i   i   i   (   i   i   i   i   (   R)   t   zerosR   R%   R   t   ndimRF   RG   t	   TypeErrorRž   RŸ   RH   (   R.   t   info(    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   test_rechunk_bad_keys¼  s    .2(   i   (   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i2   i
   (   i   i
   (   Ni   (   i2   i
   (   i   i
   (   i2   i
   (   i   i
   (   i   i   (   iè  i
   (   i   i
   (   Ni   (   iè  i
   (   i   i
   (   iè  i
   (   i   i
   (   i   i   (   i
   i
   (   i
   i
   (   Ni   (   i
   i
   (   i
   i
   (   i
   i
   (   i
   i
   (   i   i   (   i
   i
   (   i
   i   (   Ni   (   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   i   i   (   i   i   i   i   i   i   i   i   (   i   i   i   i   (S   t	   itertoolsR    Rv   RF   RŠ   R&   RV   t
   dask.utilsR   t   dask.array.utilsR   t   dask.array.rechunkR   R   R   R   R   R	   R
   R   R   R   t
   dask.arrayRN   R)   R   R#   R$   R0   R2   R3   R5   R:   R;   R?   RB   RC   RI   RK   RM   RO   RP   RQ   RR   RS   RW   RX   RY   R\   R_   Rk   Rl   Rq   Rs   R{   t   markt   parametrizeR„   R†   R‡   Rˆ   R’   R“   R@   RJ   R•   R–   R”   R™   Rš   R›   Rœ   R    R¡   R¢   R¤   R§   R¨   R©   R²   R³   Rµ   R¼   (    (    (    s<   lib/python2.7/site-packages/dask/array/tests/test_rechunk.pyt   <module>   s¦   "				
	
																		(		?						
		
			"!"!"!"3	
				
			
		!		$		