
    >ie;              	      |   d dl mZ d dlZ ej        d           d dlZd dlZd dlmZ	 d dl
mZ d dlmZ d dlmZmZ d dlmZ  ej        e	j        j        e	j        j        g          d	             Zd
 Zej                            dddej        j        e	j                            ej        j                  ge          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,ej                            dg de          d             Z-d  Z.ej                            dg de          d!             Z/ej                            dg de          d"             Z0ej        1                     e2ed#           d$%          d&             Z3d' Z4d( Z5d) Z6d* Z7d+ Z8d, Z9d- Z:d. Z;d/ Z<dS )0    )annotationsNnumpy)Array)	assert_eq)_dumps_loads)	key_split)paramsc                    | j         S N)param)requests    <lib/python3.11/site-packages/dask/array/tests/test_random.pygenerator_classr      s
    =    c                     | d          }|                     dddd          }t          ||            | d          }|                     dddd          }t          ||           d S N   
      sizechunks)normalr   r   statexys       r   test_generatorsr      sp    OAERA..AaOOOOAERA..AaOOOOOr   sd*   )idsc                    t           j                            |           }t          |t           j        j                  sJ d S )N)seed)darandomdefault_rng
isinstance	Generator)r    rngs     r   test_default_rngr+       s=     )

R

(
(Cc29.///////r   c                    | d          }|                     dddd          } | d          }|                     dddd          }|                    d          |                    d          k                                    sJ d S )Nr   r   r      r   	processes)	scheduler)r   computeallr   s       r   test_concurrencyr2   (   s    OAERA..AOAERA..AIII,,		K	0P0PPUUWWWWWWWr   c                8    d | d          j         j        v sJ d S )Nmeanr   )r   __doc__r   s    r   test_doc_randomstater7   1   s)    __Q''.6666666r   c                     t           j                                        } dt          |           v sJ dt	          |           v sJ d S )Nr)   )r%   r&   r'   strreprr   s    r   test_doc_generatorr<   5   sI    
	A#a&&    $q''!!!!!!r   c                     | d          }|                     dddd          }t          t          |                    }t          ||           d S r   )r   r   r   r   r   s       r   test_serializabilityr>   ;   sN    OAERA..AvayyAaOOOOOr   c                     | d                               dd          } | d                               dd          }t          |j                  t          |j                  k    sJ t          ||           d S )Nr!     r   r   )r   setdaskr   )r   	samples_1	samples_2s      r   %test_determinisim_through_dask_valuesrE   D   s    ##**R*@@I##**R*@@Iy~#in"5"55555i#####r   c           	         | d          } | d          }t          |                    dd          j                  t          |                    dd          j                  k    sJ t          |                    dddd	          j                  t          |                    dddd	          j                  k    sJ d S )
Nr!   )d   rG   r   r   r   rG   g      @g      @r   )r   locscaler   )sortedr   rB   )r   state1state2s      r   test_generator_consistent_namesrN   L   s    _R  F_R  F&--Z-AAFGG6:h77<L L     3Cs2>>C 	3Cs2FFK	L	LM M M M M Mr   c                b    |                                  dd          }t          |t                    sJ t          |j        t                    r|j        sJ |j        dk    sJ |j        dk    sJ t          t          j	        |          j
                  }t          |          dk    sJ d S )NrH   r   r   r   rP   rP   Z   )r&   r(   r   namer9   shaper   rA   nparrayflatlenr   ar   s      r   test_randomr\   W   s      & 99Aaafc""-qv---7h8'''''BHQKKAq66B;;;;;;r   c                    |                                  ddd          }t          |t                    sJ t          |j        t                    r|j        sJ |j        dk    sJ |j        dk    sJ t          j        |          }d|	                                cxk     rdk     sn J t          |j                  }t          |          dk    sJ d S )	Nr@   rH   rP   rQ   rR   r   順 rS   )exponentialr(   r   rT   r9   rU   r   rV   rW   r4   rA   rX   rY   )r   r[   r   r   s       r   !test_parametrized_random_functionr`   c   s    %%dHV%DDAaafc""-qv---7h8'''''
A!!!!6!!!!!!AFAq66B;;;;;;r   c                     |                                  dddd          }t          |t                    sJ t          j        |          }d|                                cxk     rdk     sn J d S )Ng      $@g?rH   rP   )rI   rJ   r   r         )r   r(   r   rV   rW   r4   rZ   s      r   test_kwargsrd   q   s|      T8F SSAa
Aqvvxx"r   c                     |                                  dd          } |                                  dd          }|j        |j        k    sJ d S )NrH   rP   rQ   )r&   rT   )r   r[   bs      r   test_unique_namesrg   x   s]      & 99A  & 99A6QVr   c                    d |             j         j        v sJ d |             j         j        v sJ d |             j        j        v sJ d S )Nr_   z# doctest: +SKIP)r_   r5   __name__r   r6   s    r   	test_docsrj      se    OO--9AAAAAOO--9BBBBB!2!2!9!AAAAAAAr   c                H     |                                  dddd           d S )Nr   r   )@B rl   )r^   r^   rQ   )r   r6   s    r   %test_can_make_really_big_random_arrayrm      s/    OR$6?OPPPPPr   c                    t           j                            d           t           j                            dd          } t           j                            dd          }t           j                            d           t           j                            dd          }t           j                            dd          }t	          | |           t	          ||           d S )N{   r   r   r   )r%   r&   r$   r   r   )r   r   r[   rf   s       r   test_random_seedrp      s    INN3
	b++A
	b++AINN3
	b++A
	b++AaOOOaOOOOOr   c                &    | d                               dd          } | d                               dd          d d         } | d                               dd          d d         }t          ||           t          ||           d S )Nro      rQ   rG      )r&   r   )r   x1x2x3s       r   test_consistent_across_sizesrw      s    				$	$R	$	3	3B				$	$S	$	4	4SbS	9B				$	$S	$	4	4SbS	9Bb"b"r   sz)Nr   )r-   r-   c                   t           j                            dd| d                                           t           j                            dd| d                                           t           j                            d| d                                           t           j                            d| d                                           t           j                            dd| d                                           t           j                            dd| d                                           t           j        	                    d| d                                           t           j        
                    d| d                                           t           j                            ddd| d                                           t           j                            | d                                           t           j                            | d                                           t           j                            | d                                           t           j                            d| d                                           t           j                            dd	gd
z  | d                                           t           j                            dd| d                                           t           j                            dd| d                                           t           j                            ddd| d                                           t           j                            dd| d                                           t           j                            d| d                                           t           j                            | d                                           t           j                            d| d                                           t           j                            | d                                           t           j                            ddd| d                                           t           j                            | d                                           t           j                            dd| d                                           t           j                            dd| d                                           t           j                            d| d                                           t           j                            d| d                                           t           j                            | d                                           t           j                             | d                                           t           j        !                    d| d                                           t           j        "                    | d                                           t           j        #                    d| d                                           d S )Nr   r-      r   r         ?r   rr   UUUUUU?   )$r%   r&   betar0   binomial	chisquarer_   fgamma	geometricgumbelhypergeometriclaplacelogistic	lognormal	logseriesmultinomialnegative_binomialnoncentral_chisquarenoncentral_fr   paretopoissonpowerrayleigh
triangularuniformvonmiseswaldweibullzipfstandard_cauchystandard_exponentialstandard_gammastandard_normal
standard_trx   s    r   test_random_allr      sS   INN1abN++33555Ir3R22::<<<I1--55777I!"Q//77999IKK12aK((00222IOOAqr!O,,44666I1--55777IQR**22444IQ12a88@@BBBI2a((00222IBq))11333IR**22444I"Q//77999I"wi!m"Q??GGIIII3R::BBDDDI""1ab";;CCEEEI1aA66>>@@@IQ1--55777IQR**22444I2a((00222IOOABqO))11333IBq))11333IAqr!44<<>>>I2a((00222Iq!"Q//77999INN1abN++33555Iab++33555INN12aN((00222I2a0088:::I""1"55==???IQR22::<<<I2a0088:::IA..6688888r   c                    t           j                            ddd                                           t	          j        t                    5  t           j                            ddd                                           d d d            n# 1 swxY w Y   t           j                            dd                                           d S )Nr   r   rz   r   rQ   )	r%   r&   randintr0   pytestraisesDeprecationWarningrandom_integersrandom_sample r   r   test_RandomState_only_funcsr      s    Ibq++33555	)	*	* B B
	!!"1Q!77??AAAB B B B B B B B B B B B B B BIBq))1133333s   5BBBc                &   t           j                                                            dd| d                                           t           j                                                            g dd| d                                           d S )Nr      rz   )highr   r   )   rb      r}   r   )r%   r&   r'   integersr0   multivariate_hypergeometricr   s    r   test_Generator_only_funcsr      s{    I$$QRb$CCKKMMMI77

ABq 8  giiiiir   c                Z   d } | |             j         dd|d            | |             j        dd|d            | |             j        d|d            | |             j        d|d            | |             j        dd|d            | |             j        dd|d            | |             j        d|d            | |             j        d|d            | |             j        ddd|d            | |             j	        |d            | |             j
        |d            | |             j        |d            | |             j        d|d            | |             j        d	d
gdz  |d            | |             j        dd|d            | |             j        dd|d            | |             j        ddd|d            | |             j        dd|d            | |             j        d|d            | |             j        |d            | |             j        d|d            | |             j        |d            | |             j        ddd|d            | |             j        |d            | |             j        dd|d            | |             j        dd|d            | |             j        d|d            | |             j        d|d            | |             j        |d            | |             j        |d            | |             j        d|d            | |             j        |d            | |             j         d|d           d S )Nc                ~     | |i |}t          |j                  t          j        k    sJ t	          ||           d S r   )type_metarV   ndarrayr   )funcargskwargsr[   s       r   rnd_testz4test_random_all_with_class_methods.<locals>.rnd_test   sB    D$!&!!AG}}
****!Qr   r   r-   rz   r   r   r{   r   rr   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   rx   r   s      r   "test_random_all_with_class_methodsr      s     
 H__#Q1====H__'Sr!DDDDH__(!"Q????H__*ABqAAAAH__ !QR::::H__$aA>>>>H__(!"Q????H__%qr!<<<<H__-q!QRJJJJH__&R::::H__'b;;;;H__(r!<<<<H__(#BqAAAAH__*B	ABqQQQQH__0!Sr!LLLLH__3Q1MMMMH__+Q12aHHHHH__%q!"Q????H__%qr!<<<<H__&R::::H__$ab;;;;H__'b;;;;H__)1aAFFFFH__&R::::H__'ABqAAAAH__#Q1====H__&1====H__#QR::::H__.RBBBBH__3"QGGGGH__-qr!DDDDH__.RBBBBH__)12a@@@@@@r   broadcast_toz)requires numpy 1.10 method "broadcast_to")reasonc                   t          j        d                              d          }t          j        dd          } |                                 |d                                          j        dk    sJ ||fD ]X} |                                 |dd          }|j        |j        k    sJ |                                j        |j        k    sJ Y |                                 |dd          }t          |j
                                      t          |j
                            sJ  |                                 t          j        d          t          j        dd          d                                          j        dk    sJ  |                                 t          j        d          t          j        dd          dd	                                          j        dk    sJ t          j        t                    5   |                                 |t          j        d
          dd           d d d            n# 1 swxY w Y   t          j        d          t          j        dd          dfD ]Z} |                                 d|z  dd          }d|                                                                cxk     rdk     sn J [t          j        d          dz  }t          j        |d          } |                                 |dd          }d|                                                                |                                z  cxk     rdk     sn J d S )Nr}   r-   rz   )r-   rz   r   rz   rQ   r-   )r   r   )r-   r-   rz   r   )rJ   rI   r   r   )rz   r   r   rG   )2   r   r@   g{Gz?i   i  r   )r   r   g?g333333?)rV   arangereshaper%   onesr   r0   rU   r   rA   rB   issubsetr   r   
ValueErrorr4   
from_array)r   arrdaonesr   r   or[   zs           r   test_array_broadcastingr     s    )A,,

v
&
&CWYq)))F?$$S$33;;==CvMMMM6] , ,O$$Q!$44w!'!!!!yy{{ AG+++++  1 55Av{$$S[[11111?##
9===i $  gii# # # # ?##gfooGIi000	 $  
 gii& & & & 
z	"	" Q Q  bgfooIa PPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q gcllBGC666: / /O$$TAXtE$BBQVVXX%%''....$....... 		"A
a%%%A  D 77A!!##affhh.444444444444s   4IIIc                   dD ]\  }} |                                  ddgdz  ||          }t          j                             ddgdz  |          }|j        |j        cxk    r|                                j        k    sn J d S )N))r   rz   ))r   r   r   rr   r|   r}   r   r   )r   rV   r&   rU   r0   )r   r   r   r   r   s        r   test_multinomialr   *  s    2 7 7fO))"wi!m$v)VVI!!"wi!m$!??w!'6666QYY[[%66666666	7 7r   c                	   t           j        j        t          j        j        t           j        j        t          j        j        i} ||                                          dd          j        }d}d} |                                 d||          }|j        |k    sJ |j        |k    sJ |                                }|j        |k    sJ |j        |k    sJ g d}t          j	        |d	
          }t          j
        |d          }	|||	fD ]}
 |                                 |
||          }|                                }t          j        |
          j        }|j        |k    sJ |j        |k    sJ t          t          j        |                                        |          sJ t          j	        g d          }t          j
        |d          }|	|f||ffD ]\  }
} |                                 |
|||          }|                                }|j        |j        k    sJ |j        |j        k    sJ t          t          j        |                                        |dd                    sJ  ||                                          ddt          j	        dg                    j        } |                                 d|||          }|                                }|j        |k    sJ |j        |k    sJ d|d d d f         d f||d d d f         f||d d         fd|fdg dfg}|D ]W\  }
}t          j        t"                    5   |                                 |
|||           d d d            n# 1 swxY w Y   Xt          j        t$                    5   |                                 |	||d           d d d            n# 1 swxY w Y   t          j        t"                    5  t           j                                                            |	||d           d d d            n# 1 swxY w Y    |                                 |	|	j        d         dd          }|                                }t'          |          t'          t          j        |                    k    sJ d S )Nr   r   r   )r   rz   r   rz   r   )r   rz   r      	   f8dtyper-   rQ   )r   皙?r   333333?r   )r   r   p)r   r   r   )N)r   r   r   F)r   r   replace)r   r   axisr   r   )r%   r&   RandomStaterV   r'   choicer   rU   r0   rW   r   asarrayrA   uniquer   r   r   r   NotImplementedErrorrY   )r   np_generatornp_dtyper   r   r   respy_anp_ada_ar[   expected_dtypenp_pda_pr   errss                   r   test_choicer   2  s   
	ry4
	ry4L -|O,..55ab5AAGHDF  f ==A7h7d????
))++C9    9??D8D%%%D=a(((DD$ 2 2O$$QT&$AAiikkA,w.((((yN****29S>>""++D1111118+++,,D=a(((Dd|, 6 61O$$QT&A$FFiikkw$*$$$$yDJ&&&&29S>>""++DH555555,|O,..55abBHaSMM5RRXH  f EEA
))++C7h9     		aaag	tAAAtG}	tCRCy	
D		
OOOD  G G1]:&& 	G 	GO$$QT&A$FFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 
*	+	+ P P  D OOOP P P P P P P P P P P P P P P 
z	"	" O O
	&&t$vA&NNNO O O O O O O O O O O O O O O 	  DJqM"e TTA
))++Cs88s29S>>********s6   "N

N	N	/"OO!$O!6QQ
Qc                 4   t           j                            ddi          5  t          j                            dd          } | j        dk    sJ t          j                            dd          }|j        dk    sJ 	 d d d            d S # 1 swxY w Y   d S )	Narray.chunk-size128MiB'  r   )r   autorQ   ))r   )  r   r   r   r   iO  r   )   r   i  r   )rB   configrA   r%   r&   r   )r   r   s     r    test_create_with_auto_dimensionsr   w  s    	,h7	8	8 5 5I^LAAx<<<<<I^F;;x4444445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   ABBBc                     t           j                            dddd          j        } |                     d          sJ t          t          |                     dk     sJ d S )Nr   r   )r@   )i  r   r   r   )r%   r&   r   rT   
startswithrY   r	   )rT   s    r   
test_namesr     s`    9Aqwv>>CD??8$$$$$y"$$$$$$r   c                   t          j        dd          } |                                 |          }|j        |j        k    sJ |j        |j        k    sJ |                                  | d          } | d          }|                    |          }|                    |          }t          ||            |                                 d          }|j        dk    sJ d S )Nrc   rz   rQ   r   rG   )rG   )r%   r   permutationrU   r   r0   r   )r   r   r   r[   rf   r1r2s          r   test_permutationr     s    
	"QA%%a((A7ag7agIIKKKAA	
q		B	
q		Bb"%%c**A7fr   c                    t           j                            ddi          5   |                                 d          }d|j        cxk     rdk     sn J 	 d d d            d S # 1 swxY w Y   d S )Nr   z50 MiBr   r       )rB   r   rA   r&   npartitions)r   r   s     r   test_auto_chunksr    s    	,h7	8	8 & &O$$^441=%%%%2%%%%%%%& & & & & & & & & & & & & & & & & &s   4A$$A(+A(c                     t           j                            dddd          } t          | |            | j        dk    sJ |                                 j        dk    sJ d S )Nr      r   uint8r   r   )r%   r&   r   r   r   r0   r;   s    r   test_randint_dtyper    sb    
	!Sr99AaOOO7g99;;''''''r   c                    t          j        t                    5 } |                                 dd           d d d            n# 1 swxY w Y   dt	          |j                  v sJ d S )Nr   float64r  r   )r   r   	Exceptionr   r9   value)r   infos     r   test_raises_bad_kwargr    s    	y	!	! GT))uI)FFFG G G G G G G G G G G G G G G c$*oo%%%%%%s    AA
A
c                    t          j        d          } t          j                            | j        j                  }|                    dt          j                  }|j        t          j        k    sJ t          j        	                    | j        	                                          }|                    dt          j                  }|j        t          j        k    sJ d S )Ncupy)r   )r   r   r   )
r   importorskipr%   r&   r   r   rV   float32r   r'   )r  rsr   s      r   test_randomstate_kwargsr    s    v&&D			4;+B		C	CB
7"*55A7bj    			t{6688	9	9B
7"*55A7bj      r   )=
__future__r   r   r  r   rV   rB   
dask.arrayrW   r%   dask.array.corer   dask.array.utilsr   dask.multiprocessingr   r   
dask.utilsr	   fixturer&   r   r'   r   r   markparametrizePCG64r)   r   r+   r2   r7   r<   r>   rE   rN   r\   r`   rd   rg   rj   rm   rp   rw   r   r   r   r   skipifhasattrr   r   r   r   r   r   r  r  r  r  r   r   r   <module>r     s   " " " " " "   G               ! ! ! ! ! ! & & & & & & / / / / / / / /             	-ry/DEFFF  GF   4RY_bi&9&9")/&J&J
KQU   0 0 0
X X X7 7 7" " "  $ $ $M M M	 	 	      B B BQ Q Q
 
 
   000d;;&9 &9 <;&9R4 4 4 000d;;  <; 000d;;&A &A <;&AR N###,W   #5 #5 #5L7 7 7B+ B+ B+J5 5 5% % %  && & &( ( (& & &	! 	! 	! 	! 	!r   