U
    ¸mœdQ ã                   @   sê   d dl Z d dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZmZmZ d dlmZ d dlZG dd„ dƒZG dd„ dƒZG dd	„ d	ƒZG d
d„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZejjedd�G dd„ dƒƒZG dd„ dƒZdS )é    N)	Úassert_Úassert_raisesÚassert_equalÚassert_warnsÚassert_no_warningsÚassert_array_equalÚassert_array_almost_equalÚsuppress_warningsÚIS_WASM)Úrandomc                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestSeedc                 C   s<   t j d¡}t| d¡dƒ t j d¡}t| d¡dƒ d S )Nr   éè  i¬  ì   ÿÿ i£  )Únpr   ÚRandomStater   Úrandint©ÚselfÚs© r   úW/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numpy/random/tests/test_random.pyÚtest_scalar   s    zTestSeed.test_scalarc                 C   s‚   t j tdƒ¡}t| d¡dƒ t j t  d¡¡}t| d¡dƒ t j dg¡}t| d¡dƒ t j dg¡}t| d¡dƒ d S )Né
   r   iÔ  r   iÍ  r   i	  )r   r   r   Úranger   r   Úaranger   r   r   r   Ú
test_array   s    zTestSeed.test_arrayc                 C   s$   t ttjjdƒ t ttjjdƒ d S )Nç      à¿éÿÿÿÿ©r   Ú	TypeErrorr   r   r   Ú
ValueError©r   r   r   r   Útest_invalid_scalar    s    zTestSeed.test_invalid_scalarc                 C   sf   t ttjjdgƒ t ttjjdgƒ t ttjjdgƒ t ttjjdddgƒ t ttjjdddgƒ d S )Nr   r   l        é   é   éþÿÿÿr   r!   r   r   r   Útest_invalid_array%   s
    zTestSeed.test_invalid_arrayc                 C   sX   t ttjjtjg tjd�ƒ t ttjjdddggƒ t ttjjdddgdddggƒ d S )N©Údtyper#   r$   é   é   é   é   )r   r    r   r   r   ÚarrayÚint64r!   r   r   r   Útest_invalid_array_shape-   s    
ÿÿz!TestSeed.test_invalid_array_shapeN)Ú__name__Ú
__module__Ú__qualname__r   r   r"   r&   r/   r   r   r   r   r      s
   
r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestBinomialc                 C   sB   t jddd�}dD ]*}tt d|¡dkƒ tt ||¡|ƒ qd S )Nr$   Úintr'   )r   ç      à?r#   r   )r   Úzerosr   r   Úbinomialr   )r   r6   Úpr   r   r   Útest_n_zero7   s    zTestBinomial.test_n_zeroc                 C   s   t ttjdtjƒ d S )Nr#   )r   r    r   r7   r   Únanr!   r   r   r   Útest_p_is_nan@   s    zTestBinomial.test_p_is_nanN)r0   r1   r2   r9   r;   r   r   r   r   r3   6   s   	r3   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestMultinomialc                 C   s   t  dddg¡ d S )Néd   çš™™™™™É?çš™™™™™é?©r   Úmultinomialr!   r   r   r   Ú
test_basicF   s    zTestMultinomial.test_basicc                 C   s   t  ddddddg¡ d S )Nr=   r>   r?   ç        r@   r!   r   r   r   Útest_zero_probabilityI   s    z%TestMultinomial.test_zero_probabilityc                 C   sZ   t dt dd¡  kodk n  ƒ t ddd¡}t t d|k¡ƒ t t |dk ¡ƒ d S )Néûÿÿÿr   r+   )r   r   r   r   Úall)r   Úxr   r   r   Útest_int_negative_intervalL   s    $z*TestMultinomial.test_int_negative_intervalc                 C   sÐ   ddg}t tj d|t d¡¡jdƒ t tj d|t d¡¡jdƒ t tj d|t d¡¡jdƒ t tj d|ddg¡jdƒ t tj d|d¡jdƒ t tj d|t d¡¡jdƒ tttjjd|t	dƒƒ d S )Nr5   r#   ©r#   r$   r$   ©r$   r$   r$   ©r$   r$   )
r   r   r   rA   Úuint32Úshaper-   r   r   Úfloat©r   r8   r   r   r   Ú	test_sizeR   s    ÿÿzTestMultinomial.test_sizec              	   C   s€   t ttjjdddggƒ t ttjjddgdggƒ t ttjjddgdggdgdgggƒ t ttjjdt ddgddgg¡ƒ d S )Nr   r   r#   )r   r    r   r   rA   r-   r!   r   r   r   Útest_multidimensional_pvals`   s    &z+TestMultinomial.test_multidimensional_pvalsN)r0   r1   r2   rB   rD   rH   rP   rQ   r   r   r   r   r<   E   s
   r<   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestSetStatec                 C   s$   d| _ t | j ¡| _| j ¡ | _d S ©NiÒ–I)Úseedr   r   ÚprngÚ	get_stateÚstater!   r   r   r   Úsetup_methodh   s    zTestSetState.setup_methodc                 C   s<   | j  d¡}| j  | j¡ | j  d¡}tt ||k¡ƒ d S )Né   )rU   ZtomaxintÚ	set_staterW   r   r   rF   ©r   ÚoldÚnewr   r   r   rB   m   s    zTestSetState.test_basicc                 C   s@   | j jdd�}| j  | j¡ | j jdd�}tt ||k¡ƒ d S ©Nr)   ©Úsize)rU   Ústandard_normalrZ   rW   r   r   rF   r[   r   r   r   Útest_gaussian_resets   s    z TestSetState.test_gaussian_resetc                 C   sR   | j  ¡  | j  ¡ }| j jdd�}| j  |¡ | j jdd�}tt ||k¡ƒ d S r^   )rU   ra   rV   rZ   r   r   rF   )r   rW   r\   r]   r   r   r   Ú test_gaussian_reset_in_media_resz   s    

z-TestSetState.test_gaussian_reset_in_media_resc                 C   sz   | j d d… }| jjdd�}| j |¡ | jjdd�}| j | j ¡ | jjdd�}tt ||k¡ƒ tt ||k¡ƒ d S )Nr%   rY   r_   )rW   rU   ra   rZ   r   r   rF   )r   Ú	old_stateÚx1Zx2Zx3r   r   r   Útest_backwards_compatibility…   s    z)TestSetState.test_backwards_compatibilityc                 C   s   | j  dd¡ d S ©Nr5   )rU   Únegative_binomialr!   r   r   r   Útest_negative_binomial‘   s    z#TestSetState.test_negative_binomialN)	r0   r1   r2   rX   rB   rb   rc   rf   ri   r   r   r   r   rR   g   s   rR   c                	   @   s|   e Zd ZejjZejejej	ej
ejejejejejg	Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestRandintc                 C   s   t t| jdtd� d S ©Nr#   r'   )r   r   ÚrfuncrN   r!   r   r   r   Útest_unsupported_typeŸ   s    z!TestRandint.test_unsupported_typec                 C   s    | j D ]”}|tjkrdn
t |¡j}|tjkr2dnt |¡jd }tt| j|d ||d� tt| j||d |d� tt| j|||d� tt| jdd|d� qd S )Nr   r$   r#   r'   )	Úityper   Úbool_ÚiinfoÚminÚmaxr   r    rl   )r   ÚdtÚlbndÚubndr   r   r   Útest_bounds_checking¢   s    
z TestRandint.test_bounds_checkingc                 C   s´   | j D ]¨}|tjkrdn
t |¡j}|tjkr2dnt |¡jd }|d }t| j||d d|d�|ƒ |}t| j||d d|d�|ƒ || d }t| j||d d|d�|ƒ qd S )Nr   r$   r#   r   ©r`   r(   )rn   r   ro   rp   rq   rr   r   rl   )r   rs   rt   ru   Útgtr   r   r   Útest_rng_zero_and_extremes«   s    
z&TestRandint.test_rng_zero_and_extremesc                 C   s�   | j D ]„}|tjkrdn
t |¡j}|tjkr2dnt |¡jd }z| j|||d� W q tk
rˆ } ztdt	|ƒ ƒ‚W 5 d }~X Y qX qd S )Nr   r$   r#   r'   zMNo error should have been raised, but one was with the following message:

%s)
rn   r   ro   rp   rq   rr   rl   Ú	ExceptionÚAssertionErrorÚstr)r   rs   rt   ru   Úer   r   r   Útest_full_range¹   s    
þzTestRandint.test_full_rangec                 C   s’   t j ¡  | jdd … D ]@}dD ]6}| jd|d|d�}t| ¡ |k ƒ t| ¡ dkƒ q q| jdddt jd�}t| ¡ dk ƒ t| ¡ dkƒ d S )Nr#   )r*   é   rY   r$   i   rw   r   )	r   r   rT   rn   rl   r   rr   rq   ro   )r   rs   ru   Úvalsr   r   r   Útest_in_bounds_fuzzÇ   s    
zTestRandint.test_in_bounds_fuzzc              
   C   sò   dd l }ddddddddddœ	}| jdd … D ]r}tj d	¡ tjd
kr\| jddd|d�}n| jddd|d� ¡ }| 	| 
tj¡¡ ¡ }t|t |¡j |kƒ q.tj d	¡ | jdddtd� 
tj¡}| 	|¡ ¡ }t|t t¡j |kƒ d S )Nr   Z@509aea74d792fb931784c4b0135392c65aec64beee12b0cc167548a2c3d31e71Z@7b07f1a920e46f6d0fe02314155a2330bcfd7635e708da50e536c5ebb631a7d4Z@e577bfed6c935de944424667e3da285012e741892dcb7051a8f1ce68ab05c92fZ@0fbead0b06759df2cfb55e43148822d4a1ff953c7eb19a5b08445a63bb64fa9eZ@001aac3a5acb935a9b186cbe14a1ca064b8bb2dd0b045d48abeacf74d0203404)	ÚboolÚint16Úint32r.   Úint8Úuint16rL   Úuint64Úuint8r#   iÒ  Úlittler,   r   rw   r$   )Úhashlibrn   r   r   rT   ÚsysÚ	byteorderrl   ÚbyteswapÚsha256Úviewr…   Ú	hexdigestr   r(   Únamer‚   )r   rŠ   rx   rs   ÚvalÚresr   r   r   Útest_repeatabilityÖ   s,    ø

zTestRandint.test_repeatabilityc                 C   s`   t j}t  t j¡j}t  t  t j¡j¡}t  t  t j¡jd ¡}t jj|||d�}t||ƒ d S rk   )r   r.   rp   rr   r‡   r   r   r   )r   rs   rx   rt   ru   Úactualr   r   r   Útest_int64_uint64_corner_case÷   s    z)TestRandint.test_int64_uint64_corner_casec                 C   sà   | j D ]^}|tjkrdn
t |¡j}|tjkr2dnt |¡jd }| j|||d�}t|jt |¡ƒ qt	t
tjjfD ]f}|t	kr„dn
t |¡j}|t	krœdnt |¡jd }| j|||d�}tt|dƒ ƒ tt|ƒ|ƒ qtd S )Nr   r$   r#   r'   r(   )rn   r   ro   rp   rq   rr   rl   r   r(   r‚   r4   ÚcompatÚlongr   ÚhasattrÚtype)r   rs   rt   ru   Úsampler   r   r   Útest_respect_dtype_singleton  s    
z(TestRandint.test_respect_dtype_singletonN)r0   r1   r2   r   r   r   rl   ro   r…   rˆ   rƒ   r†   r„   rL   r.   r‡   rn   rm   rv   ry   r~   r�   r”   r–   rœ   r   r   r   r   rj   —   s      ÿ	!rj   c                   @   sª  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zej d'ejej ¡ ej ¡ g¡d(d)„ ƒZej d'ejej ¡ ej ¡ g¡ej d*d+d,g¡d-d.„ ƒƒZd/d0„ Zd1d2„ Z d3d4„ Z!d5d6„ Z"d7d8„ Z#d9d:„ Z$d;d<„ Z%d=d>„ Z&d?d@„ Z'dAdB„ Z(dCdD„ Z)dEdF„ Z*dGdH„ Z+dIdJ„ Z,dKdL„ Z-dMdN„ Z.dOdP„ Z/dQdR„ Z0dSdT„ Z1dUdV„ Z2dWdX„ Z3dYdZ„ Z4d[d\„ Z5d]d^„ Z6d_d`„ Z7dadb„ Z8dcdd„ Z9dedf„ Z:dgdh„ Z;didj„ Z<dkdl„ Z=dmdn„ Z>dodp„ Z?dqdr„ Z@dsdt„ ZAdudv„ ZBdwdx„ ZCdydz„ ZDd{d|„ ZEd}d~„ ZFdd€„ ZGd�d‚„ ZHdƒd„„ ZId…d†„ ZJd‡dˆ„ ZKd‰dŠ„ ZLd‹dŒ„ ZMd�dŽ„ ZNd�d�„ ZOd‘d’„ ZPd“d”„ ZQd•d–„ ZRd—S )˜ÚTestRandomDistc                 C   s
   d| _ d S rS   ©rT   r!   r   r   r   rX   %  s    zTestRandomDist.setup_methodc                 C   sJ   t j | j¡ t j dd¡}t  ddgddgddgg¡}t||d	d
� d S )Nr)   r$   ç_®\±*Íã?ç�›˜¬”îâ?ç<î�pì?ç®,º¥oˆì?çˆÂÉHÝ?çZ±­°êæè?é   ©Údecimal)r   r   rT   Zrandr-   r   ©r   r•   Údesiredr   r   r   Ú	test_rand(  s    
þzTestRandomDist.test_randc                 C   sJ   t j | j¡ t j dd¡}t  ddgddgddgg¡}t||d	d
� d S )Nr)   r$   çÿ!ã<Oqõ?ç4ð�u,Íû?çÁ³½3Ûû÷?çL«I/DÍ¿çà@ËÀŽ? @çÿHSÓ\@r¥   r¦   )r   r   rT   Zrandnr-   r   r¨   r   r   r   Ú
test_randn0  s    
þzTestRandomDist.test_randnc                 C   sJ   t j | j¡ t jjdddd�}t  ddgddgd	d
gg¡}t||ƒ d S )Né�ÿÿÿéc   ©r)   r$   r_   é   r)   éÌÿÿÿé)   éÐÿÿÿé¾ÿÿÿ)r   r   rT   r   r-   r   r¨   r   r   r   Útest_randint8  s    
þzTestRandomDist.test_randintc              	   C   sv   t j | j¡ tƒ �2}| t¡}t jjdddd�}tt|ƒdkƒ W 5 Q R X t  	ddgdd	gd
dgg¡}t
||ƒ d S )Nr²   r³   r´   r_   r#   rµ   r)   r¶   r·   r¸   r¹   )r   r   rT   r	   ÚrecordÚDeprecationWarningÚrandom_integersr   Úlenr-   r   ©r   ÚsupÚwr•   r©   r   r   r   Útest_random_integers@  s    

þz#TestRandomDist.test_random_integersc              	   C   sd   t ƒ �>}| t¡}tj t d¡jt d¡j¡}tt	|ƒdkƒ W 5 Q R X t d¡j}t
||ƒ d S )NÚlr#   )r	   r»   r¼   r   r   r½   rp   rr   r   r¾   r   r¿   r   r   r   Útest_random_integers_max_intK  s    

ÿz+TestRandomDist.test_random_integers_max_intc              	   C   s^   t  ¡ �L t  dt¡ tttjjt d¡j	ƒ tttjjt d¡j	t d¡j	ƒ W 5 Q R X d S )NÚerrorrÃ   )
ÚwarningsÚcatch_warningsÚsimplefilterr¼   r   r   r   r½   rp   rr   r!   r   r   r   Útest_random_integers_deprecatedZ  s    

þ
 
þz.TestRandomDist.test_random_integers_deprecatedc                 C   sH   t j | j¡ t j d¡}t  ddgddgddgg¡}t||dd	� d S )
Nr´   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   )r   r   rT   r-   r   r¨   r   r   r   Útest_randomh  s    
þzTestRandomDist.test_randomc                 C   s<   t j | j¡ t j dd¡}t  ddddg¡}t||ƒ d S )Nr*   r$   r)   ©r   r   rT   Úchoicer-   r   r¨   r   r   r   Útest_choice_uniform_replacep  s    z*TestRandomDist.test_choice_uniform_replacec                 C   sH   t j | j¡ t jjddddddgd�}t  ddddg¡}t||ƒ d S )Nr*   çš™™™™™Ù?çš™™™™™¹?©r8   r#   r$   rË   r¨   r   r   r   Útest_choice_nonuniform_replacev  s    z-TestRandomDist.test_choice_nonuniform_replacec                 C   s>   t j | j¡ t jjdddd�}t  dddg¡}t||ƒ d S )Nr*   r)   F©Úreplacer   r#   rË   r¨   r   r   r   Útest_choice_uniform_noreplace|  s    z,TestRandomDist.test_choice_uniform_noreplacec                 C   sH   t j | j¡ t jjdddddddgd�}t  ddd	g¡}t||ƒ d S )
Nr*   r)   FrÏ   g333333Ó?r5   ©rÓ   r8   r$   r#   rË   r¨   r   r   r   Ú test_choice_nonuniform_noreplace‚  s    
ÿz/TestRandomDist.test_choice_nonuniform_noreplacec                 C   sD   t j | j¡ t j ddddgd¡}t  ddddg¡}t||ƒ d S )NÚaÚbÚcÚdr*   rË   r¨   r   r   r   Útest_choice_noninteger‰  s    z%TestRandomDist.test_choice_nonintegerc              	   C   sF  t jj}tt|ddƒ tt|ddƒ tt|ddgddggdƒ tt|g dƒ tt|ddddgdddgddggd� tt|ddgdd	d	d
gd� tt|ddgdddgd� tt|ddgdd	d	gd� tt|dddgddd� tt|dddgddd� tt|dddgddd� tt|dddgddd� tt|dddgdddddgd� d S )Nr   r)   g      @r#   r$   r*   g      Ð?rÐ   rÎ   r>   gš™™™™™ñ?gš™™™™™¹¿FrÒ   r%   )r   )r   r#   r   rÕ   )r   r   rÌ   r   r    )r   r›   r   r   r   Útest_choice_exceptions�  s&    ÿ ÿz%TestRandomDist.test_choice_exceptionsc              	   C   s<  ddg}t t tjjddd�¡ƒ t t tjjddd�¡ƒ t t tjjdd|d�¡ƒ t t tjjdd|d�¡ƒ t t tjjddgdd�¡ƒ t tjjd gdd�d kƒ t ddg¡}tjdtd	�}||d
< t tjj|dd�|kƒ tƒ }t t tjjd|dd�¡ ƒ t t tjjd|dd�¡ ƒ t t tjjd|d|d�¡ ƒ t t tjjd|d|d�¡ ƒ t t tjjddg|dd�¡ ƒ t tjjd g|dd�j	d
kƒ t ddg¡}tjdtd	�}||d
< t tjj||dd� 
¡ |kƒ d}ddddddg}ttjjd|dd�j|ƒ ttjjd|dd�j|ƒ ttjjd|d|d�j|ƒ ttjjd|d|d�j|ƒ ttjjt d¡|dd�j|ƒ ttjjd
d
dd�jdƒ ttjjd
dd
d�jdƒ ttjjddd
d�jdƒ ttjjd
d
d�jdƒ ttjjg dd�jdƒ ttjjddgdd�jdƒ tttjjg dƒ d S )NrÏ   çÍÌÌÌÌÌì?r$   TrÒ   FrÕ   r#   r'   r   )r$   r)   rÎ   r>   r,   )r)   r   r*   r_   iöÿÿÿ)r   r   r×   rØ   )r   r   Zisscalarr   rÌ   r-   ÚemptyÚobjectÚtupleÚndimÚitemr   rM   r   r   r   r    )r   r8   r×   Úarrr   r   r   r   Útest_choice_return_shape¢  sL      " ÿz'TestRandomDist.test_choice_return_shapec                 C   s2   t  dddg¡}d d d g}ttt jj||d� d S )Né*   r#   r$   rÐ   )r   r-   r   r    r   rÌ   )r   r×   r8   r   r   r   Útest_choice_nan_probabilitiesÐ  s    
z,TestRandomDist.test_choice_nan_probabilitiesc                 C   s,   t j | j¡ t j d¡}d}t||ƒ d S )Nr   s
   ‚Uižÿ—+Wf¥)r   r   rT   Úbytesr   r¨   r   r   r   Ú
test_bytesÕ  s    zTestRandomDist.test_bytesc                 C   s°   dd„ dd„ dd„ dd„ dd„ dd„ dd„ d	d„ d
d„ dd„ dd„ fD ]d}t j | j¡ |ddddddddddg
ƒ}t j |¡ |}|ddddddddddg
ƒ}t||ƒ qFd S )Nc                 S   s
   t  g ¡S ©N)r   r-   ©rG   r   r   r   Ú<lambda>Þ  ó    z-TestRandomDist.test_shuffle.<locals>.<lambda>c                 S   s   | S ré   r   rê   r   r   r   rë   ß  rì   c                 S   s   t  | ¡ t j¡S ré   )r   ÚasarrayÚastyper…   rê   r   r   r   rë   à  rì   c                 S   s   t  | ¡ t j¡S ré   )r   rí   rî   Úfloat32rê   r   r   r   rë   á  rì   c                 S   s   t  | ¡ t j¡S ré   )r   rí   rî   Z	complex64rê   r   r   r   rë   â  rì   c                 S   s   t  | ¡ t¡S ré   )r   rí   rî   rß   rê   r   r   r   rë   ã  rì   c                 S   s   dd„ | D ƒS )Nc                 S   s   g | ]}||f‘qS r   r   ©Ú.0Úir   r   r   Ú
<listcomp>ä  s     úATestRandomDist.test_shuffle.<locals>.<lambda>.<locals>.<listcomp>r   rê   r   r   r   rë   ä  rì   c                 S   s   t  dd„ | D ƒ¡S )Nc                 S   s   g | ]}||g‘qS r   r   rð   r   r   r   ró   å  s     rô   )r   rí   rê   r   r   r   rë   å  rì   c                 S   s   t  | | g¡jS ré   )r   ZvstackÚTrê   r   r   r   rë   æ  rì   c                 S   s*   t  dd„ | D ƒdtfdtfg¡ t j¡S )Nc                 S   s   g | ]}||f‘qS r   r   rð   r   r   r   ró   è  s     rô   r×   rØ   )r   rí   r4   r�   Zrecarrayrê   r   r   r   rë   è  s   ÿþc                 S   s$   t  dd„ | D ƒdtfdt jfg¡S )Nc                 S   s   g | ]}||f‘qS r   r   rð   r   r   r   ró   ì  s     rô   r×   rØ   )r   rí   rß   r„   rê   r   r   r   rë   ì  s   ÿr#   r$   r)   r*   r+   r,   é   r   é	   r   )r   r   rT   Úshuffler   )r   ÚconvÚalistr•   r©   r   r   r   Útest_shuffleÛ  s$    òzTestRandomDist.test_shufflec                 C   sÄ   t j t  tdƒd¡d d d¡}t j t  d¡d d d¡}| ¡ }| ¡ }tdƒD ]h}t j |¡ t	t
|j|j  ƒt
|j|j  ƒƒ t j |¡ t	t
|j|j  ƒt
|j|j  ƒƒ qVd S )Né   )r+   r*   r)   r#   r   é2   )r   ÚmaZmasked_valuesZreshaper   r   Úcopyr   rø   r   ÚsortedÚdataÚmask)r   r×   rØ   Za_origZb_origrò   r   r   r   Útest_shuffle_maskedõ  s    " ÿ ÿz"TestRandomDist.test_shuffle_maskedr   c              	   C   sN   ddddddddœ}t jtd	d
��}| |¡ W 5 Q R X d|d jksJt‚d S )Nr   r#   r$   r)   r*   r+   r,   )r   r#   r$   r)   r*   r+   r,   z!you are shuffling a 'dict' object©ÚmatchrÊ   )ÚpytestÚwarnsÚUserWarningrø   Úfilenamer{   )r   r   ÚvaluesZrecr   r   r   Útest_shuffle_untyped_warning  s    ÿz+TestRandomDist.test_shuffle_untyped_warningÚuse_array_likeTFc              	      sÞ   G dd„ dt jƒ}d t  dg¡t  d¡t  d¡t  d¡g}t j|td�}dd„ |D ƒ‰ |rd| |¡}t‡ fd	d
„|D ƒƒs~t‚|r¶t|t j	j
ƒs¶tjtdd�� | |¡ W 5 Q R X n$| |¡ t‡ fdd
„|D ƒƒsÚt‚d S )Nc                   @   s   e Zd ZdS )z>TestRandomDist.test_shuffle_no_object_unpacking.<locals>.MyArrN)r0   r1   r2   r   r   r   r   ÚMyArr  s   r  r)   r   rö   r'   c                 S   s   h | ]}t |ƒ’qS r   ©Úidrð   r   r   r   Ú	<setcomp>  s     zBTestRandomDist.test_shuffle_no_object_unpacking.<locals>.<setcomp>c                 3   s   | ]}t |ƒˆ kV  qd S ré   r  rð   ©Zitem_idsr   r   Ú	<genexpr>  s     zBTestRandomDist.test_shuffle_no_object_unpacking.<locals>.<genexpr>z#Shuffling a one dimensional array.*r  c                 3   s   | ]}t |ƒˆ kV  qd S ré   r  rð   r  r   r   r  &  s     )r   Úndarrayr-   Zfloat64rß   r�   rF   r{   Ú
isinstancer   Ú	Generatorr  r  r  rø   )r   r   r  r  Úitemsrã   r   r  r   Ú test_shuffle_no_object_unpacking  s&     
   ÿ
ÿ
z/TestRandomDist.test_shuffle_no_object_unpackingc                 C   s¨   t j | j¡ t  d¡j}t j |¡ tt  |¡dddddgƒ t j | j¡}| |¡ tt  |¡dddddgƒ t j 	| j¡}| |¡ tt  |¡dddddgƒ d S )Nr+   r   r#   r*   r)   r$   )
r   r   rT   r   r  rø   r   rí   r   Údefault_rng)r   r×   Úrngr   r   r   Útest_shuffle_memoryview(  s    

z&TestRandomDist.test_shuffle_memoryviewc              	   C   s<   t  d¡}d|j_tjtdd�� t j |¡ W 5 Q R X d S )Nr)   Fz	read-onlyr  )	r   r6   ÚflagsZ	writeabler  Zraisesr    r   rø   )r   r×   r   r   r   Útest_shuffle_not_writeable7  s    
z)TestRandomDist.test_shuffle_not_writeablec                 C   sN   t j | j¡ t jjdddd�}t  ddgddgd	d
gg¡}t||dd� d S )NrÏ   rÝ   r´   r_   gAàÁKÄ�?g‘ñØhA?g õÒ‡o¿>gÎ¬XfÈ+q?gSâë1Ã$?g'8zXŒ ?r¥   r¦   )r   r   rT   Úbetar-   r   r¨   r   r   r   Ú	test_beta=  s    þÿzTestRandomDist.test_betac                 C   sJ   t j | j¡ t jjdddd�}t  ddgddgd	d
gg¡}t||ƒ d S )Nr=   gÉv¾Ÿ/Ý?r´   r_   é%   é+   rå   é0   é.   é-   )r   r   rT   r7   r-   r   r¨   r   r   r   Útest_binomialF  s    
þzTestRandomDist.test_binomialc                 C   sL   t j | j¡ t jjddd�}t  ddgddgdd	gg¡}t||d
d� d S )Nrý   r´   r_   g+Qð]uðO@gëòìÇ+Q@gY7`´ZqP@gÈe‡(fŒG@gþv¯t€R@gEIÈ‹R@é   r¦   )r   r   rT   Ú	chisquarer-   r   r¨   r   r   r   Útest_chisquareN  s    
þzTestRandomDist.test_chisquarec                 C   st   t j | j¡ t  ddg¡}t jjj|dd�}t  ddgddggd	d
gddggddgddggg¡}t||dd� d S )Nç“­I<ÝI@ç÷ÉEZßC@r´   r_   gÉi{ßsá?gn,	åAÝ?göÇ]‹^óã?gpDéBØ?gÈ§#¼yªá?gr°¸‡«Ü?g—«1UÞâ?gÈÑ¨œUCÚ?g£…^,%÷â?g»ôB§µÚ?gÚ‰OoX;â?gMì`!O‰Û?r¥   r¦   )r   r   rT   r-   ÚmtrandÚ	dirichletr   )r   Úalphar•   r©   r   r   r   Útest_dirichletV  s    
ÿÿÿüzTestRandomDist.test_dirichletc                 C   sÈ   t  ddg¡}tt j |t  d¡¡jdƒ tt j |t  d¡¡jdƒ tt j |t  d¡¡jdƒ tt j |ddg¡jdƒ tt j |d¡jdƒ tt j |t  d¡¡jdƒ ttt jj|t	dƒƒ d S )Nr(  r)  r#   rI   r$   rJ   rK   )
r   r-   r   r   r+  rL   rM   r   r   rN   rO   r   r   r   Útest_dirichlet_sizeb  s    z"TestRandomDist.test_dirichlet_sizec                 C   s�   t  ddg¡}ttt jjj|ƒ tttjddggƒ tttjdgdggƒ tttjdgdggdgdgggƒ tttjt  ddgddgg¡ƒ d S )NgHáz®Gá?g¼‰Ø—²Òœ¼r+   r#   )r   r-   r   r    r   r*  r+  )r   r,  r   r   r   Útest_dirichlet_bad_alphan  s    "z'TestRandomDist.test_dirichlet_bad_alphac                 C   sL   t j | j¡ t jjddd�}t  ddgddgdd	gg¡}t||d
d� d S )Ngï8EGrùñ?r´   r_   gN÷·Uñ?gbI0æð?gùVU\õº@gˆ:€ì3ù@g©ºUýå?g�Ÿ"qoû?r¥   r¦   )r   r   rT   Úexponentialr-   r   r¨   r   r   r   Útest_exponentialy  s    
þzTestRandomDist.test_exponentialc                 C   s*   t tjjdd�dƒ tttjjdd� d S ©Nr   ©Úscaleç       €)r   r   r   r0  r   r    r!   r   r   r   Útest_exponential_0�  s    z!TestRandomDist.test_exponential_0c                 C   sN   t j | j¡ t jjdddd�}t  ddgddgd	d
gg¡}t||dd� d S )Né   éM   r´   r_   g7¶„ó?gµ`j‹�ü?g6¶"+÷?gÜ³2>•‰ó?g‘cÍ>+Yð?g¡_}áS‚õ?r¥   r¦   )r   r   rT   Úfr-   r   r¨   r   r   r   Útest_f…  s    
þzTestRandomDist.test_fc                 C   sN   t j | j¡ t jjdddd�}t  ddgddgd	d
gg¡}t||dd� d S )Nr+   r)   r´   r_   gÔ�GMçš8@g §â”ÈŒ<@g˜	´":@gÂvÀñÇ#)@gZQø·?@gr‚‚[•¦@@é   r¦   )r   r   rT   Úgammar-   r   r¨   r   r   r   Ú
test_gamma�  s    
þzTestRandomDist.test_gammac                 C   s.   t tjjddd�dƒ tttjjddd� d S )Nr   )rM   r4  r5  )r   r   r   r<  r   r    r!   r   r   r   Útest_gamma_0•  s    zTestRandomDist.test_gamma_0c                 C   sH   t j | j¡ t jjddd�}t  ddgddgddgg¡}t||ƒ d S )	Nç_c97Ýš¿?r´   r_   r   rö   é   r+   r7  )r   r   rT   Ú	geometricr-   r   r¨   r   r   r   Útest_geometric™  s    
þzTestRandomDist.test_geometricc                 C   sN   t j | j¡ t jjdddd�}t  ddgddgd	d
gg¡}t||dd� d S )Nr?  ç       @r´   ©Úlocr4  r`   gåûØ•ßÉ?g¨s0í Ö?gÊð#0÷¿gï(ôx”÷¿g-¶KÇD´ñ?géÅ¯p`@æ¿r¥   r¦   )r   r   rT   Úgumbelr-   r   r¨   r   r   r   Útest_gumbel¡  s    
þzTestRandomDist.test_gumbelc                 C   s*   t tjjdd�dƒ tttjjdd� d S r2  )r   r   r   rF  r   r    r!   r   r   r   Útest_gumbel_0©  s    zTestRandomDist.test_gumbel_0c                 C   s  t j | j¡ t jjddddd�}t  ddgddgddgg¡}t||ƒ t jjdddd	d�}t  ddddg¡}t||ƒ t jjd
ddd	d�}t  ddddg¡}t||ƒ t jjdddd	d�}t  ddddg¡}t||ƒ t jjdd
dd	d�}t  ddddg¡}t||ƒ d S )Nr   r+   r;  r´   r_   r÷   r   r)   r*   r¥   r7  )r   r   rT   Úhypergeometricr-   r   r¨   r   r   r   Útest_hypergeometric­  s&    
þ



z"TestRandomDist.test_hypergeometricc                 C   sN   t j | j¡ t jjdddd�}t  ddgddgd	d
gg¡}t||dd� d S )Nr?  rC  r´   rD  gð¥ bÙOå?g¹Â¸ëÉçà?gpJmµú	@g{KÏ*Ët	@g•:^w-š«¿gˆY~oõûû?r¥   r¦   )r   r   rT   Úlaplacer-   r   r¨   r   r   r   Útest_laplaceÇ  s    
þzTestRandomDist.test_laplacec                 C   s*   t tjjdd�dƒ tttjjdd� d S r2  )r   r   r   rK  r   r    r!   r   r   r   Útest_laplace_0Ï  s    zTestRandomDist.test_laplace_0c                 C   sN   t j | j¡ t jjdddd�}t  ddgddgd	d
gg¡}t||dd� d S )Nr?  rC  r´   rD  g#€�K-zñ?g€îJš¬ë?g�92ÄÜ@gØ±ã÷[@gê#+^ÑÀË¿g¢¥-óâ@r¥   r¦   )r   r   rT   Úlogisticr-   r   r¨   r   r   r   Útest_logisticÓ  s    
þzTestRandomDist.test_logisticc                 C   sN   t j | j¡ t jjdddd�}t  ddgddgd	d
gg¡}t||dd� d S )Nr?  rC  r´   )ÚmeanÚsigmar`   g›ŽòÚÉ�0@goÎ,+4FB@gù�ƒ)Ê­6@g†§5éêæ?gnþxN—nP@g…©)‡úµU@r%  r¦   )r   r   rT   Ú	lognormalr-   r   r¨   r   r   r   Útest_lognormalÛ  s    
þzTestRandomDist.test_lognormalc                 C   s*   t tjjdd�dƒ tttjjdd� d S )Nr   )rQ  r#   r5  )r   r   r   rR  r   r    r!   r   r   r   Útest_lognormal_0ã  s    zTestRandomDist.test_lognormal_0c                 C   sH   t j | j¡ t jjddd�}t  ddgddgddgg¡}t||ƒ d S )NgÆ€@õŒí?r´   )r8   r`   r$   r,   r@  r)   )r   r   rT   Ú	logseriesr-   r   r¨   r   r   r   Útest_logseriesç  s    
þzTestRandomDist.test_logseriesc                 C   s˜   t j | j¡ t jjddgd dd�}t  ddddd	d	gdd	d
d	d	dggddddddgd	dddddggddd	dd	dgdddd	ddggg¡}t||ƒ d S )Nrü   çUUUUUUÅ?r,   r´   r_   r*   r)   r+   r$   r   r#   r   )r   r   rT   rA   r-   r   r¨   r   r   r   Útest_multinomialï  s    ÿÿÿüzTestRandomDist.test_multinomialc              	   C   sR  t j | j¡ d}ddgddgg}d}t j |||¡}t  ddgddggd	d
gddggddgddggg¡}t||dd� t j ||¡}t  ddg¡}t||dd� ddg}ddgddgg}ttt jj||ƒ tt jj||dd� t	t
t jj||dd� t jddgddggt jd�}tƒ �0}t j ||¡ | t¡}t|ƒdk�sDt‚W 5 Q R X d S )N)r?  r   r#   r   r´   g4¸Výj÷?g¾±Ž¥y'@g÷I1‰õù?g—SÙBïŠ#@gû…ªe<@g ÒÔ4W(@g6ŠRÂ¿„û?gò9r
v"@g‹–Ñ�æ?g{§×ïÂ#@gò4Íx›—¿gÇçú"öf"@r¥   r¦   gN}©O6¦ì?gÐÇYM÷W"@r$   Úignore)Zcheck_validÚraiserÏ   r'   )r   r   rT   Zmultivariate_normalr-   r   r   ÚRuntimeWarningr   r   r    rï   r	   r»   r¾   r{   )r   rP  Zcovr`   r•   r©   rÀ   rÁ   r   r   r   Útest_multivariate_normalú  sB    
ÿÿÿüÿÿ
z'TestRandomDist.test_multivariate_normalc                 C   sJ   t j | j¡ t jjdddd�}t  ddgddgd	d
gg¡}t||ƒ d S )Nr=   g|ò°Pkš¿?r´   )Únr8   r`   iP  iI  i|  ic  i  i‡  )r   r   rT   rh   r-   r   r¨   r   r   r   ri   "  s    
þz%TestRandomDist.test_negative_binomialc                 C   sÔ   t j | j¡ t jjdddd�}t  ddgddgdd	gg¡}t||d
d� t jjdddd�}t  ddgddgddgg¡}t||d
d� t j | j¡ t jjdddd�}t  ddgddgddgg¡}t||d
d� d S )Nr+   r´   )ÚdfÚnoncr`   gôûÖGë7@g!© ÈÜ´*@gž1}“z9?@g¹+é©¸™0@g26E_r#@g¦�I�!ó1@r;  r¦   r5   r>   g�÷ô‹÷?g’šT¶ˆDÃ?gÀõ?Tƒ?gÍ+òqnlð?gÓ~|òùDÕ?gë°¬òÇÃ?r   g›{¿0¾1#@gpŽ§²rs'@gþ~;ïÑÓ$@g"‹†dIŽ@gö°Õöë÷*@gÑ}Ÿ'Á,@)r   r   rT   Únoncentral_chisquarer-   r   r¨   r   r   r   Útest_noncentral_chisquare*  s(    
þ
þ
þz(TestRandomDist.test_noncentral_chisquarec                 C   sP   t j | j¡ t jjddddd�}t  ddgdd	gd
dgg¡}t||dd� d S )Nr+   r$   r#   r´   )ÚdfnumÚdfdenr_  r`   gŒ^ýíå~ö?gƒ/+c¢äÕ?g"¡®.ž@gü†Œ÷Ž´@g×7í§ŸþÛ?g»ŒE·Öò?r;  r¦   )r   r   rT   Únoncentral_fr-   r   r¨   r   r   r   Útest_noncentral_f?  s    ÿ
þz TestRandomDist.test_noncentral_fc                 C   sN   t j | j¡ t jjdddd�}t  ddgddgd	d
gg¡}t||dd� d S )Nr?  rC  r´   rD  gíœ&&n@gO»G_Ê@gÜ~w²ø@gtÁÜûw]Õ¿gm&¨5ú½@gŒñ$È>Û@r¥   r¦   )r   r   rT   Únormalr-   r   r¨   r   r   r   Útest_normalH  s    
þzTestRandomDist.test_normalc                 C   s*   t tjjdd�dƒ tttjjdd� d S r2  )r   r   r   rf  r   r    r!   r   r   r   Útest_normal_0P  s    zTestRandomDist.test_normal_0c                 C   sP   t j | j¡ t jjddd�}t  ddgddgdd	gg¡}t jj||d
d� d S )Nr?  r´   ©r×   r`   gÅWò˜I£@gùÔ¨y–@gy£Ÿ]Ó0‰Ag1~ÖÒ\�AgåËíãša@gÑY„
²7Aé   )Znulp)r   r   rT   Úparetor-   ÚtestingZassert_array_almost_equal_nulpr¨   r   r   r   Útest_paretoT  s    þÿ
zTestRandomDist.test_paretoc                 C   sH   t j | j¡ t jjddd�}t  ddgddgddgg¡}t||ƒ d S )Nr?  r´   )Úlamr`   r   r#   )r   r   rT   Úpoissonr-   r   r¨   r   r   r   Útest_poissonc  s    
þzTestRandomDist.test_poissonc                 C   s`   t  d¡j}d}ttt jj|ƒ ttt jj|gd ƒ ttt jj|ƒ ttt jj|gd ƒ d S )NrÃ   r   r   )r   rp   rr   r   r    r   ro  )r   ZlambigZlamnegr   r   r   Útest_poisson_exceptionsk  s    z&TestRandomDist.test_poisson_exceptionsc                 C   sL   t j | j¡ t jjddd�}t  ddgddgdd	gg¡}t||d
d� d S )Nr?  r´   ri  gõ;•'û”?gÜ´èwÞ*�?g×†5›Ø?gF¡GÙ?g ÆËD]?gýÞ$`°ÉÀ?r¥   r¦   )r   r   rT   Úpowerr-   r   r¨   r   r   r   Ú
test_powers  s    
þzTestRandomDist.test_powerc                 C   sL   t j | j¡ t jjddd�}t  ddgddgdd	gg¡}t||d
d� d S )Nr   r´   )r4  r`   g"íu¨ÈÆ+@gîN$MBÄ*@g7v8Bô4@gêÿª55@geãˆ&@g~ŽÓ£ÌZ1@r;  r¦   )r   r   rT   Úrayleighr-   r   r¨   r   r   r   Útest_rayleigh{  s    
þzTestRandomDist.test_rayleighc                 C   s*   t tjjdd�dƒ tttjjdd� d S r2  )r   r   r   rt  r   r    r!   r   r   r   Útest_rayleigh_0ƒ  s    zTestRandomDist.test_rayleigh_0c                 C   sJ   t j | j¡ t jjdd�}t  ddgddgddgg¡}t||d	d
� d S )Nr´   r_   gMo³DL®è?g6Ï([9ÀgðºrF=òí?gÉM'	-™ ÀgóV¼ëûÀgVA:ìQyÇ?r¥   r¦   )r   r   rT   Zstandard_cauchyr-   r   r¨   r   r   r   Útest_standard_cauchy‡  s    
þz#TestRandomDist.test_standard_cauchyc                 C   sJ   t j | j¡ t jjdd�}t  ddgddgddgg¡}t||d	d
� d S )Nr´   r_   g°ö–Ü�Üî?gc!z¨ì?g&N˜¥"�@g¬NIàŠÇ@gFÇï>ú’ã?g¡~‚MEø?r¥   r¦   )r   r   rT   Zstandard_exponentialr-   r   r¨   r   r   r   Útest_standard_exponential�  s    
þz(TestRandomDist.test_standard_exponentialc                 C   sL   t j | j¡ t jjddd�}t  ddgddgdd	gg¡}t||d
d� d S )Nr)   r´   )rM   r`   g)§ž@g¾§Ä¾¤„@gd]‰,qÂ@gP‡kÌ{@g9B#Œ1@gÔÚv÷‡ @r;  r¦   )r   r   rT   Ústandard_gammar-   r   r¨   r   r   r   Útest_standard_gamma—  s    
þz"TestRandomDist.test_standard_gammac                 C   s*   t tjjdd�dƒ tttjjdd� d S )Nr   )rM   r5  )r   r   r   ry  r   r    r!   r   r   r   Útest_standard_gamma_0Ÿ  s    z$TestRandomDist.test_standard_gamma_0c                 C   sJ   t j | j¡ t jjdd�}t  ddgddgddgg¡}t||d	d
� d S )Nr´   r_   r«   r¬   r­   r®   r¯   r°   r¥   r¦   )r   r   rT   ra   r-   r   r¨   r   r   r   Útest_standard_normal£  s    
þz#TestRandomDist.test_standard_normalc                 C   sL   t j | j¡ t jjddd�}t  ddgddgdd	gg¡}t||d
d� d S )Nr   r´   )r^  r`   g\VÔHÂï?gßhUÍ%›¶¿gÿH$ðMÏõ?güøüL›³á¿gV«qdz¥Ç¿gã–€Õý“ã?r¥   r¦   )r   r   rT   Ú
standard_tr-   r   r¨   r   r   r   Útest_standard_t«  s    
þzTestRandomDist.test_standard_tc                 C   sP   t j | j¡ t jjddddd�}t  ddgdd	gd
dgg¡}t||dd� d S )Ng{®Gáz@gö(\�Âu$@g×£p=
W4@r´   )ÚleftÚmodeÚrightr`   g:§}ŒÂ\)@ghØ±TjÓ(@g‡Ç¨L‰30@g6Úœ™ÅA0@g6¤õ—sh&@gœí<Šáþ,@r;  r¦   )r   r   rT   Ú
triangularr-   r   r¨   r   r   r   Útest_triangular³  s    ÿ
þzTestRandomDist.test_triangularc                 C   sN   t j | j¡ t jjdddd�}t  ddgddgd	d
gg¡}t||dd� d S )Nç®Gáz®ó?g®Gáz%@r´   )ÚlowÚhighr`   g>#¥HÃö@g£¨uºó@g•ï‡§Ý#@g„}d]#@gø†‰N¶õ@g­w)*ó @r¥   r¦   )r   r   rT   Úuniformr-   r   r¨   r   r   r   Útest_uniform¼  s    
þzTestRandomDist.test_uniformc                 C   sš   t  d¡j}t  d¡j}t jj}tt|t j dƒ tt|dt jƒ tt|||ƒ tt|t j gdgƒ tt|dgt jgƒ t jjt  	|d¡|d d� d S )NrN   r   r#   g  Ø…W4vC)r…  r†  )
r   Zfinforq   rr   r   r‡  r   ÚOverflowErrorÚinfZ	nextafter)r   ZfminZfmaxÚfuncr   r   r   Útest_uniform_range_boundsÄ  s    z(TestRandomDist.test_uniform_range_boundsc                 C   sn   G dd„ dt jƒ}t  d¡ |¡}ttt jj||ƒ G dd„ dt jƒ}t  d¡ |¡}ttt jj|ddƒ d S )Nc                   @   s   e Zd Zdd„ ZdS )zGTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingFloatc                 S   s   t ‚d S ré   ©r   r!   r   r   r   Ú	__float__Ü  s    zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingFloat.__float__N)r0   r1   r2   rŽ  r   r   r   r   ÚThrowingFloatÛ  s   r�  g      ð?c                   @   s   e Zd Zdd„ ZeZdS )zITestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingIntegerc                 S   s   t ‚d S ré   r�  r!   r   r   r   Ú__int__ä  s    zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingInteger.__int__N)r0   r1   r2   r�  Ú	__index__r   r   r   r   ÚThrowingIntegerã  s   r’  r#   )	r   r  r-   r�   r   r   r   r‡  rI  )r   r�  Zthrowing_floatr’  Zthrowing_intr   r   r   Ú!test_scalar_exception_propagationÔ  s    ÿz0TestRandomDist.test_scalar_exception_propagationc                 C   sN   t j | j¡ t jjdddd�}t  ddgddgd	d
gg¡}t||dd� d S )Nr„  ç¤p=
×£ø?r´   ©ÚmuÚkappar`   gL×üZI@g¦¢'N"@gÀ·…þkrØ?g”k=mœ@g�¹Ú‰ó?gÜ^Ì=�\ý?r¥   r¦   )r   r   rT   Úvonmisesr-   r   r¨   r   r   r   Útest_vonmisesì  s    
þzTestRandomDist.test_vonmisesc                 C   s:   t j | j¡ t jjdddd�}t j t  |¡ ¡ ¡ d S )NrC   gg5_PŸG>i@B r•  )r   r   rT   r˜  rl  r   ÚisfiniterF   )r   Úrr   r   r   Útest_vonmises_smallô  s    z"TestRandomDist.test_vonmises_smallc                 C   sN   t j | j¡ t jjdddd�}t  ddgddgd	d
gg¡}t||dd� d S )Nr„  r”  r´   )rP  r4  r`   gÉZ¥ƒ¢@g-ïŸg†@g¦8
ÄÖmÖ?gÃÎVP"ø?g`Vô áÎ?gx©^½&3Ì?r;  r¦   )r   r   rT   Úwaldr-   r   r¨   r   r   r   Ú	test_waldú  s    
þzTestRandomDist.test_waldc                 C   sL   t j | j¡ t jjddd�}t  ddgddgdd	gg¡}t||d
d� d S )Nr„  r´   ri  g@–Ý6ï?g¦Óé]Aí?g(Ã1Ú¥Rþ?gù¤U þ?g“Í2§_uå?g^}-­Qö?r¥   r¦   )r   r   rT   Úweibullr-   r   r¨   r   r   r   Útest_weibull  s    
þzTestRandomDist.test_weibullc                 C   s@   t j | j¡ tt jjddd�t  d¡ƒ ttt jjdd� d S )Nr   r7  ri  r5  )r×   )r   r   rT   r   rŸ  r6   r   r    r!   r   r   r   Útest_weibull_0
  s    zTestRandomDist.test_weibull_0c                 C   sH   t j | j¡ t jjddd�}t  ddgddgddgg¡}t||ƒ d S )	Nr„  r´   ri  éB   é   r#   r)   r%  )r   r   rT   Úzipfr-   r   r¨   r   r   r   Ú	test_zipf  s    
þzTestRandomDist.test_zipfN)Sr0   r1   r2   rX   rª   r±   rº   rÂ   rÄ   rÉ   rÊ   rÍ   rÑ   rÔ   rÖ   rÛ   rÜ   rä   ræ   rè   rû   r  r  ÚmarkZparametrizer   r   r   r  r  r  r  r  r  r$  r'  r-  r.  r/  r1  r6  r:  r=  r>  rB  rG  rH  rJ  rL  rM  rO  rS  rT  rV  rX  r\  ri   ra  re  rg  rh  rm  rp  rq  rs  ru  rv  rw  rx  rz  r{  r|  r~  rƒ  rˆ  rŒ  r“  r™  rœ  rž  r   r¡  r¥  r   r   r   r   r�   !  s    .ÿ
ÿ	(		r�   c                   @   s  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAS )BÚTestBroadcastc                 C   s
   d| _ d S )NiÍ[rž   r!   r   r   r   rX     s    zTestBroadcast.setup_methodc                 C   s   t j | j¡ d S ré   )r   r   rT   r!   r   r   r   ÚsetSeed  s    zTestBroadcast.setSeedc                 C   sp   dg}dg}t jj}t  dddg¡}|  ¡  ||d |ƒ}t||dd� |  ¡  |||d ƒ}t||dd� d S )	Nr   r#   çºlö×÷á?ç_x¤¥á?ç=å*BNà?r)   r;  r¦   )r   r   r‡  r-   r¨  r   )r   r…  r†  r‡  r©   r•   r   r   r   rˆ  $  s    þzTestBroadcast.test_uniformc                 C   sš   dg}dg}dg}t jj}t  dddg¡}|  ¡  ||d |ƒ}t||dd	� tt||d |ƒ |  ¡  |||d ƒ}t||dd	� tt|||d ƒ d S )
Nr   r#   r   g-rö´@g¦Y®lõ@g-µ`¦wý?r)   r;  r¦   )r   r   rf  r-   r¨  r   r   r    )r   rE  r4  Ú	bad_scalerf  r©   r•   r   r   r   rg  4  s     þzTestBroadcast.test_normalc                 C   sÄ   dg}dg}dg}dg}t jj}t  dddg¡}|  ¡  ||d |ƒ}t||d	d
� tt||d |ƒ tt||d |ƒ |  ¡  |||d ƒ}t||d	d
� tt|||d ƒ tt|||d ƒ d S )Nr#   r$   r   r%   gnÍQVfÉ?gV©‹šKB³?gv®`køÏ?r)   r;  r¦   )r   r   r  r-   r¨  r   r   r    )r   r×   rØ   Úbad_aZbad_br  r©   r•   r   r   r   r  G  s&    þzTestBroadcast.test_betac                 C   sZ   dg}dg}t jj}t  dddg¡}|  ¡  ||d ƒ}t||dd� tt||d ƒ d S ©	Nr#   r   gö.Ug¬Zè?gi Pr�qè?gçÅEKÌæ?r)   r;  r¦   )r   r   r0  r-   r¨  r   r   r    )r   r4  r¬  r0  r©   r•   r   r   r   r1  ]  s    þzTestBroadcast.test_exponentialc                 C   sZ   dg}dg}t jj}t  dddg¡}|  ¡  ||d ƒ}t||dd� tt||d ƒ d S r®  )r   r   ry  r-   r¨  r   r   r    )r   rM   Ú	bad_shapeZ	std_gammar©   r•   r   r   r   rz  j  s    þz!TestBroadcast.test_standard_gammac                 C   sÄ   dg}dg}dg}dg}t jj}t  dddg¡}|  ¡  ||d |ƒ}t||d	d
� tt||d |ƒ tt||d |ƒ |  ¡  |||d ƒ}t||d	d
� tt|||d ƒ tt|||d ƒ d S )Nr#   r$   r   r%   gö.Ug¬Zø?gi Pr�qø?gçÅEKÌö?r)   r;  r¦   )r   r   r<  r-   r¨  r   r   r    )r   rM   r4  r¯  r¬  r<  r©   r•   r   r   r   r=  w  s&    þzTestBroadcast.test_gammac                 C   sÄ   dg}dg}dg}dg}t jj}t  dddg¡}|  ¡  ||d |ƒ}t||d	d
� tt||d |ƒ tt||d |ƒ |  ¡  |||d ƒ}t||d	d
� tt|||d ƒ tt|||d ƒ d S )Nr#   r$   r   r%   gb—�yÊœé?g»åoðÄë?gT¹æ7Í@r)   r;  r¦   )r   r   r9  r-   r¨  r   r   r    )r   rb  rc  Ú	bad_dfnumÚ	bad_dfdenr9  r©   r•   r   r   r   r:  �  s&    þzTestBroadcast.test_fc           
      C   sf  dg}dg}dg}dg}dg}dg}t jj}t  ddd	g¡}|  ¡  ||d ||ƒ}	t|	|d
d� tt||d ||ƒ tt||d ||ƒ tt||d ||ƒ |  ¡  |||d |ƒ}	t|	|d
d� tt|||d |ƒ tt|||d |ƒ tt|||d |ƒ |  ¡  ||||d ƒ}	t|	|d
d� tt||||d ƒ tt||||d ƒ tt||||d ƒ d S )Nr$   r)   r*   r   r   r%   gÈr±^G"@g/�*@g‹°�Ñ†š!@r;  r¦   )r   r   rd  r-   r¨  r   r   r    )
r   rb  rc  r_  r°  r±  Úbad_noncZnonc_fr©   r•   r   r   r   re  £  s:    þzTestBroadcast.test_noncentral_fc                 C   s<   |   ¡  t ddg¡}tjjddddd�}t||dd� d S )Ng¬ªaŒ‚z@gn4M;î%é?rÝ   r$   r_   r;  r¦   )r¨  r   r-   r   rd  r   )r   r©   r•   r   r   r   Útest_noncentral_f_small_dfÄ  s    z(TestBroadcast.test_noncentral_f_small_dfc                 C   sZ   dg}dg}t jj}t  dddg¡}|  ¡  ||d ƒ}t||dd� tt||d ƒ d S )	Nr#   r   g~¼}ÐN?â?g‘$FŽŸà?g'rS�èÀ?r)   r;  r¦   )r   r   r&  r-   r¨  r   r   r    )r   r^  Úbad_dfr&  r©   r•   r   r   r   r'  Ê  s    þzTestBroadcast.test_chisquarec                 C   sÄ   dg}dg}dg}dg}t jj}t  dddg¡}|  ¡  ||d |ƒ}t||d	d
� tt||d |ƒ tt||d |ƒ |  ¡  |||d ƒ}t||d	d
� tt|||d ƒ tt|||d ƒ d S )Nr#   r$   r   r%   g©ç wÌ "@g2øêWR@g�ˆâRY@r)   r;  r¦   )r   r   r`  r-   r¨  r   r   r    )r   r^  r_  r´  r²  Znonc_chir©   r•   r   r   r   ra  ×  s&    þz'TestBroadcast.test_noncentral_chisquarec                 C   sZ   dg}dg}t jj}t  dddg¡}|  ¡  ||d ƒ}t||dd� tt||d ƒ d S )	Nr#   r   gTÄò�@g~‹Fžl@gÆštø�pð?r)   r;  r¦   )r   r   r}  r-   r¨  r   r   r    )r   r^  r´  Útr©   r•   r   r   r   r~  í  s    þzTestBroadcast.test_standard_tc                 C   sš   dg}dg}dg}t jj}t  dddg¡}|  ¡  ||d |ƒ}t||dd	� tt||d |ƒ |  ¡  |||d ƒ}t||dd	� tt|||d ƒ d S )
Nr$   r#   r   g´®W!è@gü�OBº¦ÀgÈ}Ç?àý¿r)   r;  r¦   )r   r   r˜  r-   r¨  r   r   r    )r   r–  r—  Z	bad_kappar˜  r©   r•   r   r   r   r™  ú  s     þzTestBroadcast.test_vonmisesc                 C   sZ   dg}dg}t jj}t  dddg¡}|  ¡  ||d ƒ}t||dd� tt||d ƒ d S )	Nr#   r   g&ƒ8¾?ò?g�e�âFXò?gªÕ‹Ë�Ÿð?r)   r;  r¦   )r   r   rk  r-   r¨  r   r   r    )r   r×   r­  rk  r©   r•   r   r   r   rm    s    þzTestBroadcast.test_paretoc                 C   sZ   dg}dg}t jj}t  dddg¡}|  ¡  ||d ƒ}t||dd� tt||d ƒ d S r®  )r   r   rŸ  r-   r¨  r   r   r    )r   r×   r­  rŸ  r©   r•   r   r   r   r     s    þzTestBroadcast.test_weibullc                 C   sZ   dg}dg}t jj}t  dddg¡}|  ¡  ||d ƒ}t||dd� tt||d ƒ d S )	Nr#   r   r©  rª  r«  r)   r;  r¦   )r   r   rr  r-   r¨  r   r   r    )r   r×   r­  rr  r©   r•   r   r   r   rs  '  s    þzTestBroadcast.test_powerc                 C   sš   dg}dg}dg}t jj}t  dddg¡}|  ¡  ||d |ƒ}t||dd	� tt||d |ƒ |  ¡  |||d ƒ}t||dd	� tt|||d ƒ d S )
Nr   r#   r   g:¨×BKc±?gÖ3®šk²?gî~qÉÁ“?r)   r;  r¦   )r   r   rK  r-   r¨  r   r   r    )r   rE  r4  r¬  rK  r©   r•   r   r   r   rL  4  s     þzTestBroadcast.test_laplacec                 C   sš   dg}dg}dg}t jj}t  dddg¡}|  ¡  ||d |ƒ}t||dd	� tt||d |ƒ |  ¡  |||d ƒ}t||dd	� tt|||d ƒ d S )
Nr   r#   r   gÈ'�£ZyÑ?g÷dSO=Ñ?gÏ3Lõ1³Õ?r)   r;  r¦   )r   r   rF  r-   r¨  r   r   r    )r   rE  r4  r¬  rF  r©   r•   r   r   r   rG  G  s     þzTestBroadcast.test_gumbelc                 C   sš   dg}dg}dg}t jj}t  dddg¡}|  ¡  ||d |ƒ}t||dd	� tt||d |ƒ |  ¡  |||d ƒ}t||dd	� tt|||d ƒ d S )
Nr   r#   r   gÂ“y±ÕÀ?gªÀJõR�Á?gþ
~Æ&‘£?r)   r;  r¦   )r   r   rN  r-   r¨  r   r   r    )r   rE  r4  r¬  rN  r©   r•   r   r   r   rO  Z  s     þzTestBroadcast.test_logisticc                 C   sš   dg}dg}dg}t jj}t  dddg¡}|  ¡  ||d |ƒ}t||dd	� tt||d |ƒ |  ¡  |||d ƒ}t||dd	� tt|||d ƒ d S )
Nr   r#   r   gÄñò�ÏH"@g¼ùÜ®ƒÍ @gvv	ý²:@r)   r;  r¦   )r   r   rR  r-   r¨  r   r   r    )r   rP  rQ  Z	bad_sigmarR  r©   r•   r   r   r   rS  m  s     þzTestBroadcast.test_lognormalc                 C   sZ   dg}dg}t jj}t  dddg¡}|  ¡  ||d ƒ}t||dd� tt||d ƒ d S )	Nr#   r   gÝ±lËo½ó?gé/Ó‚´Æó?gz~ßRó?r)   r;  r¦   )r   r   rt  r-   r¨  r   r   r    )r   r4  r¬  rt  r©   r•   r   r   r   ru  €  s    þzTestBroadcast.test_rayleighc                 C   sà   dg}dg}dg}dg}t jj}t  dddg¡}|  ¡  ||d |ƒ}t||d	d
� tt||d |ƒ tt||d |ƒ |  ¡  |||d ƒ}t||d	d
� tt|||d ƒ tt|||d ƒ tt|ddƒ tt|ddƒ d S )Nr5   r#   r   r%   g@mò ‰e¾?g¸�`ŸIß¿?g¸‡|2‹í?r)   r;  r¦   rC   )r   r   r�  r-   r¨  r   r   r    )r   rP  r4  Zbad_meanr¬  r�  r©   r•   r   r   r   rž  �  s*    þzTestBroadcast.test_waldc                 C   sl  dg}dg}dg}dg}dg}|d \}}t jj}t  dddg¡}	|  ¡  ||d ||ƒ}
t|
|	dd	� tt||d ||ƒ tt||d ||ƒ tt||d ||ƒ |  ¡  |||d |ƒ}
t|
|	dd	� tt|||d |ƒ tt|||d |ƒ tt|||d |ƒ |  ¡  ||||d ƒ}
t|
|	dd	� tt||||d ƒ tt||||d ƒ tt||||d ƒ d S )
Nr#   r)   r$   r*   g,âP;bD @gºÁ±È%G @g,~S²¨ @r;  r¦   )r   r   r‚  r-   r¨  r   r   r    )r   r  r�  r€  Zbad_left_oneZbad_mode_oneZbad_left_twoZbad_mode_twor‚  r©   r•   r   r   r   rƒ  ¥  sF    þÿÿ
ÿzTestBroadcast.test_triangularc           	      C   sæ   dg}dg}dg}dg}dg}t jj}t  dddg¡}|  ¡  ||d |ƒ}t||ƒ tt||d |ƒ tt||d |ƒ tt||d |ƒ |  ¡  |||d ƒ}t||ƒ tt|||d ƒ tt|||d ƒ tt|||d ƒ d S )Nr#   r5   r   ç      ø?r)   )r   r   r7   r-   r¨  r   r   r    )	r   r]  r8   Úbad_nÚ	bad_p_oneÚ	bad_p_twoZbinomr©   r•   r   r   r   r$  É  s&    

zTestBroadcast.test_binomialc           	      C   sæ   dg}dg}dg}dg}dg}t jj}t  dddg¡}|  ¡  ||d |ƒ}t||ƒ tt||d |ƒ tt||d |ƒ tt||d |ƒ |  ¡  |||d ƒ}t||ƒ tt|||d ƒ tt|||d ƒ tt|||d ƒ d S )Nr#   r5   r   r¶  r   r)   )r   r   rh   r-   r¨  r   r   r    )	r   r]  r8   r·  r¸  r¹  Z	neg_binomr©   r•   r   r   r   ri   à  s&    

z$TestBroadcast.test_negative_binomialc                 C   s|   t j ¡ j}dg}dg}|d g}t jj}t  dddg¡}|  ¡  ||d ƒ}t||ƒ tt	||d ƒ tt	||d ƒ d S )Nr#   r   r$   r   r)   )
r   r   r   Z_poisson_lam_maxro  r-   r¨  r   r   r    )r   Zmax_lamrn  Zbad_lam_oneZbad_lam_tworo  r©   r•   r   r   r   rp  ÷  s    

zTestBroadcast.test_poissonc              	   C   s�   dg}dg}t jj}t  dddg¡}|  ¡  ||d ƒ}t||ƒ tt||d ƒ t jdd��( tt|t j	ƒ tt|ddt j	gƒ W 5 Q R X d S )Nr$   r   r#   r)   rY  )Úinvalid)
r   r   r¤  r-   r¨  r   r   r    Zerrstater:   )r   r×   r­  r¤  r©   r•   r   r   r   r¥    s    
zTestBroadcast.test_zipfc                 C   sl   dg}dg}dg}t jj}t  dddg¡}|  ¡  ||d ƒ}t||ƒ tt||d ƒ tt||d ƒ d S )Nr5   r   r¶  r$   r)   )r   r   rA  r-   r¨  r   r   r    )r   r8   r¸  r¹  Zgeomr©   r•   r   r   r   rB    s    
zTestBroadcast.test_geometricc                 C   sœ  dg}dg}dg}dg}dg}dg}dg}t jj}t  dddg¡}	|  ¡  ||d ||ƒ}
t|
|	ƒ tt||d ||ƒ tt||d ||ƒ tt||d ||ƒ tt||d ||ƒ |  ¡  |||d |ƒ}
t|
|	ƒ tt|||d |ƒ tt|||d |ƒ tt|||d |ƒ tt|||d |ƒ |  ¡  ||||d ƒ}
t|
|	ƒ tt||||d ƒ tt||||d ƒ tt||||d ƒ tt||||d ƒ d S )Nr#   r$   r   r%   r   r*   r)   )r   r   rI  r-   r¨  r   r   r    )r   ZngoodZnbadZnsampleZ	bad_ngoodZbad_nbadZbad_nsample_oneZbad_nsample_twoZ	hypergeomr©   r•   r   r   r   rJ  !  s<    


z!TestBroadcast.test_hypergeometricc                 C   sl   dg}dg}dg}t jj}t  dddg¡}|  ¡  ||d ƒ}t||ƒ tt||d ƒ tt||d ƒ d S )Nr5   r$   r   r#   r)   )r   r   rU  r-   r¨  r   r   r    )r   r8   r¸  r¹  rU  r©   r•   r   r   r   rV  D  s    
zTestBroadcast.test_logseriesN)#r0   r1   r2   rX   r¨  rˆ  rg  r  r1  rz  r=  r:  re  r³  r'  ra  r~  r™  rm  r   rs  rL  rG  rO  rS  ru  rž  rƒ  r$  ri   rp  r¥  rB  rJ  rV  r   r   r   r   r§    s@   !$#r§  zcan't start thread)Úreasonc                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú
TestThreadc                 C   s   t dƒ| _d S )Nr*   )r   Úseedsr!   r   r   r   rX   U  s    zTestThread.setup_methodc                    sÌ   ddl m‰  t t| jƒf| ¡}t t| jƒf| ¡}‡ ‡fdd„t| j|ƒD ƒ}dd„ |D ƒ dd„ |D ƒ t| j|ƒD ]\}}ˆtj |¡|ƒ q|t 	¡ j
jdkr¾tjdkr¾t||ƒ n
t||ƒ d S )	Nr   )ÚThreadc                    s(   g | ] \}}ˆ ˆt j |¡|fd �‘qS ))ÚtargetÚargs)r   r   r   )rñ   r   Úo©r¾  Úfunctionr   r   ró   _  s   ÿz-TestThread.check_function.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ ‘qS r   )Ústart©rñ   rG   r   r   r   ró   a  s     c                 S   s   g | ]}|  ¡ ‘qS r   )ÚjoinrÅ  r   r   r   ró   b  s     r*   Úwin32)Ú	threadingr¾  r   rÞ   r¾   r½  Úzipr   r   Zintpr(   Úitemsizer‹   Úplatformr   r   )r   rÃ  ÚszZout1Zout2rµ  r   rÁ  r   rÂ  r   Úcheck_functionX  s    
ÿzTestThread.check_functionc                 C   s   dd„ }| j |dd� d S )Nc                 S   s   | j dd�|d< d S )Né'  r_   .)rf  ©rW   Úoutr   r   r   Ú
gen_randomo  s    z*TestThread.test_normal.<locals>.gen_random)rÎ  ©rÌ  ©rÍ  ©r   rÑ  r   r   r   rg  n  s    zTestThread.test_normalc                 C   s   dd„ }| j |dd� d S )Nc                 S   s   | j t d¡d�|d< d S )N©r=   r   r3  .)r0  r   ZonesrÏ  r   r   r   rÑ  t  s    z'TestThread.test_exp.<locals>.gen_randomrÕ  rÒ  rÓ  rÔ  r   r   r   Útest_exps  s    zTestThread.test_expc                 C   s   dd„ }| j |dd� d S )Nc                 S   s   | j ddgd dd�|d< d S )Nr   rW  r,   rÎ  r_   .)rA   rÏ  r   r   r   rÑ  y  s    z/TestThread.test_multinomial.<locals>.gen_random)rÎ  r,   rÒ  rÓ  rÔ  r   r   r   rX  x  s    zTestThread.test_multinomialN)r0   r1   r2   rX   rÍ  rg  rÖ  rX  r   r   r   r   r¼  R  s
   r¼  c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestSingleEltArrayInputc                 C   s4   t  dg¡| _t  dg¡| _t  dg¡| _d| _d S )Nr$   r)   r*   )r#   )r   r-   ÚargOneÚargTwoÚargThreeÚtgtShaper!   r   r   r   rX   €  s    z$TestSingleEltArrayInput.setup_methodc                 C   sœ   t jjt jjt jjt jjt jjt jjt jjt jj	t jj
t jjt jjt jjf}t jjt jjf}|D ]6}||kr~|t  dg¡ƒ}n
|| jƒ}t|j| jƒ q`d S rg   )r   r   r0  ry  r&  r}  rk  rŸ  rr  rt  ro  r¤  rA  rU  r-   rØ  r   rM   rÛ  )r   ÚfuncsÚ	probfuncsr‹  rÐ  r   r   r   Útest_one_arg_funcs†  s$         û
z*TestSingleEltArrayInput.test_one_arg_funcsc                 C   sè   t jjt jjt jjt jjt jjt jjt jjt jj	t jj
t jjt jjt jjt jjt jjf}t jjt jjf}|D ]v}||kr†t  dg¡}n| j}|| j|ƒ}t|j| jƒ || jd |ƒ}t|j| jƒ || j|d ƒ}t|j| jƒ qld S )Nr5   r   )r   r   r‡  rf  r  r<  r9  r`  r˜  rK  rF  rN  rR  r�  r7   rh   r-   rÙ  rØ  r   rM   rÛ  )r   rÜ  rÝ  r‹  rÙ  rÐ  r   r   r   Útest_two_arg_funcs™  s2          úz*TestSingleEltArrayInput.test_two_arg_funcsc              	   C   s°   t tjtjtjtjtjtjtjtj	g	}tj
j}t dg¡}t dg¡}|D ]`}||||d�}t|j| jƒ ||d ||d�}t|j| jƒ |||d |d�}t|j| jƒ qJd S )Nr#   r   r'   )r‚   r   r…   rˆ   rƒ   r†   r„   rL   r.   r‡   r   r   r-   r   rM   rÛ  )r   rn   r‹  r†  r…  rs   rÐ  r   r   r   rº   ´  s        ÿz$TestSingleEltArrayInput.test_randintc                 C   sŒ   t jjt jjt jjg}|D ]l}|| j| j| jƒ}t|j	| j
ƒ || jd | j| jƒ}t|j	| j
ƒ || j| jd | jƒ}t|j	| j
ƒ qd S )Nr   )r   r   rd  r‚  rI  rØ  rÙ  rÚ  r   rM   rÛ  )r   rÜ  r‹  rÐ  r   r   r   Útest_three_arg_funcsÅ  s    ÿz,TestSingleEltArrayInput.test_three_arg_funcsN)r0   r1   r2   rX   rÞ  rß  rº   rà  r   r   r   r   r×    s
   r×  )rÆ   r  Únumpyr   Znumpy.testingr   r   r   r   r   r   r   r	   r
   r   r‹   r   r3   r<   rR   rj   r�   r§  r¦  Zskipifr¼  r×  r   r   r   r   Ú<module>   s2   ,'"0      |    >,