
    ge/                         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c mZ d dlmZ d dlmZ ddZd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'dS )    N)assert_allcloseassert_equal)raises)getfullargspec_no_self)statsFc                     t          |          D ]Z\  }}|r*t          j        | |         t          | |                     1t	          j        | |         t          | |                     [d S N)	enumeratema_nptr   getattrnpt)res
attributesmaiattrs        >lib/python3.11/site-packages/scipy/stats/tests/common_tests.pycheck_named_resultsr      sw    Z(( 9 94 	9AT(:(:;;;;SVWS$%7%78888	9 9    c                 2    | j         dg|R  }t          j        |d           |dk    rd\  }}nd\  }}|                     d |          }t          j        |d|||d	            | j        | \  }} | j        |g|R  }	t          j        |	d           d S )
Nr         ?rv_histogram_instance)h㈵>r   )Hz>r   c                     dS )N    xs    r   <lambda>z%check_normalization.<locals>.<lambda>   s    1 r   )argsT)atolrtolerr_msgverbose)momentr   r   expectsupportcdf)
distfnr!   distnamenorm_momentr"   r#   normalization_expect_a_bnormalization_cdfs
             r   check_normalizationr1      s    &-)D)))KS)))***
dd
d!==4=@@,c4 ($8 8 8 8 V^T"FB"
2----)3/////r   c                     | j         dg|R  } | j         dg|R  }t          j        |          st          j        ||d|dz              n:t          j        t          j        |          |dt          |          z  z              t          j        |          s#t          j        |||z  z
  |d|dz              d S t          j        t          j        |          |d|z              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m2s          r   check_momentrB   (   s-   	q	3			B	q	3			B8A;; FAr(+o(=	? 	? 	? 	? 	? 	BHRLL:SWWDD	F 	F 	F 8A;; KR"Wa(+.>(>	@ 	@ 	@ 	@ 	@ 	@ 	BHRLL#(IB(I(I"IJJJJJr   c                     t          j        |          r4|                     d |          }t          j        ||d|dz              d S d S )Nc                     | S r	   r   r   s    r   r    z#check_mean_expect.<locals>.<lambda>;   s    Q r      z - 1st moment (expect)r5   )r7   isfiniter'   r   r9   )r*   r<   r=   r?   r@   s        r   check_mean_expectrG   9   sm    	{1~~ H]];;,,Aq(+.F(F	H 	H 	H 	H 	H 	HH Hr   c                     ddh}||v rddini }t          j        |          r2|                     d |          }t          j        ||||z  z   fi | d S d S )Nr   ksoner#   gh㈵>c                     | | z  S r	   r   r   s    r   r    z"check_var_expect.<locals>.<lambda>D   s
    QqS r   )r7   rF   r'   r   r   )r*   r<   r=   r>   r?   dist_looser_toleranceskwargsrA   s           r   check_var_expectrM   @   s}    5@"&<<<fd^^"F	{1~~ 3]]==#..BAaC226222223 3r   c                    t          j        |          rL|                     fd|          }t          j        ||t          j        |d          z  d|dz              d S t          j        t          j        |                     d S )Nc                 4    t          j        | z
  d          S )N   r7   powerr   r=   s    r   r    z#check_skew_expect.<locals>.<lambda>J       bhqsA&6&6 r   g      ?rE   z - skewr5   )r7   rF   r'   r   r9   rR   r:   isnan)r*   r<   r=   r>   sr?   m3es     `    r   check_skew_expectrX   H   s    	{1~~ !mm6666<<Q!S)9)9%9()3?	D 	D 	D 	D 	D 	D 	BHQKK     r   c                 H   t          j        |          rP|                     fd|          }t          j        ||dz   t          j        |d          z  dd|dz              d S t          j        |          s(t          j        t          j        |                     d S d S )Nc                 4    t          j        | z
  d          S )N   rQ   rS   s    r   r    z#check_kurt_expect.<locals>.<lambda>S   rT   r   g      @r3   r   z - kurtosisr"   r#   r$   )	r7   rF   r'   r   r   rR   isposinfr:   rU   )r*   r<   r=   r>   kr?   m4es     `    r   check_kurt_expectr`   Q   s    	{1~~ !mm6666<<C!b&BHQNN!:!%D$'-$7	9 	9 	9 	9 	9 	9 [^^ !BHQKK     ! !r   c                    | j         j        t          j        j         k    rl | j        dg|R  }|                     d |t          j         t          j                  }t          j        |          sd S t          ||dd|dz              d S d S )NrE   c                     | dz  S )NrE   r   r   s    r   r    z#check_munp_expect.<locals>.<lambda>`   s
    AF r   )lbub绽|=g-C6?z - higher moment / _munpr\   )
_munp__func__r   rv_continuousr&   r'   r7   infrF   r   )distr!   r?   r   refs        r   check_munp_expectrl   [   s     ze1777dk!#d###kk**DbfWkHH{3 	FSu4 #&@ @	B 	B 	B 	B 	B 	B 87r   c                 p     | j         | }t          j        t          j        |           |dz              d S )Nztest Entropy is nan)entropyr   r:   r7   rU   )r*   r<   r?   ents       r   check_entropyrp   h   s9    
&.#
CKBHSMM!3)>#>?????r   c                 X    t          j         | j        |  |j        | g|R             d S r	   )r   r   _entropy)r*   r!   
superclasss      r   check_private_entropyrt   m   sD    .+
+F:T:::< < < < <r   c                     t          j        ddgddgg          }  j        d|i} fd|                                D             }t          j        |                              |j                  }t          ||d           g d	}  j        d|i} fd
|D             }t          j        |                              |j                  }t          ||d           d S )Nr   r3   rP   r[   scalec                 *    g | ]} j         d |iS rv   rn   .0rV   r<   r*   s     r   
<listcomp>z,check_entropy_vect_scale.<locals>.<listcomp>w   s*    ???q^V^S***???r   g+=)r"   )r   r3   c                 *    g | ]} j         d |iS rx   ry   rz   s     r   r|   z,check_entropy_vect_scale.<locals>.<listcomp>~   s*    777q^V^S***777r   )r7   asarrayrn   ravelreshapeshaper   )r*   r<   scv_ents_ents   ``   r   check_entropy_vect_scaler   s   s   	aVaV$	%	%BFNC*r**E?????BHHJJ???EJu%%ek22EE5u---- 
BFNC*r**E77777B777EJu%%ek22EE5u------r   c                     | j         | }t          | t          j                  r|d         dz
  |d         f}t	          j         | j        |g|R  ddg           t	          j         | j        |g|R  ddg           | j        dvr\t	          j         | j	        |g|R  t          j         dg           t	          j         | j        |g|R  dt          j         g           t	          j         | j        ddgg|R  |           t	          j         | j        ddgg|R  |d d d                    t	          j        t          j         | j        ddgg|R                                                       t	          j        t          j         | j        ddgg|R                                                       d S )Nr   r   g        r   )skellamdlaplacer3   )r(   
isinstancer   rv_discreter   r   r)   sfnamelogcdfr7   ri   logsfppfisfr:   rU   all)r*   r!   r   s      r   check_edge_supportr      s   A&%+,, aDFAaDLZVZ)D)))C:666YVYq(4(((3*555{111q04000BF7C.AAAa/$///#w@@@ZVZc
2T222A666ZVZc
2T222AdddG<<< KRG3d3334488::;;;KRG3d3334488::;;;;;r   c                 2   t          | j                  }t          j        |j        d u            t          j        |j        d u            t          j        |j                    t          j        t          |j                  t          |          k               |j	        d t          |                    }| j        r.| j                            dd                                          }nd}t          j        t          |          | j        k               t          j        t          |          t          |          k               t                    fd|D             }t          j        t          j        t          j        |                               |d d          d d          i c}	|	r                    |	                                                                i           fd|D             }
t          j        ||
           d                                vr0t          j         | j        dgR i  | j        dgR             |	                    dd	i           t1          t2          | j        fi  d S )
N,  c                 "    g | ]} |gR  S r   r   )r{   meth
shape_argsr   s     r   r|   z$check_named_args.<locals>.<listcomp>   s+    333TDD Z   333r   c                 (    g | ]} |gR i S r   r   )r{   r   ar^   r   s     r   r|   z$check_named_args.<locals>.<listcomp>   s3    000$TT!a1000r   nr   kaboom*   )_getfullargspec_parse_argsr   r:   varargsvarkw
kwonlyargslistdefaultsr!   lenshapesreplacesplitnumargsr7   r   rF   updatepopassert_array_equalkeysr   r&   assert_raises	TypeErrorr)   )r*   r   r   r   meths	signatureshape_argnamesshapes_valsnamesr>   r   r^   s    ``        @@r   check_named_argsr      s      233IK	!T)***K	4'(((KI(()))KY'((DNN:;;;^Oc(mm^O4N} -''S117799KG.///KGN 3 33444 j!!J33333U333DKr{4(())*** #Z]BKE1a
 <	%))++quuww'(((000000%000tQ'''affhh]V]16q666A66*V]1:z:::< < <  < HHh^)VZ00a00000r   c                    | j         }t          j                            d           d | _          | j        |ddi}d| _          | j        |ddi}t          j        ||           t          j                            d          | _          | j        |ddi}t          j        ||           t          t          j        d          r-t          j        	                    d          } | j        |d|d d| _         | j         
                                } | j        |dt          j                            d          d}t          j        ||           t          j        | j         
                                |           || _         d S )N  size   default_rngr   )r   random_stater3   )r   r7   randomseedrvsr   r   RandomStatehasattrr   	get_state)	r*   r!   rndmr0r1r2rng
orig_stater3s	            r   check_random_state_propertyr      s   
 D INN4F	T	"	"	"B F	T	"	"	"BR)//55F	T	"	"	"BR ry-(( 4i##D))
Dqs3333 F$..00J	T	0E0Ed0K0K	L	L	LBR V(2244jAAA Fr   c                 b   g d} | j         |g|R  fdt          j        t          j        t          j        t          j        fD             }|D ]^} | j        |  || j        |k     || j        k     z           }|D ]2} ||g|R  }t          j
        |j        t          j        k               3_d S )N      ?      ?      ?c                 :    g | ]}                     |          S r   astyper{   tpx0s     r   r|   z$check_meth_dtype.<locals>.<listcomp>   /     4 4 4biimm 4 4 4r   )r   r7   int_float16float32float64	_argcheckr   br   r:   dtypefloat_)	r*   r<   r   q0x_castr   r   valr   s	           @r   check_meth_dtyper      s    			B	B				B4 4 4 4rw
BJ')z'3 4 4 4F  0 0#vx!|FH-. 	0 	0D$q-3---CK	RY.////	0	0 0r   c                    t          j        g d          fdt           j        t           j        t           j        fD             }|D ]C}| j        | j        fD ]2} ||g|R  }t          j        |j	        t           j
        k               3Dd S )Nr   c                 :    g | ]}                     |          S r   r   )r{   r   r   s     r   r|   z#check_ppf_dtype.<locals>.<listcomp>   s#    KKKbiimmKKKr   )r7   r   r   r   r   r   r   r   r:   r   r   )r*   r<   q_castqr   r   r   s         @r   check_ppf_dtyper      s    	%%%	&	&BKKKKrz2:rz&JKKKF 0 0Z, 	0 	0D$q-3---CK	RY.////	00 0r   c           	         d } | j         g dg|R  fdt          j        t          j        t          j        t          j        fD             }|D ]} | j        |  || j        |k     || j        k     z           } | j	        |g|R   | j
        |g|R   | j        |g|R  }}}t           || j
        |g|R  |d           t           || j        |g|R  ||z  d           t           || j        |g|R  | d           t           || j        |g|R  | |z  d           t           || j        |g|R   || j	        |g|R   | j	        |g|R  z  d           d S )Nc                 \    t          j        |          }d} | ||dz  z   g|R  |z  j        S )Nre   y              ?)r7   r   imag)fr   r<   hs       r   derivz check_cmplx_deriv.<locals>.deriv  s<    JqMM!ad(!S!!!!#))r   )r   gRQ?r   c                 :    g | ]}                     |          S r   r   r   s     r   r|   z%check_cmplx_deriv.<locals>.<listcomp>	  r   r   r   r#   )r   r7   r   r   r   r   r   r   r   pdfr)   r   r   r   r   logpdf)	r*   r<   r   r   r   r   r)   r   r   s	           @r   check_cmplx_derivr     s   * * *
 
&&&	-	-	-	-B4 4 4 4rw
BJ')z'3 4 4 4F  # ##vx!|FH-.!vz!*c***JFJq,?3,?,?,?1ASsASASAS"Sfj!2c222CdCCCCfmQ5555s3wTJJJJfi1S111C4dCCCCflA4444sd2gDIIIIfmQ5555fj!2c222ZVZ5HC5H5H5HH!	# 	# 	# 	# 	## #r   c                 t   | j         }d| _          | j        |ddi t          j        |           } | j        |ddi}t          j        |          } |j        |ddi}t          j        ||            | j        dg|R   |j        dg|R  g}t          j        |d         |d                    t          j         | j        |d         g|R   |j        |d         g|R              | | }t          j        |          }	t          j        |	          }|                    d          }|                    d          }t          j        ||           t          | d          rJ| j
        }
t          j        |
          }t          j        |          }|
j        |j        cxk    rdk    sn 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   rV   r   	unpickledr   mediansfrozen_distpklfit_functionpickled_fit_functionunpickled_fit_functions                r   check_picklingr    s   
 D FFJ1VA	T	"	"	"BQI		%1	%	%BR vz#%%%%}y}S'@4'@'@'@AGWQZ,,,ZVZ
2T222"Y]71:55557 7 7 &$-K
,{
#
#CS!!I	a	 	 B	A		BR vu Qz%|L99!'.B!C!C$(>(GPPPP5PPPPPP Fr   c                     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   r3   )locrv   r  )r   r   rh   r   r   )r*   r!   locscalervs       r   check_freezingr  H  s     &%-.. q))1:		"	"	"B4664=?""""4664=?""""""r   c                 2    t           j                            d             j        | }t	          |j        |d|z             |sQt          j         fd|          }t           j                            d            || }t          ||d           d S d S )N{   z%s: rvs failed to broadcastc                       j         |  S r	   )r   )allargsdistfuncs    r   r    z%check_rvs_broadcast.<locals>.<lambda>Z  s    LHL',B r   )otypesgvIh%<=r   )r7   r   r   r   r   r   	vectorizer   )	r  r+   r  r   
shape_onlyotypesampler   expecteds	   `        r   check_rvs_broadcastr  U  s    INN3X\7#Fu&Ch&NOOO 6lBBBB5QQQ
	s3=u555555	6 6r   )F)(r   numpyr7   numpy.testingtestingr   r   r   pytestr   r   numpy.ma.testutilsr   	testutilsr   scipy._lib._utilr   r   scipyr   r   r1   rB   rG   rM   rX   r`   rl   rp   rt   r   r   r   r   r   r   r   r  r  r  r   r   r   <module>r     s              7 7 7 7 7 7 7 7 * * * * * * # # # # # # # # # F F F F F F      9 9 9 90 0 0$K K K"H H H3 3 3! ! !! ! !
B 
B 
B@ @ @
< < <. . . < < <,$1 $1 $1N& & &R0 0 00 0 0# # #8( ( (V
# 
# 
#6 6 6 6 6r   