
    bi              
         d dl mZ d dlZd dlZd dlmZ ej                  j                  Z	d dl
mZ d dlmZmZ  ej                   d      Z eej$                        Zej                  j)                  e ed      k  d      d	        Zd
 Zej                  j/                  ddd gddgddgddgg      ej                  j/                  dg d      d               Zej                  j/                  dg d      d        Zej                  j/                  dg d      d        Zej                  j/                  deeg      d        Zej                  j)                  e ed      k  d      d        Zej                  j)                  e ed      k  d      d        Zej                  j/                  dddg      ej                  j/                  dddg      ej                  j/                  dddg      d                      Zej                  j/                  dd d!g      ej                  j/                  d"d d#gg      ej                  j/                  d$d%d&gd%d'gd(d)gd*d(gg      d+                      Zy),    )annotationsN)Version)	assert_eq	same_keyscupyz6.4.0zBRequires CuPy 6.4.0+ (with https://github.com/cupy/cupy/pull/2418))reasonc                 ,   t         j                  g d      } t        j                  | dd      }t        j                  |d      }t        |t        j                  | d             t        t        j                  |d      |      sJ t        j                  |d      j                  t        j                  |d      j                  k7  sJ t        j                  |d      j                  t        j                  |d      j                  k(  sJ y )N)         r
   r   r
   Fchunksasarray   )	minlength   )	r   arrayda
from_arraybincountr   npr   name)xdes      ^/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/array/tests/test_cupy_routines.pytest_bincountr      s    
 	

?#A
a51A
A#AaQ!,-R[[a0!444;;qA&++r{{1/J/O/OOOO;;qA&++r{{1/J/O/OOOO    c                 n   t         j                  j                         j                  ddd      } t	        j
                  | d      }t         j                  dg      }t	        j                  ||d      }t        t        j                  |j                         | j                         d      |d	
       y )Nr      
   r"   size)   r   r   T)axisF
check_type)r   randomdefault_rngintegersr   r   r   compressr   r   tolist)carrdarrcress       r   test_compressr3      s    ;;""$--a-BD==g.DdVA
++aA
&C
 bkk!((*dkkm!<ceTr   zshape, axis)r"      r%   r   r
   n)r   r   r
   c                   t         j                  j                         j                  dd|       }t	        j
                  |t        |       dz        }t        t	        j                  |||      t         j                  |||             y )Nr   r"   r   r&   )	r   r*   r+   r,   r   r   lenr   diff)shaper6   r'   r   as        r   	test_diffr=   -   sb     	!**1b%8A
aUd!24AbggaD!499Q4#89r   c                   t         j                  d      dz   }t        j                  |d      }t	        t        j
                  || d      t         j                  || d             t	        t        j
                  || dg      t         j                  || dg             t	        t        j
                  || ddg      t         j                  || ddg             t         j                  d      j                  d	d	      }t        j                  |d      }t	        t        j
                  || dd
      t         j                  || dd
             t	        t        j
                  || ddgdgdgdgg
      t         j                  || ddgdgdgdgg
             t	        t        j
                  || dd
      t         j                  || dd
             t	        t        j
                  || dg dg
      t         j                  || dg dg
             | dkD  rNt        j                  t              5  t        j
                  || t         j                  d             d d d        y y # 1 sw Y   y xY w)Nr   r   r
   r&   r   )prependr5         )r'   r?   r   r   r   r   r    r    r   aranger   r   r   r:   reshapepytestraises
ValueErrorzerosr6   r   r<   s      r   test_diff_prependrL   9   s   AA
a"AbggaA&		!Q	(BCbggaQC($))Aq1#)*FGbggaRG,dii1r1gi.NOB1%A
a"AbggaA.		!QQPQ	0RS
11sQC!qc&:;		!QQ!qcA3(<	= bggaA.		!QQPQ	0RS
11|n5		!QQ	7
 	1u ]]:& 	6GGAq$**V"45	6 	6 	6 	6   6,I,,I5c                   t         j                  d      dz   }t        j                  |d      }t	        t        j
                  || d      t         j                  || d             t	        t        j
                  || dg      t         j                  || dg             t	        t        j
                  || ddg      t         j                  || ddg             t         j                  d      j                  d	d	      }t        j                  |d      }t	        t        j
                  || dd
      t         j                  || dd
             t	        t        j
                  || ddgdgdgdgg
      t         j                  || ddgdgdgdgg
             t	        t        j
                  || dd
      t         j                  || dd
             t	        t        j
                  || dg dg
      t         j                  || dg dg
             | dkD  rNt        j                  t              5  t        j
                  || t         j                  d             d d d        y y # 1 sw Y   y xY w)Nr   r   r
   r&   r   )appendr5   r@   rA   )r'   rO   rB   rC   rD   rK   s      r   test_diff_appendrP   U   s   AA
a"Abgga1%tyyAay'@AbggaA3'1a)DEbggaB7+TYYq!RGY-LMB1%A
a"Abgga1-tyyAAay/PQ
11qcA3aS%9:		!QQaS1#s';	< bgga1-tyyAAay/PQ
11l^4		!QQ~	6
 	1u]]:& 	5 GGAqF!34	5 	5 	5 	5rM   	bins_typec           
        t         j                  g d      }| j                  g d      }dD ]o  }dD ]h  }t        j                  ||      }t         j                  |      }t	        t        j
                  |||      t        j
                  |||      d       j q t         j                  j                         j                  d	
      }| j                  j                         j                  d
      }|j                          dD ]m  }dD ]f  }t        j                  ||      }t         j                  |      }t	        t        j
                  |||      t        j
                  |||             h o y )N)r
   rA   r   r   r   )r   r
   r    rA   r   )r
   rA   )FTr&   )rightFr(   )d   rT   r#      )r!   )r"   r%   )rU      )W   6   )
r   r   r   r   r   digitizer   r*   r+   sort)rQ   r   binsr   rS   r   	bins_cupys          r   test_digitizer]   q   s6   

?#A???+D " 	Ea/A

4(IAt51Ay6 	 	!((j(9A'')00b09DIIK: " 	Ea/A

4(IAt51Ay6	r   c            	     F   t         j                  j                         j                  d      } dD ]  }t	        j
                  | ||fd      }t        t	        j                  |      t        j                  |              t        t	        j                  |      t        j                  |              dD ]j  }t        t	        j                  ||      t        j                  | |             t        t	        j                  ||      t        j                  | |             l  y )Nr%   r%   )r   rA   F)r   )iiir5   r            )
r   r*   r+   standard_normalr   r   r   triur   tril)AchkdAks       r   test_tril_triurj      s    
 	!11(;A 5]]1sCj%8"''"+rwwqz*"''"+rwwqz*1 	5Abggb!nbggam4bggb!nbggam4	55r   c                 Z   t         j                  j                         j                  ddd      } t	        j
                  | dd      }t        t	        j                  |      t        j                  |              t        t	        j                  |      t        j                  |              y )Nr      )   #   )r   r   Fr   )
r   r*   r+   r,   r   r   r   rd   r   re   )rf   rh   s     r    test_tril_triu_non_square_arraysro      sk    
 	!**1b(;A	q	7Bbggbk2771:&bggbk2771:&r   return_indexFTreturn_inversereturn_countsc                :    t               t        j                  g d      t        j                  d       fd}t        j                               r*t        j                  t              5   |        d d d        y y # 1 sw Y   y xY w)N)rp   rq   rr   )r   r
   rA   rA   r   r
   r    r&   c                    t        j                  fi } t        j                  fi }t        	
g      s>t	        | t
        j                        sJ t	        |t        j                        sJ | f} |f}t        |       t        |      k(  sJ 
r-dt        	      z   }j                  f||   j                  k(  sJ t        | |      D ]  \  }}t        ||        y )Nr   )r   uniquer   any
isinstancer   ndarrayArrayr9   intr$   r;   zipr   )r_ar_die_r_ae_r_dr<   r   kwargsrr   rp   rq   s        r   _test_unique_kwargsz/test_unique_kwargs.<locals>._test_unique_kwargs   s    ii$V$ii$V$L.-@Ac4<<000c288,,,&C&C3x3s8###C%%AFF9A,,,SM 	$LE5eU#	$r   )
dictr   r   r   r   rw   valuesrG   rH   rI   )rp   rq   rr   r   r<   r   r   s   ``` @@@r   test_unique_kwargsr      s     !%#F 	

%&A
a%A$ $, 6==?]]:& 	"!	" 	" 	" 	"s   ?BBseed   i  z	low, highr"   zshape, chunks)r"   r8   rt   )rA   r   )r    r
   r_   c                   t         j                  j                  |       }|j                  |||      }t	        j
                  ||      }t        j                  |      }t	        j                  |      }	t        |	|       y )Nr#   r&   )	r   r*   r+   r,   r   r   r   rv   r   )
r   lowhighr;   r   rngr<   r   r}   r~   s
             r   test_unique_randr      s`     ++
!
!$
'CS$U+A
a'A
))A,C
))A,Cc3r   ) 
__future__r   numpyr   rG   packaging.versionr   markgpu
pytestmark
dask.arrayr   r   dask.array.utilsr   r   importorskipr   __version__cupy_versionskipifr   r3   parametrizer=   rL   rP   r]   rj   ro   r   r    r   r   <module>r      s   "   %[[__
  1v6"t''( 77##O  P	PU Aq)L!+<|R>PQ i(: )	
: i(6 )66 i(5 )56 r4j1 24 77##O  
5	
5 77##O  '	' %7)E4=95$-8"" 9 : 8""J "c+2wi0T]UDMFF#3h5GH	 1 ,r   