a
    Qe/                     @   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-d. Z'dS )0    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   R/var/www/sunrise/env/lib/python3.9/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   )Hz>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_expectZ_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|st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    


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_expect9   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   gh㈵>c                 S   s   | |  S r   r   r   r   r   r   r   D   r   z"check_var_expect.<locals>.<lambda>)r.   r;   r#   r   r   )r&   r3   r4   r5   r6   Zdist_looser_toleranceskwargsr8   r   r   r   check_var_expect@   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   J   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_expectH   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   S   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_expectQ   s    

rI   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   `   r   z#check_munp_expect.<locals>.<lambda>)ZlbZub绽|=g-C6?z - higher moment / _munprG   )
Z_munp__func__r   rv_continuousr"   r#   r.   infr;   r   )distr   r6   r   refr   r   r   check_munp_expect[   s    

rP   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_entropyh   s    
rS   c                 C   s$   t | j| |j| g|R   d S r   )r   r   Z_entropy)r&   r   
superclassr   r   r   check_private_entropym   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*   r?   rF   scalec                    s   g | ]}j  d |iqS rV   rQ   .0rD   r3   r&   r   r   
<listcomp>w   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   )r.   asarrayrQ   ZravelZreshapeshaper   )r&   r3   ZscZv_entZs_entr   r[   r   check_entropy_vect_scales   s    r`   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rt| 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dlaplacer*   )r$   
isinstancer   Zrv_discreter   r   r%   sfnamelogcdfr.   rM   logsfppfisfr1   rC   all)r&   r   r   r   r   r   check_edge_support   s    

""(&rj   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rt| 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   rn   )arH   r   r   r   r\      r   nr   Zkaboom*   )_getfullargspec_parse_argsr   r1   varargsvarkw
kwonlyargslistdefaultsr   lenZshapesreplacesplitZnumargsr.   ri   r;   updatepopZassert_array_equalkeysr   r"   assert_raises	TypeErrorr%   )r&   r   rp   rz   meths	signatureZshape_argnamesZshapes_valsnamesr5   r   )rq   rH   rp   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   g d}| j |g|R    fddtjtjtjtjfD }|D ]R}| j|  || j|k || jk @  }|D ]&}||g|R  }t	
|jtjk qjq@d S )N      ?      ?      ?c                    s   g | ]}  |qS r   ZastyperZ   tpZx0r   r   r\      r   z$check_meth_dtype.<locals>.<listcomp>)rg   r.   int_float16float32float64	_argcheckrq   br   r1   dtypefloat_)r&   r3   r   q0x_castr   ro   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>)r.   r^   r   r   r   rg   rh   r   r1   r   r   )r&   r3   Zq_castqro   r   r   r   r   check_ppf_dtype   s    r   c                    sp  dd }| j g dg|R    fddtj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 qDd S )Nc                 W   s,   t |}d}| ||d  g|R  | jS )NrJ   y              ?)r.   r^   imag)fr   r3   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   )rg   r.   r   r   r   r   r   rq   r   pdfr%   rc   r   re   rf   Zlogpdf)r&   r3   r   r   r   r   r%   rc   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   rg   r%   r   r   __name__)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   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   )rb   r   rL   rq   r   )r&   r   Zlocscalervr   r   r   check_freezingH  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   Z  r   z%check_rvs_broadcast.<locals>.<lambda>)ZotypesgvIh%<=r   )r.   r   r   r   r   r_   Z	vectorizer   )	r   r'   r   r_   Z
shape_onlyZotypesampler   expectedr   r   r   check_rvs_broadcastU  s    
r   )F)(r   numpyr.   Znumpy.testingZtestingr   r   r   Zpytestr   r   Znumpy.ma.testutilsr   Z	testutilsr	   Zscipy._lib._utilr   rt   Zscipyr   r   r)   r9   r<   r>   rE   rI   rP   rS   rU   r`   rj   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s6   
	
')	+