
    S_f 0                         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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(y)    N)assert_allcloseassert_equal)raises)getfullargspec_no_selfnp_long)statsc                     t        |      D ]N  \  }}|r$t        j                  | |   t        | |             ,t	        j                  | |   t        | |             P y N)	enumeratema_nptr   getattrnpt)res
attributesmaiattrs        >lib/python3.12/site-packages/scipy/stats/tests/common_tests.pycheck_named_resultsr      sS    Z( 94AT(:;SVWS$%78	9    c                 J    | j                   dg| }t        j                  |d       |dk(  rd\  }}nd\  }}| j                  d |      }t        j                  |d|||d	        | j                  | \  }} | j
                  |g| }	t        j                  |	d       y )
Nr         ?rv_histogram_instance)h㈵>r   )Hz>r   c                      y)N    xs    r   <lambda>z%check_normalization.<locals>.<lambda>!   s    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_normalizationr2      s    &--)D)KS)**
d
d!==4=@,c4 ($8 V^^T"FB"

2--)3/r   c                     | j                   dg| } | j                   dg| }t        j                  |      st        j                  ||d|dz          n8t        j
                  t        j                  |      |dt        |      z  z          t        j                  |      s#t        j                  |||z  z
  |d|dz          y t        j
                  t        j                  |      |d|z          y )	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_momentrC   *   s    	q	3	B	q	3	B88A;Ar(+o(=	? 	BHHRL:SWDD	F 88A;R"Wa(+.>(>	@ 	BHHRL#*GB5(I"IJr   c                     t        j                  |      r0| j                  d |      }t        j                  ||d|dz          y y )Nc                     | S r
   r   r   s    r   r!   z#check_mean_expect.<locals>.<lambda>=   s    Q r      z - 1st moment (expect)r6   )r8   isfiniter(   r   r:   )r+   r=   r>   r@   rA   s        r   check_mean_expectrH   ;   s@    	{{1~]];,Aq(+.F(F	H r   c                     ddh}||v rddini }t        j                  |      r1| j                  d |      }t        j                  ||||z  z   fi | y y )Nr   ksoner$   gh㈵>c                     | | z  S r
   r   r   s    r   r!   z"check_var_expect.<locals>.<lambda>F   s
    QqS r   )r8   rG   r(   r   r   )r+   r=   r>   r?   r@   dist_looser_toleranceskwargsrB   s           r   check_var_expectrN   B   s]    5@"&<<fd^"F	{{1~]]=#.BAaC262 r   c                    t        j                  |      rI| j                  fd|      }t        j                  ||t        j
                  |d      z  d|dz          y t        j                  t        j                  |             y )Nc                 6    t        j                  | z
  d      S )N   r8   powerr    r>   s    r   r!   z#check_skew_expect.<locals>.<lambda>L       bhhqsA&6 r   g      ?rF   z - skewr6   )r8   rG   r(   r   r:   rS   r;   isnan)r+   r=   r>   r?   sr@   m3es     `    r   check_skew_expectrY   J   sa    	{{1~mm6<Q!S)9%9()3?	D 	BHHQK r   c                 F   t        j                  |      rM| j                  fd|      }t        j                  ||dz   t        j
                  |d      z  dd|dz          y t        j                  |      s)t        j                  t        j                  |             y y )Nc                 6    t        j                  | z
  d      S )N   rR   rT   s    r   r!   z#check_kurt_expect.<locals>.<lambda>U   rU   r   g      @r4   r   z - kurtosisr#   r$   r%   )	r8   rG   r(   r   r   rS   isposinfr;   rV   )r+   r=   r>   r?   kr@   m4es     `    r   check_kurt_expectra   S   sw    	{{1~mm6<C!b&BHHQN!:!%D$'-$7	9 [[^BHHQK  r   c                 F   | j                   j                  t        j                  j                   k7  rp | j                  dg| }| j                  d |t        j                   t        j                        }t        j                  |      sy t        ||dd|dz          y y )NrF   c                     | dz  S )NrF   r   r   s    r   r!   z#check_munp_expect.<locals>.<lambda>b   s
    AF r   )lbub绽|=g-C6?z - higher moment / _munpr]   )
_munp__func__r   rv_continuousr'   r(   r8   infrG   r   )distr"   r@   r   refs        r   check_munp_expectrm   ]   s     zze11777dkk!#d#kk*DbffWkH{{3Su4 #&@ @	B 8r   c                 |     | j                   | }t        j                  t        j                  |       |dz          y )Nztest Entropy is nan)entropyr   r;   r8   rV   )r+   r=   r@   ents       r   check_entropyrq   j   s1    
&..#
CKKBHHSM!3)>#>?r   c                 l    t        j                   | j                  |  |j                  | g|        y r
   )r   r   _entropy)r+   r"   
superclasss      r   check_private_entropyru   o   s2    .+
++F:T:<r   c                 &   t        j                  ddgddgg      } | j                  |d|i}|j                         D cg c]  } | j                  |d|i }}t        j                  |      j	                  |j
                        }t        ||d       g d} | j                  |d|i}|D cg c]  } | j                  |d|i }}t        j                  |      j	                  |j
                        }t        ||d       y c c}w c c}w )	Nr   r4   rQ   r\   scaleg+=)r#   )r   r4   )r8   asarrayro   ravelreshapeshaper   )r+   r=   scv_entrW   s_ents         r   check_entropy_vect_scaler   u   s    	aVaV$	%BFNNC*r*E46HHJ?q^V^^S**?E?JJu%%ekk2EE5u- 
BFNNC*r*E467q^V^^S**7E7JJu%%ekk2EE5u- @ 8s    D	1Dc                     | j                   | }t        | t        j                        r|d   dz
  |d   f}t	        j
                   | j                  |g| ddg       t	        j
                   | j                  |g| ddg       | j                  dvrpt	        j
                   | j                  |g| t        j                   dg       t	        j
                   | j                  |g| dt        j                   g       t	        j
                   | j                  ddgg| |       t	        j
                   | j                  ddgg| |d d d          t	        j                  t        j                    | j                  ddgg|       j#                                t	        j                  t        j                    | j                  ddgg|       j#                                y )Nr   r   g        r   )skellamdlaplacer4   )r)   
isinstancer   rv_discreter   r   r*   sfnamelogcdfr8   rj   logsfppfisfr;   rV   all)r+   r"   r    s      r   check_edge_supportr      s   A&%++,aDFAaDLZVZZ)D)C:6YVYYq(4(3*5{{11q040BFF7C.Aa/$/#w@ZVZZc
2T2A6ZVZZc
2T2AddG< KKRG3d3488:;KKRG3d3488:;r   c                 J   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                  j                  dd      j                         }nd}t        j                  t        |      | j                  k(         t        j                  t        |      t        |      k(         t        |      }|D cg c]  } ||g|  }	}t        j                  t        j                   t        j"                  |	                   |d d  |d d  i }}}
|
r|j%                  |
j'                         |j'                         i       |D cg c]  } ||g|i | }}t        j(                  |	|       d|j+                         vr;t        j,                   | j.                  dg|i | | j.                  dg|        |
r|j%                  ddi       t1        t2        | j4                  |fi | y c c}w c c}w )N,  nr   kaboom*   )_getfullargspec_parse_argsr   r;   varargsvarkw
kwonlyargslistdefaultsr"   lenshapesreplacesplitnumargsr8   r   rG   updatepopassert_array_equalkeysr   r'   assert_raises	TypeErrorr*   )r+   r    
shape_argsr   meths	signatureshape_argnamesshapes_methvalsnamesar_   r?   s                 r   check_named_argsr      s      2 23IKK	!!T)*KK	4'(KKI((()KKY''(DN:;^^Oc(m^4N}}--''S1779KKG./KKGN 334 j!J-23TD Z 3D3KKr{{4()* #Z]Ba1E
	%))+quuw'(*/0$T!a100tQ'affh]V]]16q6A6*V]]1:z:<  HHh^)VZZ0a0 4 1s   "J0J c                 R   | j                   }t        j                  j                  d       d | _          | j                  |ddi}d| _          | j                  |ddi}t        j                  ||       t        j                  j                  d      | _          | j                  |ddi}t        j                  ||       t        t        j                  d      r2t        j                  j                  d      } | j                  |d|d d| _         | j                   j                         } | j                  |dt        j                  j                  d      d}t        j                  ||       t        j                  | j                   j                         |       || _         y )N  size   default_rngr   )r   random_stater4   )r   r8   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 IINN4F	T	"	"B F	T	"	"BR))//5F	T	"	"BR ryy-(ii##D)

Dqs3 F$$..0J	T		0E0Ed0K	LBR V((224jA Fr   c                    g d} | j                   |g| }t        t        j                  t        j                  t        j
                  fD cg c]  }|j                  |       }}|D ]s  } | j                  |  || j                  |k  || j                  k  z     }|D ];  } ||g| }	t        j                  |	j                  t        j
                  k(         = u y c c}w N)      ?      ?      ?)r   r   r8   float16float32float64astype	_argcheckr   br   r;   dtype)
r+   r=   r   q0x0tpx_castr    r   vals
             r   check_meth_dtyper      s    	B	B		B'.

BJJ')zz'3 4biim 4F 4  1#vxx!|FHH-. 	1Dq-3-CKK		RZZ/0	1	14s   C!c                    t        j                  g d      }t         j                  t         j                  t         j                  fD cg c]  }|j                  |       }}|D ]X  }| j                  | j                  fD ];  } ||g| }t        j                  |j                  t         j                  k(         = Z y c c}w r   )r8   ry   r   r   r   r   r   r   r   r;   r   )r+   r=   r   r   q_castqr   r   s           r   check_ppf_dtyper      s    	%	&B')zz2::rzz&JKbiimKFK 1ZZ, 	1Dq-3-CKK		RZZ/0	11 Ls   	Cc           	      `   d } | j                   g dg| }t        t        j                  t        j                  t        j
                  fD cg c]  }|j                  |       }}|D ];  } | j                  |  || j                  |k  || j                  k  z     } | j                  |g|  | j                  |g|  | j                  |g| }	}}t         || j                  |g| |d       t         || j                  |g| ||z  d       t         || j                  |g| | d       t         || j                  |g| | |	z  d       t         || j                   |g|  || j                  |g|  | j                  |g| z  d       > y c c}w )Nc                 h    t        j                  |      }d} | ||dz  z   g| |z  j                  S )Nrf   y              ?)r8   ry   imag)fr    r=   hs       r   derivz check_cmplx_deriv.<locals>.deriv  s7    JJqM!ad(!S!!#)))r   )r   gRQ?r   r   r$   )r   r   r8   r   r   r   r   r   r   r   pdfr*   r   r   r   r   logpdf)
r+   r=   r   r   r   r   r    r   r*   r   s
             r   check_cmplx_derivr     s   *
 
&	-	-B'.

BJJ')zz'3 4biim 4F 4  ##vxx!|FHH-.!vzz!*c*JFJJq,?3,?1ASsAS"Sfjj!2c2CdCfmmQ55s3wTJfii1S1C4dCfllA44sd2gDIfmmQ55fjj!2c2ZVZZ5HC5HH!	##4s   F+c                    | j                   }d| _          | j                  |ddi t        j                  |       } | j                  |ddi}t        j                  |      } |j                  |ddi}t        j                  ||        | j                  dg|  |j                  dg| g}t        j                  |d   |d          t        j                   | j                  |d   g|  |j                  |d   g|         | | }t        j                  |      }	t        j                  |	      }|j                  d      }|j                  d      }t        j                  ||       t        | d      rZ| j                  }
t        j                  |
      }t        j                  |      }|
j                  |j                  cxk(  rdk(  sJ  J || _         y )	Nr   r   r   r   r   r   )r   fit)r   r   pickledumpsloadsr   r   r   r*   r   r   __name__)r+   r"   r   rW   r   	unpickledr   mediansfrozen_distpklfit_functionpickled_fit_functionunpickled_fit_functions                r   check_picklingr     s   
 D FFJJ1VA	T	"	"BQI		%1	%BR vzz#%%}y}}S'@4'@AGWQZ,ZVZZ
2T2"Y]]71:557 $-K
,,{
#CS!I	a	 B	A	BR vuzz%||L9!'.B!C$$(>(G(GP5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 y )Nr   r4   )locrw   r   )r   r   ri   r   r   )r+   r"   locscalervs       r   check_freezingr   J  sj     &%--.q)1:		"	"B4464=??"""4464=??"""r   c                 4    t         j                  j                  d         j                  | }t	        |j
                  |d|z         |sMt        j                   fd|      }t         j                  j                  d        || }t        ||d       y y )N{   z%s: rvs failed to broadcastc                  "     j                   |  S r
   )r   )allargsdistfuncs    r   r!   z%check_rvs_broadcast.<locals>.<lambda>\  s    LHLL',B r   )otypesgvIh%<=r   )r8   r   r   r   r   r|   	vectorizer   )	r   r,   r   r|   
shape_onlyotypesampler   expecteds	   `        r   check_rvs_broadcastr  W  sw    IINN3X\\7#Fu&Ch&NOllB5Q
		s=u5	 r   )F))r   numpyr8   numpy.testingtestingr   r   r   pytestr   r   numpy.ma.testutilsr   	testutilsr   scipy._lib._utilr   r   r   scipyr   r   r2   rC   rH   rN   rY   ra   rm   rq   ru   r   r   r   r   r   r   r   r   r   r  r   r   r   <module>r     s       7 * # # 90$K"H3!!
B@
<. <,$1N&R11#8(V
#6r   