o
    `^h0                     @   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lmZ d0d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 )1    N)assert_allcloseassert_equal)raises)getfullargspec_no_selfnp_long)xp_assert_equal)statsFc                 C   sf   t |D ],\}}|rt| | t| | q|d ur%t| | t| | qt| | t| | qd S N)	enumeratema_nptr   getattrr   npt)res
attributesmaxpiattr r   \/home/air/shanriGPT/back/venv/lib/python3.10/site-packages/scipy/stats/tests/common_tests.pycheck_named_results   s   r   c           
      C   s   | j dg|R  }t|d |dkrd\}}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    distnamenorm_momentr!   r"   normalization_expect_a_bnormalization_cdfr   r   r   check_normalization   s   
r0   c                 C   s   | j dg|R  }| j dg|R  }t|s#tj||d|d d ntt||dt|   t|sItj|||  |d|d d d S tt||d|  d S )	Nr      
   z - 1st momentdecimalr#   z - 1st moment -infinite, m1=z - 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   s8   t |r| dd |}tj||d|d d d S d S )Nc                 S   s   | S r	   r   r   r   r   r   r   @   r   z#check_mean_expect.<locals>.<lambda>   z - 1st moment (expect)r3   )r5   isfiniter&   r   r7   )r)   r:   r;   r=   r>   r   r   r   check_mean_expect>   s   


rC   c                 C   sZ   ddh}||v rddini }t |r+| dd |}tj||||  fi | d S d S )Nr   ksoner"   gh㈵>c                 S   s   | |  S r	   r   r   r   r   r   r   I       z"check_var_expect.<locals>.<lambda>)r5   rB   r&   r   r   )r)   r:   r;   r<   r=   dist_looser_toleranceskwargsr?   r   r   r   check_var_expectE   s   
 rH   c                    sX   t |r"|  fdd|}tj||t |d d|d d d S tt | d S )Nc                       t |   dS )N   r5   powerr   r;   r   r   r   O       z#check_skew_expect.<locals>.<lambda>g      ?rA   z - skewr3   )r5   rB   r&   r   r7   rL   r8   isnan)r)   r:   r;   r<   sr=   m3er   rM   r   check_skew_expectM   s   

rR   c                    sl   t |r%|  fdd|}tj||d t |d dd|d d d S t |s4tt | d S d S )Nc                    rI   )N   rK   r   rM   r   r   r   X   rN   z#check_kurt_expect.<locals>.<lambda>g      @r1   r   z - kurtosisr!   r"   r#   )	r5   rB   r&   r   r   rL   isposinfr8   rO   )r)   r:   r;   r<   kr=   m4er   rM   r   check_kurt_expectV   s   


rX   c                 C   sj   | j jtjj kr3| jdg|R  }| jdd |tj tjd}t|s&d S t	||dd|d d d S d S )	NrA   c                 S   s   | d S )NrA   r   r   r   r   r   r   e   rE   z#check_munp_expect.<locals>.<lambda>)lbub绽|=g-C6?z - higher moment / _munprT   )
_munp__func__r   rv_continuousr%   r&   r5   infrB   r   )distr    r=   r   refr   r   r   check_munp_expect`   s   


rb   c                 C   s&   | j | }tt| |d  d S )Nztest Entropy is nan)entropyr   r8   r5   rO   )r)   r:   r=   entr   r   r   check_entropym   s   
re   c                 C   s$   t | j| |j| g|R   d S r	   )r   r   _entropy)r)   r    
superclassr   r   r   check_private_entropyr   s   rh   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   r1   rJ   rS   scalec                       g | ]
}j  d |iqS ri   rc   .0rP   r:   r)   r   r   
<listcomp>|       z,check_entropy_vect_scale.<locals>.<listcomp>g+=)r!   )r   r1   c                    rj   rk   rl   rm   ro   r   r   rp      rq   )r5   asarrayrc   ravelreshapeshaper   )r)   r:   scv_ents_entr   ro   r   check_entropy_vect_scalex   s   rz   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rZt| 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   )skellamdlaplacer1   )r'   
isinstancer   rv_discreter   r   r(   sfnamelogcdfr5   r_   logsfppfisfr8   rO   all)r)   r    r   r   r   r   check_edge_support   s   

""(&*r   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 }	 |	r|	   i  fdd|D }
t||
 d vrt| jdg R i | jdgR   |	sd	d
i tt| jfi  d S )N,  c                    s   g | ]
}|g R  qS r   r   rn   meth)
shape_argsr   r   r   rp      rq   z$check_named_args.<locals>.<listcomp>c                    s"   g | ]}|g R i qS r   r   r   )arV   r   r   r   rp      s   " nr   kaboom*   )_getfullargspec_parse_argsr   r8   varargsvarkw
kwonlyargslistdefaultsr    lenshapesreplacesplitnumargsr5   r   rB   updatepopassert_array_equalkeysr   r%   assert_raises	TypeErrorr(   )r)   r   r   r   meths	signatureshape_argnamesshapes_valsnamesr<   r   )r   rV   r   r   r   check_named_args   s4   
 
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rOtj	d}| j|d|d d| _ | j 
 }| j|dtjdd}t|| t| j 
 | || _ d S )N  size   default_rngr   )r   random_stater1   )r   r5   randomseedrvsr   r   RandomStatehasattrr   	get_state)	r)   r    rndmr0r1r2rng
orig_state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 ])}| j|  || j|k || jk @  }|D ]}||g|R  }t	
|jtjk q4qd S )N      ?      ?      ?c                       g | ]}  |qS r   astypern   tpx0r   r   rp          z$check_meth_dtype.<locals>.<listcomp>)r   r   r5   float16float32float64	_argcheckr   br   r8   dtype)r)   r:   r   q0x_castr   r   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 ]}| j| jfD ]}||g|R  }t|j	t jk q qd S )Nr   c                    r   r   r   r   r   r   r   rp      r   z#check_ppf_dtype.<locals>.<listcomp>)
r5   rs   r   r   r   r   r   r   r8   r   )r)   r:   q_castqr   r   r   r   r   check_ppf_dtype   s   r   c                    sl  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 q!d S )Nc                 W   s,   t |}d}| ||d  g|R  | jS )Nr[   y              ?)r5   rs   imag)fr   r:   hr   r   r   deriv  s   
z check_cmplx_deriv.<locals>.deriv)r   gRQ?r   c                    r   r   r   r   r   r   r   rp     r   z%check_cmplx_deriv.<locals>.<listcomp>r   r"   )r   r   r5   r   r   r   r   r   r   pdfr(   r   r   r   r   logpdf)r)   r:   r   r   r   r   r(   r   r   r   r   check_cmplx_deriv  s$   
:" $$r   c                 C   sR  | 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r| j
}
t|
}t|}|
j|j  krdksJ  J || _ d S )	Nr   r   r   r   r   r   )r   fit)r   r   pickledumpsloadsr   r   r   r(   r   r   __name__)r)   r    r   rP   r   	unpickledr   mediansfrozen_distpklfit_functionpickled_fit_function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s!J |j| | jks+J d S )Nr   r1   )locri   r   )r~   r   r^   r   r   )r)   r    locscalervr   r   r   check_freezingM  s   r   c           	         sn   t jd  j| }t|j|| d |s5t j fdd|d}t jd || }t||dd d S d S )N{   z: rvs failed to broadcastc                     s
    j |  S r	   )r   )allargsdistfuncr   r   r   _  s   
 z%check_rvs_broadcast.<locals>.<lambda>)otypesgvIh%<=r   )r5   r   r   r   r   rv   	vectorizer   )	r   r*   r   rv   
shape_onlyotypesampler   expectedr   r   r   check_rvs_broadcastZ  s   
r   )FN)+r   numpyr5   numpy.testingtestingr   r   r   pytestr   r   numpy.ma.testutilsr   	testutilsr   scipy._lib._utilr   r   r   scipy._lib._array_api_no_0dr   scipyr   r   r0   r@   rC   rH   rR   rX   rb   re   rh   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s:    

	
')	+