o
    tBhF,                     @   s  d dl mZ d dlZd dlZd dlmZ ddlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZ g dg dfZeejedd	gg7 Zd
dhZdd Zejde dd Z ejdedd Z!ejdedd Z"ejdedd Z#ejdedd Z$dd Z%dd  Z&d!d" Z'd#d$ Z(d%d& Z)d'd( Z*ejd)g d*ejd+ed,d- Z+ejd+ed.d/ Z,dS )0    N)stats   )check_normalizationcheck_momentcheck_mean_expectcheck_var_expectcheck_skew_expectcheck_kurt_expectcheck_entropycheck_private_entropycheck_edge_supportcheck_named_argscheck_random_state_propertycheck_picklingcheck_rvs_broadcastcheck_freezing)distdiscreteinvdistdiscrete)r            )皙?皙?g333333?g?)values zipfian
nhypergeomc                  c   sV    t  } tD ]"\}}|tv rtj|||tjjdV  n|||| vfV  | | qd S )N)marks)setr   distslowpytestparammarkslowadd)seendistnameargr   r   |/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/scipy/stats/tests/test_discrete_basic.pycases_test_discrete_basic   s   r)   zdistname,arg,first_casec                 C   s^  zt t| }W n ty   | }d} Y nw tjd |j|ddi}t|}|j| \}}t|||| d  t	|||  t
|||| d  t|| d}t||||| d  |rd	}	|j|j|j|j|jg}
d
dddd}|| d}t||||	|
 | dkrt| t|| t|| t|| t|||  |jjtjjkrt||tj d S d S d S )Nsample distributioniP sizei  z cdf_ppfz oth{Gz?z
 chisquare)r      r   r      )randint	hypergeom	bernoullinchypergeom_walleniusr   )getattrr   	TypeErrornprandomseedrvsuniquecheck_cdf_ppfcheck_pmf_cdf	check_othr   check_discrete_chisquarepmflogpmfcdflogcdflogsfgetr   check_scale_docstringr   r   r   r
   	__class___entropyrv_discreter   )r&   r'   
first_casedistfnr8   suppmvalphalocscale_defaultsmethsspec_kkr   r   r(   test_discrete_basic   sL   





rR   zdistname,argc                 C   s   zt t| }W n ty   | }d} Y nw |j|ddi\}}}}t|||  t|||||  t||||  t|||||  t||||||  | dvrTt||||||  t	|||d t	|||||  d d S )Nr*   momentsmvsk)zipf	yulesimonr   r   )
r3   r   r4   r   r   r   r   r   r	   check_moment_frozen)r&   r'   rI   rK   rL   srQ   r   r   r(   test_momentsJ   s    rY   zdist,shape_argsc                 C   s   | dv }zt t| }W n ty   | }d| j| jf } Y nw td}|j}g }g }t|D ]"}|d fd|d   }	|| }
|	t
|	|
 |d|	d  q/|	| |	|j t|| |||tjg d S )N)	betabinomskellamrV   dlaplacenchypergeom_fisherr2   zrv_discrete(values=(%r, %r))r   r   )r   r   r   )r3   r   r4   xkpkr5   zerosnumargsrangeappendfullinsertr+   r   int_)dist
shape_args
shape_onlydistfunclocnargsallargsbshaperQ   shp	param_valr   r   r(   test_rvs_broadcasta   s&   

rq   z	dist,argsc              	   C   s   zt t| }W n ty   | }Y nw tjd tjdddtjddg}|j| \}}|D ]&}t	|d | || g|j
dg|R d|i|j
d	g|R d|ig q1d S )
NM r   r   
           rk         ?)r3   r   r4   r5   r6   r7   r/   supportnptassert_array_equalppf)rg   argsrI   re_locs_a_brk   r   r   r(   test_ppf_with_loc   s   .r   z
dist, argsc           	      C   sP  zt t| }W n ty   | }Y nw tjd tjdddtjddg}|j| \}}|D ]*}|| |d | f}|jdg|R d|i|jd	g|R d|if}t	
|| q1tjjddd
dtd
tjjddd
dg}|j| \}}|D ]*}|| |d | f}|jdg|R d|i|jd	g|R d|if}t	
|| q{d S )Nrr   rs   rt   r   r   ru   rv   rk   rw   )   r   )r+   )r3   r   r4   r5   r6   r7   r/   rx   isfry   rz   r`   )	rg   r|   rI   r}   r~   r   rk   expectedresr   r   r(   test_isf_with_loc   s,   00r   c                 C   s   t | j| j|g|R  g|R  ||d  t | j| j|g|R  d g|R  ||d  t| ds`| j| \}}|||k  }t | j| j|g|R  d g|R  || j |d  d S d S )Nz
-roundtrip:0yE>r^   z ppf-cdf-next)ry   rz   r{   r@   hasattrrx   inc)rI   r'   rJ   msgr~   r   supp1r   r   r(   r:      s   "&
&r:   c           	      C   s   t | dr	| j}nt| jdg|R  d }tt||d }| j|g|R  }| j|g|R   }d\}}|dkr?d\}}t	j
||d  ||d  ||d	 d S )
Nr^   r,   r   ru   )绽|=r   r[   )h㈵>r   r   atolrtol)r   r^   intr{   listrb   r@   r>   cumsumry   assert_allclose)	rI   r'   r&   indexstartindcdfspmfs_cumr   r   r   r   r(   r;      s   

r;   c                 C   s    t j| | ||ddd d S )Nr   r   )ry   r   moment)rI   r'   rK   rQ   r   r   r(   rW      s   
rW   c                 C   s   t j| j|g|R  d| j|g|R   ddd tddd}t j| j|g|R  | jd| g|R  ddd | jdg|R  }t | j|d g|R  dk t | j|d g|R  dk d S )	Nrw   r   r   r,   gGz?   g      ?r   )	ry   r   sfr@   r5   linspacer   r{   assert_)rI   r'   rJ   r   q	median_sfr   r   r(   r<      s   (( $r<   c                 C   s>  d}| j | \}}tt|d}tt|dd }	t||	}
d}|g}g }|
D ])}| j|g|R  }|| |d krP|| |||  |}|d| krP nq'|d |k rc|| |d|  t|}t|}|d }||d< t	||\}}t
t|t|| \}}t||kd	|t|t|f  d
S )as  Perform chisquare test for random sample of a discrete distribution

    Parameters
    ----------
    distname : string
        name of distribution function
    arg : sequence
        parameters of distribution
    alpha : float
        significance level, threshold for p-value

    Returns
    -------
    result : bool
        0 if test passes, 1 if test fails

    g?ii  r   r   g+=rt   r   z2chisquare - test for %s at arg = %s with pval = %sN)rx   r   maxminrb   r@   rc   r5   array	histogramr   	chisquarelenry   r   str)rI   r'   r8   rM   r   wsuppr~   r   lohighdistsupportlastdistsuppdistmassiicurrenthistsuppfreqhsuppchispvalr   r   r(   r=      s>   





r=   c                 C   s"   | j d urtd| j v d S d S )Nscale)__doc__ry   r   )rI   r   r   r(   rD     s   
rD   method)r>   r?   r@   rA   r   rB   r{   r   zdistname, argsc                    s   zt t| W n
 ty   Y d S w | dv rddg}nddg}dd |D }ddg} j|g|R d|i}tj| fd	dt|g||R  D d
d
d d S )N)r{   r   r   r   r   r   c                 S   s   g | ]}|gd  qS )r   r   ).0pr   r   r(   
<listcomp>.      z+test_methods_with_lists.<locals>.<listcomp>rk   c                    s   g | ]} j | qS r   )r>   )r   rL   rg   r   r(   r   2  r   gV瞯<)r   r   )r3   r   r4   r>   ry   r   zip)r   r&   r|   zp2rk   resultr   r   r(   test_methods_with_lists   s   
 
r   c                 C   s>   t t| }tdd}|j|g|R  }tj}t|| d S )N   )r3   r   r5   aranger@   nanry   assert_equal)r&   r|   rg   xvalsr   r   r   r(   test_cdf_gh13280_regression6  s
   
r   )-numpy.testingtestingry   numpyr5   r    scipyr   common_testsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   scipy.stats._distr_paramsr   r   r   rG   r   r)   r"   parametrizerR   rY   rq   r   r   r:   r;   rW   r<   r=   rD   r   r   r   r   r   r(   <module>   s>    @

*

$

8