B
    0d+                 @   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 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S ).    N)assert_allcloseassert_equal)raises)getfullargspec_no_self)statsFc             C   sL   xFt |D ]:\}}|r.t| | t| | q
t| | t| | q
W d S )N)	enumeratema_nptr   getattrnpt)res
attributesmaiattr r   P/var/www/html/venv/lib/python3.7/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   g      ?Zncf)gh㈵>r   )gHz>gHz>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|st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    

r2   c             C   s4   t |r0| dd |}tj||d|d d d S )Nc             S   s   | S )Nr   )r   r   r   r   r   >   r   z#check_mean_expect.<locals>.<lambda>   z - 1st moment (expect))r&   r   )r'   isfiniter   r
   r)   )r    r,   r-   r/   r0   r   r   r   check_mean_expect<   s    
r5   c             C   s<   t |r8| dd |}tj||||  d|d d d S )Nc             S   s   | |  S )Nr   )r   r   r   r   r   E   r   z"check_var_expect.<locals>.<lambda>r3   z - 2st moment (expect))r&   r   )r'   r4   r   r
   r)   )r    r,   r-   r.   r/   r1   r   r   r   check_var_expectC   s    
r6   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'   power)r   )r-   r   r   r   L   r   z#check_skew_expect.<locals>.<lambda>g      ?r3   z - skew)r&   r   )r'   r4   r   r
   r)   r8   r*   isnan)r    r,   r-   r.   sr/   Zm3er   )r-   r   check_skew_expectJ   s
    
r;   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'   r8   )r   )r-   r   r   r   U   r   z#check_kurt_expect.<locals>.<lambda>g      @r$   gh㈵>z - kurtosis)r   r   r   )	r'   r4   r   r
   r   r8   Zisposinfr*   r9   )r    r,   r-   r.   kr/   Zm4er   )r-   r   check_kurt_expectS   s    

r>   c             C   s&   | j | }tt| |d  d S )Nztest Entropy is nan)entropyr
   r*   r'   r9   )r    r,   r/   entr   r   r   check_entropy\   s    
rA   c             C   s"   t | j| |j| f|  d S )N)r
   r   Z_entropy)r    r   
superclassr   r   r   check_private_entropya   s    rC   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$   r7   r<   scalec                s   g | ]}j  d |iqS )rD   )r?   ).0r:   )r,   r    r   r   
<listcomp>k   s    z,check_entropy_vect_scale.<locals>.<listcomp>g+=)r   c                s   g | ]}j  d |iqS )rD   )r?   )rE   r:   )r,   r    r   r   rF   r   s    )r'   asarrayr?   ZravelZreshapeshaper   )r    r,   scZv_entZs_entr   )r,   r    r   check_entropy_vect_scaleg   s    
rK   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rt| 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        g      ?)ZskellamZdlaplacer$   )r   
isinstancer   Zrv_discreter
   r   r   sfnamelogcdfr'   inflogsfppfisfr*   r9   all)r    r   r   r   r   r   check_edge_supportw   s    

  &$rV   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   }	 xt|	rr|	   i  fdd|D }
t||
 d kr t| jd | jd  q W d	d
i tt| jf d S )N,  c                s   g | ]}|f  qS r   r   )rE   meth)
shape_argsr   r   r   rF      s    z$check_named_args.<locals>.<listcomp>c                s   g | ]}|f qS r   r   )rE   rZ   )ar=   r   r   r   rF      s    nr   Zkaboom*   )r   )r   )_getfullargspec_parse_argsr
   r*   varargsvarkw
kwonlyargslistdefaultsr   lenZshapesreplacesplitZnumargsr'   rU   r4   updatepopZassert_array_equalkeysr   r   assert_raises	TypeErrorr   )r    r   r[   re   meths	signatureZshape_argnamesZshapes_valsnamesr.   r   )r\   r=   r[   r   r   check_named_args   s0    
 rr   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rtj	d}| j|d|d d| _ | j 
 }| j|dtjdd}t|| t| j 
 | || _ d S )Ni  size   default_rngr   )rs   random_stater$   )rv   r'   randomseedrvsr
   r   ZRandomStatehasattrru   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 }x\|D ]T}| j|  || j|k || jk @  }x,|D ]$}||f| }t	
|jtjk qnW qBW d S )Ng      ?g      ?g      ?c                s   g | ]}  |qS r   )astype)rE   tp)x0r   r   rF      s    z$check_meth_dtype.<locals>.<listcomp>)rS   r'   int_float16float32float64	_argcheckr\   br
   r*   dtypefloat_)r    r,   rn   q0x_castr   rZ   valr   )r   r   check_meth_dtype   s    




r   c                sv   t dddg  fddt jt jt jfD }xB|D ]:}x4| j| jgD ]$}||f| }t|j	t j
k qFW q4W d S )Ng      ?g      ?g      ?c                s   g | ]}  |qS r   )r   )rE   r   )r   r   r   rF      s    z#check_ppf_dtype.<locals>.<listcomp>)r'   rH   r   r   r   rS   rT   r
   r*   r   r   )r    r,   Zq_castqrZ   r   r   )r   r   check_ppf_dtype   s    
r   c                sb  dd }| j dddgf|   fddtjtjtjtjfD }x|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	 qHW d S )
Nc             W   s*   t |}d}| ||d  f| | jS )Ng|=y              ?)r'   rH   imag)fr   r,   hr   r   r   deriv   s    
z check_cmplx_deriv.<locals>.derivg      ?gRQ?g      ?c                s   g | ]}  |qS r   )r   )rE   r   )r   r   r   rF      s    z%check_cmplx_deriv.<locals>.<listcomp>gh㈵>)r   )rS   r'   r   r   r   r   r   r\   r   pdfr   rN   r   rP   rR   Zlogpdf)r    r,   r   r   r   r   r   rN   r   )r   r   check_cmplx_deriv   s    

4 " r   c       
      C   s  | 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|| || _ d S )
Ni  rs   rt         ?r   r   )rs   )r   )r   )	rv   ry   pickledumpsloadsr
   r   rS   r   )
r    r   r{   r:   r|   Z	unpickledr}   ZmediansZfrozen_distZpklr   r   r   check_pickling  s&    



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$   )locrD   r   )rM   r   Zrv_continuousr\   AssertionErrorr   )r    r   Zlocscalervr   r   r   check_freezing5  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 )N)ry   )allargs)distfuncr   r   r   G  r   z%check_rvs_broadcast.<locals>.<lambda>)ZotypesgvIh%<=)r   )r'   rw   rx   ry   r   rI   Z	vectorizer   )	r   r!   r   rI   Z
shape_onlyotypesamplery   expectedr   )r   r   check_rvs_broadcastB  s    
r   )F)'r   numpyr'   Znumpy.testingtestingr
   r   r   Zpytestr   rl   Znumpy.ma.testutilsr   Z	testutilsr   Zscipy._lib._utilr   r_   Zscipyr   r   r#   r2   r5   r6   r;   r>   rA   rC   rK   rV   rr   r   r   r   r   r   r   r   r   r   r   r   <module>   s4   
		')	$