U
    »mœd<  ã                   @   s  d dl Z d dlZd dlZd dlmZ d dlmZmZ d dl	m
Z d dlm  mZ d dlmZ d dlmZ d1d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)dS )2é    N)Úassert_allcloseÚassert_equal)Úraises)Úgetfullargspec_no_self)ÚstatsFc                 C   sH   t |ƒD ]:\}}|r,t | | t| |ƒ¡ qt | | t| |ƒ¡ qd S ©N)Ú	enumerateÚma_nptr   ÚgetattrÚnpt)ÚresÚ
attributesÚmaÚiÚattr© r   úW/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/stats/tests/common_tests.pyÚcheck_named_results   s    r   c           
      C   sŠ   | j d|žŽ }t |d¡ |dkr,d\}}nd\}}| jdd„ |d�}tj|d|||d	d
� | j|Ž \}}| j|f|žŽ }	t |	d¡ d S )Nr   ç      ð?Úrv_histogram_instance)çñhãˆµøä>r   )çH¯¼šò×z>r   c                 S   s   dS )Né   r   ©Úxr   r   r   Ú<lambda>    ó    z%check_normalization.<locals>.<lambda>)ÚargsT)ÚatolÚrtolÚerr_msgÚverbose)r   )Úmomentr   r   ÚexpectÚsupportÚcdf)
Údistfnr   ÚdistnameZnorm_momentr   r   Znormalization_expectZ_aÚ_bZnormalization_cdfr   r   r   Úcheck_normalization   s    
 ÿr)   c                 C   s¨   | j d	|žŽ }| j d
|žŽ }t |¡s>tj||d|d d� nt t |¡|dt|ƒ  ¡ t |¡s†tj|||  |d|d d� nt t |¡|dt|ƒ  ¡ d S )Nr   é   é
   z - 1st moment©Údecimalr    z - 1st moment -infinite, m1=%sz - 2ndt momentz - 2nd moment -infinite, m2=%s)r   )r*   )r"   ÚnpÚisinfr   Úassert_almost_equalÚassert_Ústr)r&   ÚargÚmÚvÚmsgÚm1Úm2r   r   r   Úcheck_moment)   s     
ÿ
ÿ
ÿ
ÿr9   c                 C   s4   t  |¡r0|  dd„ |¡}tj||d|d d� d S )Nc                 S   s   | S r   r   r   r   r   r   r   =   r   z#check_mean_expect.<locals>.<lambda>é   z - 1st moment (expect)r,   )r.   Úisfiniter#   r   r0   )r&   r3   r4   r6   r7   r   r   r   Úcheck_mean_expect;   s
    
ÿr<   c                 C   sJ   |dkrddini }t  |¡rF|  dd„ |¡}tj||||  f|Ž d S )Nr   r   gñhãˆµøÔ>c                 S   s   | |  S r   r   r   r   r   r   r   E   r   z"check_var_expect.<locals>.<lambda>)r.   r;   r#   r   r   )r&   r3   r4   r5   r6   Úkwargsr8   r   r   r   Úcheck_var_expectB   s    
r>   c                    sV   t  |¡rB|  ‡ fdd„|¡}tj||t  |d¡ d|d d� nt t  |¡¡ d S )Nc                    s   t  | ˆ  d¡S )Né   ©r.   Úpowerr   ©r4   r   r   r   K   r   z#check_skew_expect.<locals>.<lambda>g      ø?r:   z - skewr,   )r.   r;   r#   r   r0   rA   r1   Úisnan)r&   r3   r4   r5   Úsr6   Zm3er   rB   r   Úcheck_skew_expectI   s    
 ÿrE   c                    sf   t  |¡rH|  ‡ fdd„|¡}tj||d t  |d¡ dd|d d� nt  |¡sbt t  |¡¡ d S )Nc                    s   t  | ˆ  d¡S )Né   r@   r   rB   r   r   r   T   r   z#check_kurt_expect.<locals>.<lambda>g      @r*   r   z - kurtosis)r   r   r    )	r.   r;   r#   r   r   rA   Zisposinfr1   rC   )r&   r3   r4   r5   Úkr6   Zm4er   rB   r   Úcheck_kurt_expectR   s    
ÿ
rH   c                 C   s&   | j |Ž }t t |¡ |d ¡ d S )Nztest Entropy is nan)Úentropyr   r1   r.   rC   )r&   r3   r6   Úentr   r   r   Úcheck_entropy[   s    
rK   c                 C   s"   t  | j|Ž |j| f|žŽ ¡ d S r   )r   r   Z_entropy)r&   r   Ú
superclassr   r   r   Úcheck_private_entropy`   s    ÿrM   c                    s°   t  ddgddgg¡}ˆjˆ d|iŽ}‡ ‡fdd„| ¡ D ƒ}t  |¡ |j¡}t||dd	� ddd
g}ˆjˆ d|iŽ}‡ ‡fdd„|D ƒ}t  |¡ |j¡}t||dd	� d S )Nr   r*   r?   rF   Úscalec                    s   g | ]}ˆj ˆ d |iŽ‘qS ©rN   ©rI   ©Ú.0rD   ©r3   r&   r   r   Ú
<listcomp>j   s     z,check_entropy_vect_scale.<locals>.<listcomp>g›+¡†›„=)r   éýÿÿÿc                    s   g | ]}ˆj ˆ d |iŽ‘qS rO   rP   rQ   rS   r   r   rT   q   s     )r.   ÚasarrayrI   ZravelZreshapeÚshaper   )r&   r3   ÚscZv_entZs_entr   rS   r   Úcheck_entropy_vect_scalef   s    
rY   c                 C   s:  | j |Ž }t| tjƒr*|d d |d f}t | j|f|žŽ ddg¡ t | j|f|žŽ ddg¡ | jdkr¬t | j	|f|žŽ t
j dg¡ t | j|f|žŽ dt
j g¡ t | jddgf|žŽ |¡ t | jddgf|žŽ |d d d… ¡ t t
 | jddgf|žŽ ¡ ¡ ¡ t t
 | jddgf|žŽ ¡ ¡ ¡ d S )Nr   r   g        r   )ZskellamZdlaplaceéÿÿÿÿr*   )r$   Ú
isinstancer   Zrv_discreter   r   r%   ÚsfÚnameÚlogcdfr.   ÚinfÚlogsfÚppfÚisfr1   rC   Úall)r&   r   r   r   r   r   Úcheck_edge_supportv   s    

  &$rd   c                    s�  t | jƒ}t |jd k¡ t |jd k¡ t |j ¡ t t|jƒt|ƒk¡ |j	d t
|ƒ … }| jr~| j dd¡ ¡ }nd}t t
|ƒ| jk¡ t t
|ƒt
|ƒk¡ tˆƒ‰‡‡fdd„|D ƒ}t t t |¡¡¡ |d d … ˆd d … i   }	‰ ‰|	�rlˆ |	 ¡ ˆ  ¡ i¡ ‡ ‡‡fdd„|D ƒ}
t ||
¡ dˆ ¡ krþt | jdˆ žˆŽ| jdˆžŽ ¡ qþˆ d	d
i¡ tt| jˆfˆŽ d S )Nú,ú Ú c                    s   g | ]}|ˆfˆ žŽ ‘qS r   r   ©rR   Úmeth)Ú
shape_argsr   r   r   rT   ¡   s     z$check_named_args.<locals>.<listcomp>c                    s   g | ]}|ˆfˆ žˆŽ‘qS r   r   rh   )ÚarG   r   r   r   rT   §   s     Únr   Zkaboomé*   )r   )r   )Ú_getfullargspecÚ_parse_argsr   r1   ÚvarargsÚvarkwÚ
kwonlyargsÚlistÚdefaultsr   ÚlenÚshapesÚreplaceÚsplitZnumargsr.   rc   r;   ÚupdateÚpopZassert_array_equalÚkeysr   r"   Úassert_raisesÚ	TypeErrorr%   )r&   r   rj   rt   ÚmethsÚ	signatureZshape_argnamesZshapes_ÚvalsÚnamesr5   r   )rk   rG   rj   r   r   Úcheck_named_argsŒ   s2    
 ÿr‚   c           	      C   sð   | j }tj d¡ d | _ | j|ddiŽ}d| _ | j|ddiŽ}t ||¡ tj d¡| _ | j|ddiŽ}t ||¡ ttjdƒržtj 	d¡}| j|d|dœŽ d| _ | j  
¡ }| j|dtj d¡dœŽ}t ||¡ t | j  
¡ |¡ || _ d S )NéÒ  Úsizeé   Údefault_rngr   )r„   Úrandom_stater*   )r‡   r.   ÚrandomÚseedÚrvsr   r   ZRandomStateÚhasattrr†   Z	get_state)	r&   r   ÚrndmÚr0Úr1Úr2ÚrngZ
orig_stateZr3r   r   r   Úcheck_random_state_property³   s&    
r‘   c                    s–   dddg}| j |f|žŽ ‰ ‡ fdd„tjtjtjtjfD ƒ}|D ]P}| j|Ž  || j|k || jk @  }|D ]$}||f|žŽ }t	 
|jtjk¡ qjq@d S )Nç      Ð?ç      à?ç      è?c                    s   g | ]}ˆ   |¡‘qS r   ©Zastype©rR   Útp©Zx0r   r   rT   ß   s     z$check_meth_dtype.<locals>.<listcomp>)ra   r.   Úint_Úfloat16Úfloat32Úfloat64Ú	_argcheckrk   Úbr   r1   ÚdtypeÚfloat_)r&   r3   r~   Úq0Úx_castr   ri   Úvalr   r˜   r   Úcheck_meth_dtypeÜ   s    

ÿ
r¤   c                    sn   t  dddg¡‰ ‡ fdd„t jt jt jfD ƒ}|D ]6}| j| jfD ]$}||f|žŽ }t |j	t j
k¡ qBq2d S )Nr’   r“   r”   c                    s   g | ]}ˆ   |¡‘qS r   r•   r–   ©r¡   r   r   rT   í   s     z#check_ppf_dtype.<locals>.<listcomp>)r.   rV   rš   r›   rœ   ra   rb   r   r1   rŸ   r    )r&   r3   Zq_castÚqri   r£   r   r¥   r   Úcheck_ppf_dtypeë   s    r§   c                    s\  dd„ }| j dddgf|žŽ ‰ ‡ fdd„tjtjtjtjfD ƒ}|D �]}| j|Ž  || j|k || jk @  }| j	|f|žŽ | j
|f|žŽ | j|f|žŽ   }}}t|| j
|f|žŽ |dd	� t|| j|f|žŽ || dd	� t|| j|f|žŽ | dd	� t|| j|f|žŽ | | dd	� t|| j|f|žŽ || j	|f|žŽ | j	|f|žŽ  dd	� qDd S )
Nc                 W   s*   t  |¡}d}| ||d  f|žŽ | jS )Ng»½×Ùß|Û=y              ð?)r.   rV   Úimag)Úfr   r3   Úhr   r   r   Úderivö   s    
z check_cmplx_deriv.<locals>.derivr’   gR¸…ëQà?r”   c                    s   g | ]}ˆ   |¡‘qS r   r•   r–   r˜   r   r   rT   ü   s     z%check_cmplx_deriv.<locals>.<listcomp>r   ©r   )ra   r.   r™   rš   r›   rœ   r�   rk   rž   Úpdfr%   r\   r   r^   r`   Zlogpdf)r&   r3   r«   r¢   r   r­   r%   r\   r   r˜   r   Úcheck_cmplx_derivô   s"    
ÿ

4 " þr®   c                 C   sJ  | j }d| _ | j|ddiŽ t | ¡}| j|ddiŽ}t |¡}|j|ddiŽ}t ||¡ | jd	|žŽ |jd
|žŽ g}t |d |d ¡ t | j|d f|žŽ |j|d f|žŽ ¡ | |Ž }t |¡}	t |	¡}|jdd�}|jdd�}t ||¡ t	| dƒ�r@| j
}
t |
¡}t |¡}|
j|j  k�r:dk�s@n t‚|| _ d S )Nrƒ   r„   r…   r“   r   r   )r„   Úfit)r“   )r“   )r‡   rŠ   ÚpickleÚdumpsÚloadsr   r   ra   r%   r‹   r¯   Ú__name__ÚAssertionError)r&   r   rŒ   rD   r�   Z	unpickledrŽ   ZmediansZfrozen_distZpklZfit_functionZpickled_fit_functionZunpickled_fit_functionr   r   r   Úcheck_pickling  s2    

ÿ



"rµ   c                 C   sV   t | tjƒrdddœ}nddi}| ||Ž}|j| |Ž jks>t‚|j| |Ž jksRt‚d S )Nr   r*   )ÚlocrN   r¶   )r[   r   Zrv_continuousrk   r´   rž   )r&   r   ZlocscaleÚrvr   r   r   Úcheck_freezing;  s    
r¸   c           	         sh   t j d¡ ˆ j|Ž }t|j|d| ƒ |sdt j‡ fdd„|d�}t j d¡ ||Ž }t||dd� d S )Né{   z%s: rvs failed to broadcastc                     s
   ˆ j | Ž S r   )rŠ   )Úallargs©Údistfuncr   r   r   M  r   z%check_rvs_broadcast.<locals>.<lambda>)Zotypesg‚vIhÂ%<=r¬   )r.   rˆ   r‰   rŠ   r   rW   Z	vectorizer   )	r¼   r'   rº   rW   Z
shape_onlyÚotypeÚsamplerŠ   Úexpectedr   r»   r   Úcheck_rvs_broadcastH  s    
rÀ   c              	   C   sÚ  | j d krg n
| j  d¡}tt||p&g ƒƒ}| dd ¡}d}d}d}d|k�r | jf d|i|—Ž}	| jdd|i|—Ž}
t|
|	ƒ tt	t
 |¡d�� | jf d|i|—Ž W 5 Q R X tt	t
 |¡d�� | jd	|Ž W 5 Q R X | jd
|žŽ }
t|
|	ƒ tt	t
 |¡d�� | jf |Ž W 5 Q R X n¶| jf |Ž}	tt	t
 |¡d�� | jdddi|—Ž}
W 5 Q R X tj t¡�$ | jf ddi|—Ž}
t|
|	ƒ W 5 Q R X | jd|žŽ }
t|
|	ƒ tt	t
 |¡d�� | jf |Ž W 5 Q R X d S )Nú, rl   z/moment() missing 1 required positional argumentz9_parse_args() missing 1 required positional argument: 'n'z/moment() got multiple values for first argumentr   ©Úmatch)r   )r   )r   )r   )r   )rv   rx   ÚdictÚziprz   Zmeanr"   r   r|   r}   ÚreÚescaper.   ÚtestingÚassert_warnsÚDeprecationWarning)r&   r3   r'   rv   Ú
kwd_shapesrl   Úmessage1Úmessage2Úmessage3r¿   r   r   r   r   Ú'check_deprecation_warning_gh5982_momentS  s8    



rÏ   c              	      sâ  ˆ j d krg n
ˆ j  d¡}tt||p&g ƒƒ}| dd ¡}‡ fdd„}d}d}d}	d|k�r*|f d|i|—Ž}
ˆ jdd|i|—Ž}t||
ƒ ttt	 
|¡d	�� ˆ jf d|i|—Ž W 5 Q R X ttt	 
|¡d	�� ˆ jd|Ž W 5 Q R X ˆ jd|žŽ }t||
ƒ ttt	 
|¡d	�� ˆ jf |Ž W 5 Q R X n´|f |Ž}
ttt	 
|	¡d	�� ˆ jddd
i|—Ž}W 5 Q R X tj t¡�$ ˆ jf ddi|—Ž}t||
ƒ W 5 Q R X ˆ jd|žŽ }t||
ƒ ttt	 
|¡d	�� ˆ jf |Ž W 5 Q R X d S )NrÁ   Úalphac                     s    ˆ j d| ž|Žˆ j d| ž|ŽfS )Nr’   r”   )r’   )r”   )ra   )r   Úkwds©r&   r   r   Úmy_interval‘  s    ÿz>check_deprecation_warning_gh5982_interval.<locals>.my_intervalz1interval() missing 1 required positional argumentz=_parse_args() missing 1 required positional argument: 'alpha'z1interval() got multiple values for first argumentr“   rÂ   r   )r“   )r“   )r“   )r“   )r“   )rv   rx   rÄ   rÅ   rz   Úintervalr   r|   r}   rÆ   rÇ   r.   rÈ   rÉ   rÊ   )r&   r3   r'   rv   rË   rÐ   rÓ   rÌ   rÍ   rÎ   r¿   r   r   rÒ   r   Ú)check_deprecation_warning_gh5982_intervalŠ  s:    




rÕ   )F)*r°   rÆ   Únumpyr.   Znumpy.testingrÈ   r   r   r   Zpytestr   r|   Znumpy.ma.testutilsr   Z	testutilsr	   Zscipy._lib._utilr   rn   Zscipyr   r   r)   r9   r<   r>   rE   rH   rK   rM   rY   rd   r‚   r‘   r¤   r§   r®   rµ   r¸   rÀ   rÏ   rÕ   r   r   r   r   Ú<module>   s:   
		')	+7