a
    ˆù»j_1  ã                   @   s  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mZ d dlmZ d/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S )0é    N)Úassert_allcloseÚassert_equal)Úraises)Úgetfullargspec_no_selfÚnp_long)Ú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   úDE:\soccer\ml_env\Lib\site-packages\scipy/stats/tests/common_tests.pyÚcheck_named_results   s    r   c           
      C   s�   | j dg|¢R Ž }t |d¡ |dkr0d\}}nd\}}| jdd„ |d�}tj|d|||d	d
� | j|Ž \}}| j|g|¢R Ž }	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)Úmomentr   r   ÚexpectÚsupportÚcdf)
Údistfnr   ÚdistnameZnorm_momentr   r    Znormalization_expectÚ_aÚ_bZnormalization_cdfr   r   r   Úcheck_normalization   s    
ÿr+   c                 C   s®   | j dg|¢R Ž }| j dg|¢R Ž }t |¡sFtj||d|d d� nt t |¡|dt|ƒ  ¡ t |¡sŽtj|||  |d|d d� nt t |¡|d|›� ¡ d S )	Nr   é   é
   z - 1st moment©Údecimalr!   z - 1st moment -infinite, m1=%sz - 2ndt momentz - 2nd moment -infinite, m2=)r#   ÚnpÚisinfr   Úassert_almost_equalÚassert_Ústr)r'   ÚargÚmÚvÚmsgÚm1Úm2r   r   r   Úcheck_moment*   s    

ÿÿ
ÿr;   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.   )r0   Úisfiniter$   r   r2   )r'   r5   r6   r8   r9   r   r   r   Úcheck_mean_expect;   s
    

ÿr>   c                 C   sV   ddh}||v rddini }t  |¡rR|  dd„ |¡}tj||||  fi |¤Ž d S )Nr   Zksoner    gñhãˆµøÔ>c                 S   s   | |  S r   r   r   r   r   r   r   F   r   z"check_var_expect.<locals>.<lambda>)r0   r=   r$   r   r   )r'   r5   r6   r7   r8   Zdist_looser_tolerancesÚkwargsr:   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é   ©r0   Úpowerr   ©r6   r   r   r   L   r   z#check_skew_expect.<locals>.<lambda>g      ø?r<   z - skewr.   )r0   r=   r$   r   r2   rC   r3   Úisnan)r'   r5   r6   r7   Úsr8   Zm3er   rD   r   Úcheck_skew_expectJ   s    
ÿrG   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é   rB   r   rD   r   r   r   U   r   z#check_kurt_expect.<locals>.<lambda>g      @r,   r   z - kurtosis©r   r    r!   )	r0   r=   r$   r   r   rC   Zisposinfr3   rE   )r'   r5   r6   r7   Úkr8   Zm4er   rD   r   Úcheck_kurt_expectS   s    
þ
rK   c                 C   sf   | j jtjj krb| jdg|¢R Ž }| jdd„ |tj tjd�}t |¡sLd S t	||dd|d d� d S )	Nr<   c                 S   s   | d S )Nr<   r   r   r   r   r   r   b   r   z#check_munp_expect.<locals>.<lambda>)ZlbZubç»½×Ùß|Û=g-Cëâ6?z - higher moment / _munprI   )
Z_munpÚ__func__r   Úrv_continuousr#   r$   r0   Úinfr=   r   )Údistr   r8   r   Úrefr   r   r   Úcheck_munp_expect]   s    

ÿrR   c                 C   s&   | j |Ž }t t |¡ |d ¡ d S )Nztest Entropy is nan)Úentropyr   r3   r0   rE   )r'   r5   r8   Zentr   r   r   Úcheck_entropyj   s    
rT   c                 C   s$   t  | j|Ž |j| g|¢R Ž ¡ d S r   )r   r   Z_entropy)r'   r   Z
superclassr   r   r   Úcheck_private_entropyo   s    ÿrU   c                    s®   t  ddgddgg¡}ˆjˆ d|iŽ}‡ ‡fdd„| ¡ D ƒ}t  |¡ |j¡}t||dd	� g d
¢}ˆjˆ d|iŽ}‡ ‡fdd„|D ƒ}t  |¡ |j¡}t||dd	� d S )Nr   r,   rA   rH   Úscalec                    s   g | ]}ˆj ˆ d |iŽ‘qS ©rV   ©rS   ©Ú.0rF   ©r5   r'   r   r   Ú
<listcomp>y   r   z,check_entropy_vect_scale.<locals>.<listcomp>g›+¡†›„=)r   )r   r,   éýÿÿÿc                    s   g | ]}ˆj ˆ d |iŽ‘qS rW   rX   rY   r[   r   r   r\   €   r   )r0   ÚasarrayrS   ZravelZreshapeÚshaper   )r'   r5   ÚscZv_entZs_entr   r[   r   Úcheck_entropy_vect_scaleu   s    ra   c                 C   sJ  | j |Ž }t| tjƒr*|d d |d f}t | j|g|¢R Ž ddg¡ t | j|g|¢R Ž ddg¡ | jdvr´t | j	|g|¢R Ž t
j dg¡ t | j|g|¢R Ž dt
j g¡ t | jddgg|¢R Ž |¡ t | jddgg|¢R Ž |d d d… ¡ t t
 | jddgg|¢R Ž ¡ ¡ ¡ t t
 | jddgg|¢R Ž ¡ ¡ ¡ d S )Nr   r   g        r   )ZskellamZdlaplaceéÿÿÿÿr,   )r%   Ú
isinstancer   Zrv_discreter   r   r&   ÚsfÚnameÚlogcdfr0   rO   ÚlogsfÚppfÚisfr3   rE   Úall)r'   r   r   r   r   r   Úcheck_edge_support…   s    

""(&rk   c                    s   t | jƒ}t |jd u ¡ t |jd u ¡ 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   }	‰ ‰|	�rxˆ |	 ¡ ˆ  ¡ i¡ ‡ ‡‡fdd„|D ƒ}
t ||
¡ dˆ ¡ vrþt | jdgˆ ¢R i ˆ¤Ž| jdgˆ¢R Ž ¡ qþˆ d	d
i¡ tt| jˆfi ˆ¤Ž d S )Nú,ú Ú c                    s   g | ]}|ˆgˆ ¢R Ž ‘qS r   r   ©rZ   Úmeth)Ú
shape_argsr   r   r   r\   °   r   z$check_named_args.<locals>.<listcomp>c                    s"   g | ]}|ˆgˆ ¢R i ˆ¤Ž‘qS r   r   ro   )ÚarJ   r   r   r   r\   ¶   r   Únr   Zkaboomé*   )Ú_getfullargspecÚ_parse_argsr   r3   ÚvarargsÚvarkwÚ
kwonlyargsÚlistÚdefaultsr   ÚlenZshapesÚreplaceÚsplitZnumargsr0   rj   r=   ÚupdateÚpopZassert_array_equalÚkeysr   r#   Úassert_raisesÚ	TypeErrorr&   )r'   r   rq   r{   ÚmethsÚ	signatureZshape_argnamesZshapes_ÚvalsÚnamesr7   r   )rr   rJ   rq   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�   r0   Ú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–   g d¢}| j |g|¢R Ž ‰ ‡ fdd„ttjtjtjfD ƒ}|D ]R}| j|Ž  || j|k || jk @  }|D ]&}||g|¢R Ž }t	 
|jtjk¡ qhq>d S )N©ç      Ð?ç      à?ç      è?c                    s   g | ]}ˆ   |¡‘qS r   ©Zastype©rZ   Útp©Zx0r   r   r\   î   r   z$check_meth_dtype.<locals>.<listcomp>)rh   r   r0   Úfloat16Úfloat32Úfloat64Ú	_argcheckrr   Úbr   r3   Údtype)r'   r5   r„   Úq0Úx_castr   rp   Úvalr   rŸ   r   Úcheck_meth_dtypeë   s    ÿ
r©   c                    sn   t  g d¢¡‰ ‡ fdd„t jt jt jfD ƒ}|D ]8}| j| jfD ]&}||g|¢R Ž }t |j	t jk¡ q@q0d S )Nr˜   c                    s   g | ]}ˆ   |¡‘qS r   rœ   r�   ©r¦   r   r   r\   ü   r   z#check_ppf_dtype.<locals>.<listcomp>)
r0   r^   r    r¡   r¢   rh   ri   r   r3   r¥   )r'   r5   Zq_castÚqrp   r¨   r   rª   r   Úcheck_ppf_dtypeú   s    r¬   c                    sn  dd„ }| j g d¢g|¢R Ž ‰ ‡ fdd„ttjtjtjfD ƒ}|D �]$}| j|Ž  || j|k || jk @  }| j	|g|¢R Ž | j
|g|¢R Ž | j|g|¢R Ž   }}}t|| j
|g|¢R Ž |dd� t|| j|g|¢R Ž || dd� t|| j|g|¢R Ž | dd� t|| j|g|¢R Ž | | dd� t|| j|g|¢R Ž || j	|g|¢R Ž | j	|g|¢R Ž  dd� qBd S )Nc                 W   s,   t  |¡}d}| ||d  g|¢R Ž | jS )NrL   y              ð?)r0   r^   Úimag)Úfr   r5   Úhr   r   r   Úderiv  s    
z check_cmplx_deriv.<locals>.deriv)r™   gR¸…ëQà?r›   c                    s   g | ]}ˆ   |¡‘qS r   rœ   r�   rŸ   r   r   r\     r   z%check_cmplx_deriv.<locals>.<listcomp>r   ©r    )rh   r   r0   r    r¡   r¢   r£   rr   r¤   Úpdfr&   rd   r   rf   rg   Zlogpdf)r'   r5   r°   r§   r   r²   r&   rd   r   rŸ   r   Úcheck_cmplx_deriv  s"    ÿ

:" $$þr³   c                 C   sV  | j }d| _ | j|ddiŽ t | ¡}| j|ddiŽ}t |¡}|j|ddiŽ}t ||¡ | jdg|¢R Ž |jdg|¢R Ž g}t |d |d ¡ t | j|d g|¢R Ž |j|d g|¢R Ž ¡ | |Ž }t |¡}	t |	¡}|jdd�}|jdd�}t ||¡ t	| dƒ�rL| j
}
t |
¡}t |¡}|
j|j  k�rFdk�sLn J ‚|| _ d S )	Nr‰   rŠ   r‹   rš   r   r   )rŠ   Úfit)r�   r�   ÚpickleÚdumpsÚloadsr   r   rh   r&   r‘   r´   Ú__name__)r'   r   r’   rF   r“   Z	unpickledr”   ZmediansZfrozen_distZpklZfit_functionZpickled_fit_functionZunpickled_fit_functionr   r   r   Úcheck_pickling  s2    

$ÿ



"r¹   c                 C   sZ   t | tjƒrdddœ}nddi}| |i |¤Ž}|j| |Ž jksBJ ‚|j| |Ž jksVJ ‚d S )Nr   r,   )ÚlocrV   rº   )rc   r   rN   rr   r¤   )r'   r   ZlocscaleÚrvr   r   r   Úcheck_freezingJ  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   \  r   z%check_rvs_broadcast.<locals>.<lambda>)Zotypesg‚vIhÂ%<=r±   )r0   rŽ   r�   r�   r   r_   Z	vectorizer   )	rÀ   r(   r¾   r_   Z
shape_onlyZotypeÚsampler�   Úexpectedr   r¿   r   Úcheck_rvs_broadcastW  s    
rÃ   )F))rµ   Únumpyr0   Znumpy.testingZtestingr   r   r   Zpytestr   r‚   Znumpy.ma.testutilsr   Z	testutilsr
   Zscipy._lib._utilr   ru   r   Zscipyr   r   r+   r;   r>   r@   rG   rK   rR   rT   rU   ra   rk   rˆ   r—   r©   r¬   r³   r¹   r¼   rÃ   r   r   r   r   Ú<module>   s6   
	
')	+