
    >ie              
      $   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                            e ed          k     d          d	             Zd
 Zej                            ddd gddgddgddgg          ej                            dg d          d                         Zej                            dg d          d             Zej                            dg d          d             Zej                            deeg          d             Zej                            e ed          k     d          d             Zej                            e ed          k     d          d             Zej                            dddg          ej                            dddg          ej                            dddg          d                                     Zej                            dd d!g          ej                            d"d d#gg          ej                            d$d%d&gd%d'gd(d)gd*d(gg          d+                                     Z dS ),    )annotationsN)parse)	assert_eq	same_keyscupyz6.4.0zBRequires CuPy 6.4.0+ (with https://github.com/cupy/cupy/pull/2418))reasonc                    t                               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        k    sJ t          j        |d          j        t          j        |d          j        k    sJ d S )N)         r
   r   r
   Fchunksasarray   )	minlength   )	r   arrayda
from_arraybincountr   npr   name)xdes      Clib/python3.11/site-packages/dask/array/tests/test_cupy_routines.pytest_bincountr      s    
 	

???##A
a5111A
A###AaQ!,,,---R[a000!44444;qA&&&+r{1/J/J/J/OOOOO;qA&&&+r{1/J/J/J/OOOOOOO    c                    t           j                                                            ddd          } t	          j        | d          }t                               dg          }t	          j        ||d          }t          t          j        |
                                | 
                                d          |d	
           d S )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-BBD=g...DdVA
+aA
&
&
&C
 bk!((**dkkmm!<<<ceTTTTTTr   zshape, axis)r"      r%   r   r
   n)r   r   r
   c                4   t           j                                                            dd|           }t	          j        |t          |           dz            }t          t	          j        |||          t                               |||                     d S )Nr   r"   r   r&   )	r   r*   r+   r,   r   r   lenr   diff)shaper6   r'   r   as        r   	test_diffr=   -   s|     	!!**1b%88A
aUd!2444AbgaD!!499Q4#8#899999r   c                   t                               d          dz   }t          j        |d          }t	          t          j        || d          t                               || d                     t	          t          j        || dg          t                               || dg                     t	          t          j        || ddg          t                               || ddg                     t                               d                              d	d	          }t          j        |d          }t	          t          j        || dd
          t                               || dd
                     t	          t          j        || ddgdgdgdgg
          t                               || ddgdgdgdgg
                     t	          t          j        || dd
          t                               || dd
                     t	          t          j        || dg dg
          t                               || dg dg
                     | dk    rct          j        t                    5  t          j        || t           
                    d                     d d d            d S # 1 swxY w Y   d S d S )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bgaA&&&		!Q	(B(BCCCbgaQC((($))Aq1#)*F*FGGGbgaRG,,,dii1r1gi.N.NOOOB1%%A
a"""AbgaA...		!QQPQ	0R0RSSS
11sQC!qc&:;;;		!QQ!qcA3(<	==   bgaA...		!QQPQ	0R0RSSS
11|||n555		!QQ	77  
 	1uu ]:&& 	6 	6GAq$**V"4"45555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 u   ;0J88J<?J<c                   t                               d          dz   }t          j        |d          }t	          t          j        || d          t                               || d                     t	          t          j        || dg          t                               || dg                     t	          t          j        || ddg          t                               || ddg                     t                               d                              d	d	          }t          j        |d          }t	          t          j        || dd
          t                               || dd
                     t	          t          j        || ddgdgdgdgg
          t                               || ddgdgdgdgg
                     t	          t          j        || dd
          t                               || dd
                     t	          t          j        || dg dg
          t                               || dg dg
                     | dk    rct          j        t                    5  t          j        || t           
                    d                     d d d            d S # 1 swxY w Y   d S d S )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bga1%%%tyyAay'@'@AAAbgaA3'''1a)D)DEEEbgaB7+++TYYq!RGY-L-LMMMB1%%A
a"""Abga1---tyyAAay/P/PQQQ
11qcA3aS%9:::		!QQaS1#s';	<<   bga1---tyyAAay/P/PQQQ
11lll^444		!QQ~	66  
 	1uu]:&& 	5 	5 GAqF!3!34444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 urM   	bins_typec           
     &   t                               g d          }|                     g d          }dD ]s}dD ]n}t          j        ||          }t                               |          }t	          t          j        |||          t          j        |||          d           ott           j                                                            d	
          }| j                                                            d
          }|	                                 dD ]q}dD ]l}t          j        ||          }t                               |          }t	          t          j        |||          t          j        |||                     mrd S )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   s   

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

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

4((IAt5111Ay666   	 r   c            	     V   t           j                                                            d          } dD ]}t	          j        | ||fd          }t          t	          j        |          t          j        |                      t          t	          j	        |          t          j	        |                      dD ]n}t          t	          j        ||          t          j        | |                     t          t	          j	        ||          t          j	        | |                     od S )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 5]1sCj%888"'"++rwqzz***"'"++rwqzz***1 	5 	5Abgb!nnbgamm444bgb!nnbgamm4444	55 5r   c                 j   t           j                                                            ddd          } t	          j        | dd          }t          t	          j        |          t          j        |                      t          t	          j	        |          t          j	        |                      d S )Nr      )   #   )r   r   Fr   )
r   r*   r+   r,   r   r   r   rd   r   re   )rf   rh   s     r    test_tril_triu_non_square_arraysro      s    
 	!!**1b(;;A	q	7	7	7Bbgbkk271::&&&bgbkk271::&&&&&r   return_indexFTreturn_inversereturn_countsc                l    t                     t                              g d          t          j        d           fd}t                                                    r>t          j        t                    5   |             d d d            d S # 1 swxY w Y   d S d S )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          ||           d S )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   i$$V$$i$$V$$L.-@AA 	c4<00000c28,,,,,&C&C3xx3s88#### 	-C%%%AF9A,,,,SMM 	$ 	$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+.B+seed   i  z	low, highr"   zshape, chunks)r"   r8   rt   )rA   r   )r    r
   r_   c                   t           j                            |           }|                    |||          }t	          j        ||          }t          j        |          }t	          j        |          }	t          |	|           d S )Nr#   r&   )	r   r*   r+   r,   r   r   r   rv   r   )
r   lowhighr;   r   rngr<   r   r}   r~   s
             r   test_unique_randr      st     +
!
!$
'
'CS$U++A
a'''A
)A,,C
)A,,Cc3r   )!
__future__r   numpyr   rG   packaging.versionr   parse_version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   " " " " " "      4 4 4 4 4 4[_
       1 1 1 1 1 1 1 1v6""}T-.. ==)))O   P P	 PU U U Aq)L!+<|R>PQ  iii((: : )(	 
: iii((6 6 )(66 iii((5 5 )(56 r4j11  214 ==)))O   
5 
5	 
5 ==)))O   ' '	 ' %77)E4=995$-88"" "" 98 :9 87""J "c++2wi00T]UDMFF#3h5GH  	  10 ,+  r   