
    biˆ                       d dl mZ d dlZd dlZd dlZd dlmZmZmZ d dl	m
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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 Z0d Z1 G d d      Z2ejf                  ji                  d      d        Z5d Z6d  Z7d! Z8d" Z9d# Z:d$ Z;d% Z<d& Z=d' Z>d( Z?d) Z@d* ZAd+ ZBd, ZCejf                  j                  d-g d.      ejf                  j                  d/g d0      d1               ZEejf                  j                  d2g d3      d4        ZFejf                  j                  d2g d5      d6        ZGejf                  j                  d2d7d8g      d9        ZHejf                  j                  d2d7d8g      d:        ZIejf                  j                  d;g d<      d=        ZJd> ZKd? ZLd@ ZMejf                  j                  dA        ZOejf                  j                  dBg dC      ejf                  j                  dDePfdePfePdfdePdfg      dE               ZQeP eRd7      d dFdGdH eRdGd      dgZS	 dI ZTejf                  j                  dJ        ZVdK ZWdL ZXdM ZYdN ZZdO Z[dP Z\dQ Z]dR Z^dS Z_dT Z`ejf                  j                  dUdVdWg      dX        ZadY ZbdZ Zcejf                  j                  d[      ejf                  j                  d\g d]      d^               Zed_ Zfejf                  j                  d`dadbg      ejf                  j                  dcdadbg      ejf                  j                  dddadbg      de                      Zgdf Zhdg Zidh Zjdi Zkdj Zldk Zmdl Zndm Zoejf                  j                  dndoej                  ej                  f ej                  dpej                  fejf                  j                  dqdar      s       ej                  ej                  dpfejf                  j                  dqdar      s      g      	 	 	 	 dudt       Zry)v    )annotationsN)AliasTaskTaskRef)delayednumpy)getitem)
SlicingNoop_sanitize_index_element	_slice_1dmake_block_sorted_slicesnew_blockdimnormalize_indexsanitize_indexshuffle_sliceslice_arraytake)	assert_eq	same_keysc                 	   t        ddd      t        d d d       t        ddd      d} t        ddgdz  t        ddd             }| |k(  sJ t        d	d
d      t        ddd      t        ddd      t        d	dd      t        ddd      d} t        ddgdz  t        ddd            }| |k(  sJ t        d	dd      t        ddd      t        ddd      t        d	dd      t        ddd      d} t        ddgdz  t        dd d            }| |k(  sJ t        ddd      t        ddd      t        ddd      t        ddd      t        ddd      d} t        ddgdz  t        d d d            }| |k(  sJ t        ddd      t        ddd      t        ddd      t        d	dd      t        ddd      d} t        ddgdz  t        d d d            }| |k(  sJ t        ddd      t        d	dd      t        ddd      t        ddd      t        ddd      d} t        ddgdz  t        d d d            }| |k(  sJ t        ddd      t        ddd      t        d	dd      t        ddd      d} t        ddgdz  t        dd d            }| |k(  sJ dt        dd
d      i} t        dg dt        ddd            }| |k(  sJ t        ddd      t        ddd      d} t        dg dt        ddd            }| |k(  sJ i } t        dg dt        d            }|sJ t        ddd      t        d	dd      t        ddd      t        d	dd      t        ddd      d} t        d g d!t        dd d            }| |k(  sJ t        ddd      t        ddd      t        dd"d      t        dd#d      t        dd$d      d} t        d%g d&t        d d d            }| |k(  sJ t        dd'd      t        dd"d      t        dd#d      t        dd$d      d(} t        d%g d&t        d d)d            }| |k(  sJ t        dd'd      t        dd"d      t        dd#d      t        dd$d      d(} t        d%g d&t        dd)d            }| |k(  sJ dt        d*d+d      i} | j                  t        dd*      D ci c]  }|t        d d d        c}       t        d,d+gd*z  t        d*d d             }| |k(  sJ y c c}w )-N
         r   r   r      d      3   ii)r   r   r      r            f   iis      )r   r   r   r"   O   )r#   r#   r#   r#   r#   \   i)r   r   c   )r#   r#   r#      r#   iiih   )r#   r+            i)r   r   r"   r   r1     i ʚ;l    J))slicer   updaterange)expectedresultiis      X/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/array/tests/test_slicing.pytest_slice_1dr<      s   R#dD$(?E!QPQNSHsRD1HeBD&9:Fv RS"S"S"S"H sRD1HeCR&89Fv S"S"S"S"S"H sRD1HeCr&:;Fv S"S"S"S"S"H sRD1HeD$&;<Fv S"S"S"S"S"H sRD1HeD$&;<Fv
 S"S"S"S"S"H sRD1HeD$&;<Fv S"S"S"S"	H sRD1HeBb&9:Fv 5R$%Hs0%B2CDFv S"%%S"*=>Hs0%Ar2BCFv Hs0%(;FM6 S"S"S"S"S"H r/sD"1EFFv
 S"S"S"S"S"H s0%dB2GHFv
 S"S"S"S"	H s0%b"2EFFv
 S"S"S"S"	H s0%R2DEFv 5z1-.HOO5D>JRRtT400JK}zlT&95tT;RSFv Ks   %S%c                 X    t        dg dd      ddik(  sJ t        ddd      ddik(  sJ y )N   r$   r$   r$   r   r   r      )r$   r$   r$   r$   r$   r$   )r        r;   &test_slice_singleton_value_on_boundaryrC      s9    RB'Aq6111R+R0QF:::rB   c                 |   t        dt        t        d      t        ddd      f      t        dt        t        d      t        ddd      f      t        d	t        t        d
      t        ddd      f      t        dt        t        d      t        ddd      f      d} t	        dddgdz  gt        dd d      g      \  }}| |k(  sJ t        dt        t        d      t        ddd      f      t        dt        t        d
      t        ddd      f      t        d	t        t        d      t        ddd      f      d} t	        dddgdz  gt        dd d      g      \  }}| |k(  sJ t        dt        t        d      t        ddd      f      t        dt        t        d      t        ddd      f      t        d	t        t        d
      t        ddd      f      t        dt        t        d      t        ddd      f      d} t	        dddgt        dd d      f      \  }}| |k(  sJ t        dt        t        d      t        ddd      f      t        dt        t        d
      t        ddd      f      t        d	t        t        d      t        ddd      f      d} t	        dddgt        dd d      f      \  }}| |k(  sJ y )Nyr   xr      r   r   rF   r   )rH   r   r   rF   r   )rH   r   r   rF   r"   )rH   r"   )rE   rJ   rK   rL   rF   rH   r   rE   rJ   rK      )r   r   r   r   r   r	   r   r5   r   r8   r9   chunkss      r;   test_slice_array_1drR      s    x'(*;eBA>N=PQx'(*;eAr1o=OPx'(*;eAr1o=OPx'(*;eAr1o=OP	H !cRD1H:b$8J7KLNFFv x'(*;eAr1o=OPx'(*;eAr1o=OPx'(*;eAr1o=OPH !cRD1H:b$8J7KLNFFv x'(*;eBA>N=PQx'(*;eAr1o=OPx'(*;eAr1o=OPx'(*;eAr1o=OP	H !cI;r49K8MNNFFv x'(*;eAr1o=OPx'(*;eAr1o=OPx'(*;eAr1o=OPH !cI;r49K8MNNFFvrB   c                    t        dt        t        d      t        ddd      t        ddd      f      t        dt        t        d	      t        ddd      t        d       f      t        d
t        t        d      t        ddd      t        d       f      d} t	        dddgg dgt        dd d      t        dd d      g      \  }}| |k(  sJ t        dt        t        d      dt        ddd      f      t        dt        t        d	      dt        d       f      t        dt        t        d      dt        d       f      d} t	        dddgg dfdt        dd d      g      \  }}| |k(  sJ y )NrF   r   r   rH   r   r   r2   r#   r   r   r   rF   r   r   rH   r   r   rF   r   r   )rH   r   r   )rT   rV   rX   rF   rH   )r#   r#   r$   rE   r$   rJ   rK   rM   rO   rP   s      r;   test_slice_array_2drY      sx    K 2r1uRQ/0	
 '+"6r2q9I5QU;8W
 '+"6r2q9I5QU;8W
H !
{	r4	U2tQ/0	NFF v x'+*>E"bRSDT@UVx'+*>E$K@PQx'+*>E$K@PQH !cRD++>E"dTUDV@WXNFFvrB   c                     t        j                  d      } | t        j                  dg      dt	        d       t	        d       f   }t        |t         j                        sJ t        || d          y )N)r   r      (   r   )daonesnparrayr5   
isinstanceArrayr   )da_arraynews     r;   test_mixed_indexre     sW    ww~&H
BHHaSM1eDk5;?
@Cc288$$$c8A;rB   c                 Z   t        j                  t              5  t        dddggt	        d d d       f       d d d        t        j                  t              5  t        dddgt	        d d d       t	        d d d       t	        d d d       f       d d d        y # 1 sw Y   _xY w# 1 sw Y   y xY w)Nfoobarr   )r   r4   i'  )pytestraisesr
   r   r5   rA   rB   r;   test_slice_optimizationsrk     s    	{	# GE5C5'E$d,C+EFG 
{	# 
 4t$eD$&=uT4QU?VW		

 
	G G
 
s   B4B!B!B*c                     t        ddddgddgft        dd      df      \  } }dt        dt        t	        d      t        d d d       df      i}|| k(  sJ y )	NrF   rH   r$   r      rE   rW   r"   r   r5   r   r	   r   r9   rQ   r8   s      r;   #test_slicing_with_singleton_indicesrp     sm     cQFQF+;eAqk1=MNNFF 	$gw{3eD$6Mq5Q
H vrB   c                 P   t        ddddgddgft        dd      d t        d d d       f      \  } }t        dt        t	        d      t        ddd      d t        d d d       f      t        d	t        t	        d
      t        ddd      d t        d d d       f      d}|| k(  sJ |dk(  sJ y )NrF   rH   r$   r   r"   rF   r   r   r   rU   r   rF   r   r   r   rW   )rr   rs   )r"   )r   r$   r$   rn   ro   s      r;   test_slicing_with_newaxisrv   (  s     
Q!Q	q!dE$d34	NFF K 1a^T5tT#:;	
 K 1a^T5tT#:;	
H v))))rB   c                     t        dddgg dd      \  } }t        |      dk(  sJ | dk(  sJ t        dddd	gg dd      \  } }t        |      d
k(  sJ | dk(  sJ y )Ny-yrH   r#   r#   r#   r#   )r$   r   /   r"   r   axis   r   r#   r#   	   )r   r   )r   lenrQ   dsks     r;   	test_taker   C  sv    uc$4#5}1MKFCs8q==Wuc$4h#?UVWKFCs8q==%%%%rB   c            	         t        dddgg dd      \  } }t        |      dk(  sJ | dk(  sJ t        d	ddgt        j                  dd
      d      \  } }t        |      dk(  sJ | dk(  sJ y )Nrx   rH   ry   )r   r"   r$   rz   r   r{   r}   r~   rF   P   r   )ry   )r   r   r_   aranger   s     r;   test_take_sortedr   M  s~    uc$4#5}1MKFCs8q==WsC"2!3RYYq"5EANKFCs8q==((((rB   c            
     @   t        ddddgddgfdt        j                  g d      f      \  } }|dk(  sJ t        ddddgddgft        dd      t        j                  g d      f      \  } }|d	k(  sJ t        ddddgddgft        dd      df      \  } }|d
k(  sJ y )NrF   rH   r$   r   )r   r   r"   )rt   r      )r$   r   rt   )r   )r   r_   r`   r5   )r9   rQ   s     r;   test_slicing_chunksr   V  s     cQFQF+;a)AT=UVNFFW SAq6Aq6"U1a["((92E$FNFF ^### cQFQF+;eAqk1=MNNFFYrB   c                    t        dddt        j                  g d      t        d d d       f      \  } }t        dddt        j                  g d      t        d d d       f      \  }}||k(  sJ t        j                  j                  | |       g d}|t        d d d       f}t        |d      }t        ddd|      \  }}||k(  sJ t        j                  j                  | |       y )Nrx   rH   )r"   r"   r"   r   r   )r   r   r   )
FTTFFFFFFTr   r   )r   r_   r`   r5   testingassert_equalr   )abd1bbd2iindexcbd3s           r;   test_slicing_with_numpy_arraysr   c  s    $	)	eD$56	FAs $	)	eD$56	FAs #::JJAq!KAdD$'(EE8,E%A5IFAs#::JJAq!rB   c                 j    t        j                  dd      } | ddddf   }|j                  dk(  sJ y )	NrI      )r   rm   rm   r   )r   r}   r}   r   rQ   r   r'   r   r   )rm   rm   r}   r}   r]   r^   rQ   )ots     r;   test_slicing_and_chunksr   |  s;    
!=>A	!B$"*A88''''rB   c                 
   t        j                  dd      } t        j                  t        j                  fdf| _        t        j                  t        d      5  | ddg   j                          d d d        y # 1 sw Y   y xY w)N)r   r$   r$   r   r$   z$Array chunk size or shape is unknownmatchr   )	r]   r^   r_   nan_chunksri   rj   
ValueErrorcomputer   s    r;   test_slicing_and_unknown_chunksr     sc    
"A&&"&&!4(AI	z)O	P 	1a&	  s   A99Bc                 .   t        j                  dd      } | | t        d          u sJ | | d d  u sJ | | d d  u sJ | | d   u sJ | | dd  u sJ | | dd  u sJ | | d d d   u sJ | | dt        |        u sJ | | dd d   u sJ | | dt        |       d   u sJ y )Nr   r   r   .r   r   )r]   r^   r5   r   r   s    r;   test_slicing_identitiesr     s    
!=>A%+!99"::#;;!"::!#;;#A#;;!c!f!$Q$<<!c!fq.!!!!rB   c                     t        j                  dd      d d j                         } t        j                  d      d d }t	        | |       y )Nr   r   r   r   )r]   r^   r   r_   r   )r   r   s     r;   test_slice_stop_0r     s>    
5!"1%--/A
BQAaOrB   c                     t        j                  dd      } | ddg   d    }t        |t        j                  d             y )Nru   r"   r"   )shaperQ   r   r   )r   r   r$   )r]   zerosr   r_   rH   rF   s     r;   test_slice_list_then_Noner     s6    
vf-A	1a&	$Aa)$%rB   c                      e Zd Zd Zy)
ReturnItemc                    |S NrA   )selfkeys     r;   __getitem__zReturnItem.__getitem__  s    
rB   N)__name__
__module____qualname__r   rA   rB   r;   r   r     s    rB   r   zreally long test)reasonc                    t         j                  j                         j                  ddd      } t        j                  | d      }t               }dd|d d  |d d dd	gg d
ddg|d d d   d |d d g g}|D ]  }t        | |   ||          |D ]s  }t        | |   d d |f   ||   d d |f          t        | d d |f   |   |d d |f   |          |D ],  }t        | d|f   d d |f   |   |d|f   d d |f   |          . u  |d d  |d d t         j                  d      g dt         j                  d      dk  g}ddd|d d  |d d |dd ddgg |d d g	}|D ]!  }|D ]  }t        | |   |   ||   |           # y )Nr}   r   rm   r"   r"   r"   r   r   r   r$   r   r   r   r   r!   .)r"   r   r   r$   r   r"   )r_   randomdefault_rngr]   
from_arrayr   r   r   )	rH   r   Iindexersr   jkfirst_indexerssecond_indexerss	            r;   test_slicing_exhaustivelyr     s   
		&&q!Q/A
a	*AA 2qtQrUQFI1vq2waPRQReUWXH B!A$! 	BAad1a4j!A$q!t*-a1gaj!AqD'!*- B!CF)AqD/!,aQi1oa.@AB	BB dAbqE299Q<"))A,QRBRSN"a1q!ua"g1vr1Ra5IO (  	(Aad1gqtAw'	((rB   c                    t        j                  dd      } | d dd   }| j                  df|j                  |j                  df   j                  v sJ | j                  df|j                  |j                  df   j                  v sJ t        |t        j                  d      d dd          |j                  dk(  sJ |j                  |j                  df   t        |j                  dft        t        | j                  df      t        ddd      f      k(  sJ |j                  |j                  df   t        |j                  dft        t        | j                  df      t        dd	d      f      k(  sJ y )
Nr   r$   r   r   r!   r   ))r$   r"   r)   r'   )r]   r   namedaskdependenciesr   r_   rQ   r   r	   r   r5   r   s     r;   *test_slicing_with_negative_step_flops_keysr     sT   
		"QA	%1R%AFFA;!&&!&&!-:::::FFA;!&&!&&!-:::::a2u"u%&88y   661661+$	
Wgqvvqk2U2r25F4H#    661661+$	
Wgqvvqk2U2r25F4H#   rB   c                     t        j                  ddd      } | d d }t        |t        j                  dd      d d        y )Nru   r   r   i4)rQ   dtyper   r   )r]   r^   r   r_   r   s     r;   test_empty_slicer     s=    
vT2A	"1Aat,Ra01rB   c                     t         j                  j                         j                  d      } t        j                  | d      }t        | d d g df   ddg   |d d g df   ddg          y )N)r}   r   rm   r   r   r   r   r   r_   r   r   r]   r   r   rH   r   s     r;   test_multiple_list_slicingr     s[    
		&&y1A
a	*Aa9oq!f%qI1v'>?rB   c                 :   t        j                  t              5  t        j                  t        d            dg    d d d        t        j                  t              5  t        j                  t        d            g d    d d d        t        j                  d      } g d}t        t        j                  |       |   | |          dg}t        t        j                  dg      |   t        j                  d      |          y # 1 sw Y   xY w# 1 sw Y   xY wNr   T)FFFr$   )TFFFTr   r   )	ri   rj   
IndexErrorr]   asarrayr7   r_   r   r   rH   inds     r;   test_boolean_list_slicingr     s    	z	" %


58dV$%	z	" 4


58234
		!A
+CbjjmC !C&)&Cbjj!oc"BIIaL$56% %4 4s   #D$DDDc                    t        j                  t              5  t        j                  t        d            t        j                  dg          d d d        t        j                  t              5  t        j                  t        d            t        j                  g d          d d d        t        j                  d      } t        j                  g d      }t        t        j                  |       |   | |          t        j                  dg      }t        t        j                  dg      |   t        j                  d      |          y # 1 sw Y   xY w# 1 sw Y   xY wr   )
ri   rj   r   r]   r   r7   r_   r`   r   r   r   s     r;    test_boolean_numpy_array_slicingr     s    	z	" /


58RXXtf-./	z	" >


58RXX&;<=>
		!A
((4
5CbjjmC !C&)
((D6
Cbjj!oc"BIIaL$56/ /> >s   6E17EEE'c                     t         j                  dd      } t        j                  | 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          y )Nr?   r   r   r   r   r"   )r_   r^   r]   r   r   rH   dxs     r;   test_empty_listr     s    
	&A	q	#BbRaR!naBQB
m,b!R!naB
m,b!RaRnaBQB
m,rB   c                 \    t        j                  dd      d d d   j                  dk(  sJ y )Nr#   r$   r   r   )r"   r   r"   r   r   rA   rB   r;   test_uneven_chunksr     s*    772a 1%,,???rB   c            	     F    t        dg dt        dd d            g dk(  sJ y )Nr#   )r$   r$   r$   r$   r   r   r   )r   r5   rA   rB   r;   test_new_blockdimr   	  s"    L%4*;<LLLrB   c                 R   t         j                  d      j                  d      } t        j                  | d      }t        |d   |d         sJ t        |d d g df   |d d g df         sJ t        |d d ddd	f   |d d ddd	f         sJ t        |d
   |d
         sJ t        |d   |d         sJ t        |g d   |g d         sJ t        |dd |d d        sJ t        |dd |d d       sJ t        |d	   |d         sJ t        |dd d	   |ddd	         sJ y )Nr   r   ru   r   r   r   r   r"   r$   r   r!   )r   ..)r   r"   r$   i   ir   r   )r_   r   reshaper]   r   r   r   s     r;   test_slicing_consistent_namesr     sH   
		#x(A
a'AQqT1Q4   Qq)|_a9o666Qq!Ab&y\1Q!BY<000QvY&	***QsVQsV$$$Qy\1Y<000Qs2Y!%%%Qs2Y"1&&&QrUAaD!!!Qqu"uXq3r{+++rB   c                     t        j                  dd      } t        | dd  | d d       sJ t        | dd  | dd       sJ t        | dd  | ddd         sJ t        | d d  | ddd         sJ y )Nr   r   r   r   r   )r]   r   r   rH   s    r;   1test_slicing_consistent_names_after_normalizationr     s    
D!AQqrUAcrF###QqrUAaG$$$QqrUAa1fI&&&QqT1Qr!V9%%%rB   c                 v    t        j                  t              5  t        d       d d d        y # 1 sw Y   y xY w)NHello!)ri   rj   	TypeErrorr   rA   rB   r;   test_sanitize_index_elementr   $  s+    	y	! *)* * *s   /8c                 n   t        j                  d      } t        j                  t              5  t	        d       d d d        t
        j                  j                  t	        | j                  g d            g d       t
        j                  j                  t	        d      g d       y # 1 sw Y   qxY w)Npandasr   r   )	ri   importorskiprj   r   r   r_   r   r   Series)pds    r;   test_sanitize_indexr  )  sx    			X	&B	y	! !x ! JJN299Y+?@)LJJN95yA	! !s   B++B4c                    d} t        dd      t        d       f}t        dd| |      \  }}t        dt        t	        d      t        dd	d
      t        d       f      t        dt        t	        d      t        ddd
      t        d       f      d}||k(  sJ |dk(  sJ d} t        dd      t        dd      f}t        dd| |      \  }}t        dt        t	        d      t        dd	d
      t        ddd
      f      t        dt        t	        d      t        dd	d
      t        d       f      t        dt        t	        d      t        dd	d
      t        ddd
      f      t        dt        t	        d      t        ddd
      t        ddd
      f      t        dt        t	        d      t        ddd
      t        d       f      t        dt        t	        d      t        ddd
      t        ddd
      f      d}||k(  sJ |dk(  sJ y )N)r[      r[   r@   r[   r@   r[   r[   r@   r[   r@   r      i  inoutr  r   r   )r  r   r   r  r[   r   r  r   r   )r  rm   r   r   r1   )r  r  )r"   r1   r	  )r  r        )r  r   r$      r@   )r  r   r}   )r  r   r      )r  rm   r$   )r  rm   r}   )r  rm   r   )r  )r  r   r   )r  r   r   r  )r  r   r   )r  r   r   )r  )r   r[   r  )r5   r   r   r	   r   )	blockdimsr   dsk_outbd_outsols        r;   test_uneven_blockdimsr  2  s   FI3_eDk*E!$y%@OGVM"2r1uT{+	
 M"1b!_eDk*	
C c>>&&&&CI3_eCo.E!$y%@OGVM"2r1uRQ/0	
 M"2r1uT{+	
 M"2r1uQA/	
 M"1b!_eBA./	
 M"1b!_eDk*	
 M"1b!_eAr1o.	
?%CL c>>++++rB   c                 4   t        j                  dd      } t        j                  t              5  | d    d d d        t        j                  t              5  | dg    d d d        t        j                  t              5  | d    d d d        t        j                  t              5  | dg    d d d        t        j                  t              5  | d    d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   UxY w# 1 sw Y   y xY w)Nr$   r   r   r}   i)r   r   )r]   r^   ri   rj   r   r   s    r;   test_oob_checkr  t  s    
$A	z	" 	!	z	" 	1#	z	" 	#	z	" 	3%	z	" 	$      s;   CC* C6'DDC'*C36C?DD
idx_chunks)Nr"   r   r   x_chunks)N)r"   r$   r   r"   )r   r   r   r   c                   t         j                  g dg dg dg      }t         j                  g d      }t         j                  g dg dg dg      }| t        j                  ||       }|t        j                  ||      }t	        |d d |f   |       t	        |j
                  |d d f   |j
                         y )	N)r   r#   r@   r\   2   )<   F   r   Z   r   )n   x            )r"   r   r   )r\   r   r#   )r$  r"  r#  )r(  r%  r&  r   )r_   r`   r]   r   r   T)r  r  rH   idxexpects        r;   test_index_with_int_dask_arrayr-    s     		46OP	A ((9
CXX|\?CDFMM!H-mmC
3a3i acc#q&k688$rB   rQ   r   c                    t        j                  g dg dg|       }t        j                  dd      }t        ||d d f   |dd d f          t        |d d |f   |d d df          y )N)r   r#   r@   )r\   r!  r"  r   r   )r]   r   r   )rQ   rH   idx0s      r;   !test_index_with_int_dask_array_0dr0    s]     	|\26BA==1%Daaj!AqD'"a4j!AqD'"rB   )r   r   r"   r   r$   c                &   t        j                  dd|       }t        ||j                            t        j                  g d             t        j                  d|       }t        ||j                            t        j                  g              y )Nr   r"   r   )r   r!   r   r   r$   )r]   r   r   nonzeror_   r`   r   )rQ   r   s     r;   (test_index_with_int_dask_array_nanchunksr3    s_     			"a'Aa		nbhh~67
6"Aa		nbhhrl+rB   r   r   c                    t        j                  d|       }t        j                  ddgd      }t        ||   t        j                  ddg             y )Nr   r   r!   r'   r   r"   r   )r]   r   r   r   r_   r`   rQ   r   r+  s      r;   'test_index_with_int_dask_array_negindexr6    sA    
		!F#A
--R
+Cafbhh1v&'rB   c                   t        j                  d|       }t        j                  dgd      }t        j                  t
              5  ||   j                          d d d        t        j                  dgd      }t        j                  t
              5  ||   j                          d d d        y # 1 sw Y   WxY w# 1 sw Y   y xY w)Nr   r   r   r(   )r]   r   r   ri   rj   r   r   r5  s      r;   )test_index_with_int_dask_array_indexerrorr8    s    
		!F#A
--A
&C	z	" 	#
--Q
'C	z	" 	#   s   	B3B?3B<?Cr   )int8int16int32int64uint8uint16uint32uint64c                    t        j                  g dd      }t        j                  t        j                  ddg      j	                  |       d      }t        ||   t        j                  ddg             y )N)r   r#   r@   r\   r!   r   r   r   r#   r@   )r]   r   r_   r`   astyper   )r   r   r+  s      r;   %test_index_with_int_dask_array_dtypesrC    sX     	&r2A
--!Q(//6q
ACafbhhBx()rB   c                    d } t        j                  dd      }t        j                  d| fiddt        j                        }||   }t        j                  t              5  |j                          d	d	d	       y	# 1 sw Y   y	xY w)
zWTest that when the indices are a dask array
    they are not accidentally computed
    c                     t               r   )NotImplementedErrorrA   rB   r;   crashz7test_index_with_int_dask_array_nocompute.<locals>.crash  s    !##rB   r$   r!   r   rG   rH   )r  )r   rQ   r   N)	r]   r   rb   r_   r<  ri   rj   rF  r   )rG  rH   r+  r9   s       r;   (test_index_with_int_dask_array_nocomputerH    sm    
$ 			!BA
((Huh'c'
RCsVF	*	+   s   #A==Bc                 ~   t         j                  d      j                  d      } t        j                  | d      }t         j                  g dt              }t        j                  |d      }|t        dd	d      |f|t        dd
d      ffD ],  }t        j                  |      d   }t        | |   ||          . y )N$   r   r   r   )TTFTFFr   r   r   r   rm   r   )r_   r   r   r]   r   r   boolr5   r   r   r   )rH   dr   r   x_indexs        r;   test_index_with_bool_dask_arrayrN    s    
		"f%A
a'A
**<D*
IC
--A
&CaA,sE!QN.CD (,,u%a(!G*ah'(rB   c                    t         j                  j                         } | j                  d      }| j                  d      dkD  }t        j                  |d      }t        j                  |d      }t        ddd      t        d       g}t        |j                        D ]T  }|d d  }|j                  ||       |d d  }|j                  ||       t        |t        |         |t        |                V y )	N)r   r   r   r   g      ?)r"   r   r$   r   r   r   r   )r_   r   r   r]   r   r5   r7   ndiminsertr   tuple)	rngrH   r   rL  dindr   r   index2index3s	            r;   !test_index_with_bool_dask_array_2rW    s    
))


!C

< A
**R.3
C
a	*A==Q'D1a^U4[)E166] 6qaqa!E&M"AeFm$456rB   c                     t        j                  dd      } dt        dd      t        dd d      fD ]4  }| |   }t        |j                        t        | j                        k  r4J  y )Nr4   r   r   r   r   r@   r   )r]   r^   r5   r   r   )rH   slcrF   s      r;   	test_cullrZ    s^    
U#A5B<q$!45 )cF166{S[((()rB   r   )r  r  )r   r"   r$   r   c                    t         j                  j                         j                  |       }t        j                  ||       }t        ||   ||          y )Nr   r   )r   r   rH   rL  s       r;   test_slicing_with_Nonesr\    sC    
 			&&u-A
a&Aah%!rB   r   r   r!   c                    t         j                  j                         j                  dd      } t        j	                  g d      }t        j                  d      5 }| |   j                          d d d        rJ y # 1 sw Y   xY w)Nr   r   r   sizerQ   )r   r   r   r   Trecord)r]   r   r   r_   r`   warningscatch_warningsr   )Xr+  rb  s      r;    test_slicing_integer_no_warningsrf    so    
		&&HV&DA
((<
 C		 	 	- 	#:v s   A>>Bc                 d   d} t         j                  t         j                  |             j                  |       }t        j
                  j                  |      }t        j                  t        t        t        t              D ]-  }|j                  t              dkD  rt        ||   ||          / y )Nr   r"   r$   r   r   r   )r_   r   prodr   r]   corer   	itertoolsproductr   countEllipsisr   )r   rH   rF   r   s       r;   test_slicing_none_int_ellipesro  &  s    E
		"''%.!))%0A
A  8XxH "99X"!C&!C&!	"rB   c                 $   dt        d dd       d t        f\  } }}}d}t        j                  t        j	                  |            j                  |      }t        j                  j                  |      }|| |||f   }|| |||f   }t        ||       y )Nr   r   rh  )
r5   rn  r_   r   ri  r   r]   rj  r   r   )	r   r   r   rL  r   rH   rF   xxyys	            r;   test_None_overlap_intrs  2  s    U4D)4:JAq!QE
		"''%.!))%0A
A	
1aA:B	
1aA:Bb"rB   c                 x    t        t        j                  dd      d   t        j                  d      d          y )Nr   r   r   )r   r]   r^   r_   rA   rB   r;   test_negative_n_slicingru  =  s(    bgga"2&
27rB   c                     t         j                  d      } t        j                  | d      }t	        |ddg   | ddg          t	        |ddg   | ddg          y )Nr$   r   r   r   r(   r   r!   r_   r   r]   r   r   r   s     r;   test_negative_list_slicingrx  A  sS    
		!A	q	#Bb!Rk1aW:&b!Rk1aW:&rB   c                     t         j                  d      } t        j                  | d      }t	        | dd  |dd         t	        | dd  |dd         t	        | d d |d d        t	        | d d |d d        y )Nr$   r   r   ir&   rw  r   s     r;   test_permit_oob_slicesrz  H  sw    
		!A	q	#Bah45	"agr#$x agr$3x ah5D	"rB   c                    t        t        d fd      t        d       d fk(  sJ t        dt        j                  f      dk(  sJ t        dt        j                  f      dk(  sJ t        g dt        j                  f      \  } | j                         g dk(  sJ t        t        dd      t        j                  f      t        dd      fk(  sJ y )Nr   r$   r   r(   )r(   )r(   r   r   r   )r   rn  r5   r_   r   tolist)r9   s    r;   test_normalize_indexr}  R  s    Hd+U3dT7JJJJ1rvvi(D0002y)U222bffY7IV==?k)))5R=266)4r28HHHHrB   c                     t        j                  dd      } t        j                  d      dz  }| |   }|j                  dk(  sJ y )Nr   r   r   r>   )r?   )r]   r^   r_   r   rQ   )rH   r   rF   s      r;   test_take_semi_sortedr  [  s?    
4 AIIbMBE	%A88|###rB   c                    t         j                  j                  ddi      5  t        j	                  dd      j                  ddd      } dgd	gd
z  z   }t        j                  | d      }||   }| |   }t        ||       t        j                  | d      }| |   }||   }t        ||       |j                  dk(  sJ t         j                  j                  ddi      5  t        j                  d      5 }||   }d d d        t        ||       rJ 	 d d d        t         j                  j                  ddi      5  t        j                  d      5 }||   }d d d        t        ||       rJ |j                  dk(  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   TxY w# 1 sw Y   6xY w# 1 sw Y   y xY w)Narray.chunk-size0.1Mbi   r<  r   r      r   r   r   )r   rm   rm   r   )r   r  r  ))r   r   r   r   r   r   r   r   r   r   r   r   r  r   array.slicing.split-large-chunksFTra  )r   configsetr_   r   r   r]   r   r   rQ   rc  rd  )r   indexerarrr9   r8   rb  s         r;    test_getitem_avoids_large_chunksr  c  s   	,g6	7 @IIm7I3;;AsCH#b.mmAi0
 W:&(#mmAm4W:W&(#}} ;;;; [[__@%HI 	((5 &W&fh':v		 [[__@$GH 	@((5 &W&fh':==$????	@3@ @&& &	 	& &	@ 	@3@ @sl   B?G!F$8F>F$)G F<F0)F<GF!F$$F-	)G0F95F<<G	GGc                    t         j                  j                  ddi      5  t        j	                  d      j                  ddd      } t        j                  | d      }dt        j                  ft        j                  ff|_	        d	d
gdgdz  z   dgz   }| |   }||   }t        ||       d d d        y # 1 sw Y   y xY w)Nr  r  i@B r     )r   r  r  r   r   r   r   r   r   r   r   r   r"   )r   r  r  r_   r   r   r]   r   r   r   r   )r   r  r  r8   r9   s        r;   (test_getitem_avoids_large_chunks_missingr    s     
,g6	7 $IIm$,,QS9mmAm4#bffY	:a&A39$s*W:W&(#$ $ $s   BB66B?c                    t         j                  j                  ddi      5  d} t        j	                  ddgdgdz  z   dgz         }t        d	d
| |      \  }}|dk(  sJ t        |      dk(  sJ t        j	                  dgdz  g dz         }t        d	d
| |      \  }}|dk(  sJ t        |      dk(  sJ t        j	                  g ddgdz  z         }t        d	d
| |      \  }}|dk(  sJ t        |      dk(  sJ d} t        j	                  g ddgdz  z         }t        d	d
| |d      \  }}|dk(  sJ t        |      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  T)r  r  r  r   r   r   e   r"   r   r   )hr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  i   r   r   )r  r  r  r{   )r  r  r  )r   r  r  r_   r`   r   r   )rQ   r   chunks2r   s       r;   test_take_avoids_large_chunksr    st   	<dC	D /!Q1#)+qc12Cfe466663x3!sY./Cfe466663x3aS3Y./Cfe466663x3/aS3Y./Cfe!<66663x3+  s   D#EEc                     t        j                  dd      } t        j                  d      j	                  dd      j                  d      }t        | |   | j                         |          y )Nr   r   r   F)order)r]   r^   r_   r   r   ravelr   r   )rH   r   s     r;   "test_pathological_unsorted_slicingr    sU    
BA IIcN""2r*00s0;Eah		E*+rB   params)r   r   r   )r$   r"   r   c                    | \  }}}t        j                  ||      }t        j                  ||      }d||<   |j                         }|j                  |j                  k(  sJ y)a  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   r   N)r]   r   r   r   )r  
array_sizechunk_size1chunk_size2rH   maskr9   s          r;   2test_setitem_with_different_chunks_preserves_shaper    sZ     ,2(J[
K0A88J{3DAdGYY[F77fll"""rB   c                    t        t        j                  d      dd d   t        j                  dd      dd d          t        t        j                  d      d d d   t        j                  dd      d d d          y )Nr   r   r!   r"   r   )r   r_   r   r]   rA   rB   r;   test_gh3579r    sd    biimAErE"BIIb$;AErE$BCbiimDbD!299R#:4R4#@ArB   c                 n   t        j                  dd      } t        j                  g d      }t	        || j
                        \  }}t        j                  g d      }t        j                  g d      }t        j                  j                  ||       t        j                  j                  ||       y )Nrm   r   r   )r}   r   r   r   r   r   r$   r"   )r   r   r   r}   r   r"   r$   r   )r"   r   r   r   r   r   r}   r$   )r]   r   r_   r`   r   rQ   r   assert_array_equal)rH   r   r   r   rU  rV  s         r;    test_make_blockwise_sorted_slicer    s{    
		!AAHH-.E#E1884DAqXX./FXX./FJJ!!!V,JJ!!!V,rB   z1ignore:Slicing:dask.array.core.PerformanceWarningzsize, chunks))r^  )r!  r   )r^  )%   r   )r	  )7   c                   t         j                  j                         j                  dd| |      }t        j                  t        |            }t        j                  j                         j                  |       ||   }t        ||      }t        ||       t        j                  dt        |            j                         }|j                  d       t        j                  |      }||   }t        ||      }t        ||       y )Nr   r4   r_  r   )r]   r   r   integersr_   r   r   shuffler   r   r|  appendr`   )r`  rQ   rH   r   r   r   s         r;   test_shuffle_slicer    s    
 			((DtF(KAIIc!fEII##E*	%AaAaOIIaQ '')E	LLOHHUOE	%AaAaOrB   c                    t         j                  dt              } t        j                  | d      }t         j                  |      }t        |ddg   t         j                  |       ddg          t        j
                  |      }t        |ddg   t         j                  |       ddg          | j                  dd      } t        j                  | d      }d	t         j                  ff|_	        |d d ddgf   }| d d ddgf   }t        ||       t        j                  | d	      }d	t         j                  t         j                  ff|_	        t        j                  t        d
      5  |d d ddgf    d d d        y # 1 sw Y   y xY w)N   r   )r  r   r   r!   r   )rm   r   r   zArray chunk size or shaper   )r_   r   intr]   r   flatnonzeror   r   r   r   ri   rj   r   )r   r  r9   r8   s       r;   test_unknown_chunks_length_oner    sB   
		#S	!A
--&
)C^^C FfaWor~~a0!R9:^^C FfaWor~~a0!R9:			"bA
--'
*CBFF9%CKQG_FQG}Hfh
--&
)CBFFBFF+,CK	z)D	E A2wJ  s   +F  F	lockTFr   fancyc                    t        j                  t        j                  d      d|| |      }t        j                  t        j	                  d      d|| |      }t        j
                  ||g      }t        ||       y )Nr"   r   )rQ   r   r  r  )r]   r   r_   r   r^   stackr   )r  r   r  a1a2als         r;   test_gh4043r    s]     
rxx{1gDPU	VB	rwwqz!W4u	UB	2r(	Bb"rB   c                    t        j                  dd      j                  d      } t        j                  dd      j                  d      dkD  }| |   j	                         }t        j                  dd      }t        ||       y )Nr   rI   )r   r"   r   r%   r2   )r]   r   r   r_   r   r   )r`   r  actualr8   s       r;   )test_slice_array_3d_with_bool_numpy_arrayr    si    IIa$$Y/E99Q##I.3D4[  "FyyR HfhrB   c                     t         j                  j                  t        d      g d      } t	        j
                  | d      }t        |ddg   | ddg          y )Nrm   )r   r   r   r   r   r   r   r   )r  )r   r   r   r   r}   )r_   mar`   r7   r]   r   r   )r  darrs     r;   test_slice_masked_arraysr    sG    
%%++eAh%=+
>C==V,DdAq6lCAK(rB   c                     t        j                  t        j                  d            } t        j                  d      dg   }t	        | dg   |       y )N)r"   r   r   )r]   r   r_   r   r   )r`   r8   s     r;   test_slice_array_null_dimensionr    s>    MM"((6*+Exx$HeQCj(#rB   c            
        t        j                  dd      } t        t        dd            }| |d d f   }t	        | |       i t        | j                        t        t        |j                        D cg c]  }d|d   v s| c}t        | j                        j                               D ci c]  \  }}|t        ||       c}}t        |j                        k(  sJ y c c}w c c}}w )N)   r   ))r!  r   !   C   r   r   r   r  r	   )
r]   r^   listr7   r   dictr   zipkeysr   )r  r  r9   r   k2s        r;   test_take_sorted_indexerr  #  s    
''*%=
>C5C=!G!_Fc6	
sxx.	  -Cqad1BCSXX##%
2 uQ|O
	 
fkk		 	 	
 D
s   4C&
C&
1C+c                 h   t        j                  dd      } | t        d d      t        d       f   }t        |j                        }t        |D cg c]  }d|d   v s| c}      dk(  sJ t        d |j                         D              sJ t        |t        j                  d	             y c c}w )
Nr   )r   r$   r   r}   r	   r   r%   c              3  R   K   | ]  \  }}d |d   v st        |t               ! yw)r	   r   N)ra   r   ).0r   vs      r;   	<genexpr>z5test_all_none_slices_just_mappings.<locals>.<genexpr>:  s&     Q1yAaD?Pz!U#Qs   '')r}   r   )
r]   r^   r5   r  r   r   allitemsr   r_   )r  r9   r   r   s       r;   "test_all_none_slices_just_mappingsr  4  s    
''(6
*CtQt,-F
v{{
C34a)qt"345;;;Q		QQQQfbggg&' 5s   B/B/c                     t         j                  d      } t        j                  j	                  | dg      }t         j                  dt              }d|dd t        ||   | |          y )Ni     r   r   Ti  iD  )r_   r   r   r`   r   r   rK  r   )rH   r   ibs      r;   "test_minimal_dtype_doesnt_overflowr  >  sY    
		$A			q#		/B	$d	#BBtDMbfaerB   c                    t         j                  g d      } t        j                  | d      }t         j                  j                  ddd      j                  dd      j                  t              }t        j                  |d	      }t        |j                  |   | |          d
}t        j                  t        |      5  |j                  d      j                  |    d d d        t        j                  t        |      5  |j                  d      j                  |    d d d        t        j                  t        |      5  |j                  |d f    d d d        y # 1 sw Y   xY w# 1 sw Y   KxY w# 1 sw Y   y xY w)N)g?g?g333333?r!   r   r   r"   rm   r   r   r   z vindex does not support indexingr   r  )r"   r   )r_   r`   r]   r   r   randintr   rB  r  r   vindexri   rj   r   rechunk)r  r  r  dindexermsgs        r;   test_vindex_with_dask_arrayr  F  s-   
((?
#C==R(Dii1a(00A6==cBG}}WV4Hdkk(#S\2
,C	z	- .V##H-. 
z	- .V##H-. 
z	- &Xt$%& &. .. .& &s$   E"E.E:"E+.E7:Fc                     t        j                  g d      } | g dt        j                  f   }t	        || j                         g dt        j                  f          y )Nr   )TTF)r]   r`   r_   newaxisr   r   )r  rd   s     r;   test_positional_indexer_newaxisr  Z  sC    
((9
C
!2::-
.Cc3;;=!4bjj!@ABrB   shapesr   r   zNot implemented)r   strict)marksc                   | \  }}t        t        j                  d            }t        j                  t        j
                  ||ft              t        j
                  ||ft              g      }t        j                  t        j
                  ||ft              t        j
                  ||ft              g      }d||<   t        j                  dd      }t        ||       y )Nr   )r   r   r   r#   g       @)
r   r_   r^   r]   concatenatefrom_delayedfloatrK  fullr   )r  x_shape
mask_shaper  rH   r  r8   s          r;   $test_boolean_mask_with_unknown_shaper  `  s      !GZ
"''"+
C
OOCz?OOCz?	
	A >>OOC
}DAOOC
}DA	
D AdGwwr3HarB   )r  ztuple[float | int, float | int]returnNone)s
__future__r   rk  rc  ri   dask._task_specr   r   r   dask.delayedr   r  r_   r   
dask.arrayr`   r]   dask.array.chunkr	   dask.array.slicingr
   r   r   r   r   r   r   r   r   r   dask.array.utilsr   r   r<   rC   rR   rY   re   rk   rp   rv   r   r   r   r   r   r   r   r   r   r   markskipr   r   r   r   r   r   r   r   r   r   r   r   r  r  r  parametrizer-  r0  r3  r6  r8  rC  rH  rN  rW  xfailrZ  rn  r\  r5   r   rf  slowro  rs  ru  rx  rz  r}  r  r  r  r  r  r  r  r  filterwarningsr  r  r  r  r  r  r  r  r  r  r  r   paramr  rA   rB   r;   <module>r     s   "    0 0  V!   $   2M`;
)X#L 
	*6&)
"2("& 
 +,( -(.$2@
7
7-@M,&*
B?,D 7%KL% M 8%( 9-# .# ?3, 4, Aq6*( +( Aq6* + W**(6( ) ) ";<xkD(+h-=hPT?UV" =" eAh1b"eBotD& " "8'#I$ @F
$4, Iy#9:# ;#B
	- OPO Q". $/T5M24-0 1 3 0 )$"(&(C 	L 1 19JSW 1 X	
 	VVRL 1 19JSW 1 X	
	+	rB   