U
    /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   B/tmp/pip-unpacked-wheel-9gxwnfpp/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   )Hz>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|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     



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   gh㈵>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   ZscZv_entZs_entr   rS   r   check_entropy_vect_scalef   s    
rX   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        r   )ZskellamZdlaplacer*   )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    

  &$rc   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rt| 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   rg   )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.   rb   r;   updatepopZassert_array_equalkeysr   r"   assert_raises	TypeErrorr%   )r&   r   ri   rs   meths	signatureZshape_argnamesZshapes_valsnamesr5   r   )rj   rG   ri   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rt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r1Z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>)r`   r.   int_float16float32float64	_argcheckrj   br   r1   dtypefloat_)r&   r3   r}   q0x_castr   rh   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   r`   ra   r   r1   r   r   )r&   r3   Zq_castqrh   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   )r`   r.   r   r   r   r   r   rj   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   r`   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   )rZ   r   Zrv_continuousrj   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otypesgvIh%<=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, rk   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   )ru   rw   dictzipry   Zmeanr"   r   r{   r|   reescaper.   testingassert_warnsDeprecationWarning)r&   r3   r'   ru   
kwd_shapesrk   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   )r`   )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   )ru   rw   r   r   ry   intervalr   r{   r|   r   r   r.   r   r   r   )r&   r3   r'   ru   r   r   r   r   r   r   r   r   r   r   r   )check_deprecation_warning_gh5982_interval  s:    




r   )F)*r   r   Znumpyr.   Znumpy.testingr   r   r   r   Zpytestr   r{   Znumpy.ma.testutilsr   Z	testutilsr	   Zscipy._lib._utilr   rm   Zscipyr   r   r)   r9   r<   r>   rE   rH   rK   rM   rX   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s:   
		')	+7