
    Ui>                        d dl Z d dlZd dlZd dlmZmZmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d Zd Zg d	Ze j                            d
e          d             Ze j                            d
e          d             Ze j        j        e j                            d          d                         Ze j                            ed          e j                            d          e j                            d
dg          d                                     Zd Zd Zd Ze j                            ddddej          ej         ffg          d             Z!e j                            d
ddg          d             Z"d Z#d  Z$d! Z%e j                            d"g d#          d$             Z&d% Z'd& Z(d' Z)e j        *                    d(           G d) d*                      Z+d+ Z,dS ),    N)assert_array_equalassert_allclosesuppress_warnings)deepcopy)FastGeneratorInversion)stats)IS_MUSLc                     t          j        t          d          5  t          t	          j        d                     d d d            n# 1 swxY w Y   t          j        t          d          5  t          t	          j        ddg                     d d d            n# 1 swxY w Y   t          j        t          d	          5  t          t	          j                    d
           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          t	          j        ddg                     d d d            n# 1 swxY w Y   t          j        t          d          5  t          d           d d d            n# 1 swxY w Y   t          j        t          d          5  t          t	          j        dd                     d d d            d S # 1 swxY w Y   d S )Nzloc must be scalarmatch)333333??)loczscale must be scalar      ?@)scalez'test' cannot be used to seedtestrandom_statez/Each of the 1 shape parameters must be a scalarr         @z`dist` must be a frozenxyzDistribution 'truncnorm' is not      @)pytestraises
ValueErrorr   r   normgamma	truncnorm)msgs    /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/scipy/stats/tests/test_fast_gen_inversion.pytest_bad_argsr!      sG   	z)=	>	>	> ; ;uzj999:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	z)?	@	@	@ = =uzc
;;;<<<= = = = = = = = = = = = = = = 
z)H	I	I	I B Buz||&AAAAB B B B B B B B B B B B B B B <C	z	-	-	- 8 8u{C:667778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 
z)B	C	C	C % %t$$$% % % % % % % % % % % % % % % 
z)J	K	K	K : :usC88999: : : : : : : : : : : : : : : : : :sk   #AAA1%B""B&)B&#C77C;>C;$EEE5FFF7#G''G+.G+c                     t          t          j                    d          } |                     d          }d| _        |                     d          }t          ||           t          j                            d          }t          t          j                    |          } |                     d          }t          j                            d          | _        |                     d          }t          ||           t          j        	                    d          }t          t          j                    |          } |                     d          }t          j        	                    d          | _        |                     d          }t          ||           t          t          j                    d          } |                     d          }| 
                    d          }|                     d          }d| _        |                     d          }t          ||dd                     d S )	Ni-r   
   sizei16i<	        )r   r   r   rvsr   r   nprandomdefault_rngRandomStateevaluate_error)genx1x2urng_x3s         r    test_random_stater4   !   s   
 H
E
E
EC	b		BC	b		Br2 9  **D
 D
A
A
AC	b		By,,X66C	b		Br2 9  &&D
 D
A
A
AC	b		By,,T22C	b		Br2 !H
E
E
EC	b		B""A	b		BC	b		Br2bcc7#####    )#)alpha      @)anglit )argusr7   )r;   )gffffff@)beta)r   ?)cosiner:   )	betaprime)r   gffffff
@)bradfordr   )burr)r   333333@)burr12ffffff?r   )cauchyr:   )chi2r7   )chi)r   )crystalballrE   )exponr:   )r   r   )gennorm)g@)gumbel_lr:   )gumbel_rr:   )	hypsecantr:   )invgauss)g@)
invweibullrL   )laplacer:   )logisticr:   )maxwellr:   )moyalr:   r   r:   )pareto)r   )powerlaw)gffffff@)rayleighr:   )semicircularr:   )t)r   )waldr:   )weibull_max)rC   )weibull_minrA   zdistname, argsc                    t           j                            d          } t          t          |           | }|                    d|          }t          ||          }|                    d          }t	          j        ||          j        dk    sJ g d}t          |
                    |          |
                    |          d	           d S )
N   IOi^  r%   r   r   r$   {Gz?gMbP?g?      ?r=   g+?绽|=atol)r)   r*   r+   getattrr   r(   r   cramervonmises_2samppvaluer   ppf)distnameargsr1   rng1rvs1rng2rvs2qs           r    test_rvs_and_ppfru   k   s     9  !122D#75(##T*D884800D!$T:::D888D%dD1184???? 	&%%ADHHQKK!5999999r5   c                     t          t          |           | }t                      5 }|                    t                     t          |          }d d d            n# 1 swxY w Y   |                    ddd          \  }}|dk    sJ d S )N'  ra   Fr%   r   x_errorrg   )rj   r   r   filterRuntimeWarningr   r-   )rn   ro   distsuprngu_errorry   s          r    test_u_errorr   z   s     $75(##T*D			 +

>"""$T**+ + + + + + + + + + + + + + + ))"2E *  GW es   *AA!$A!zgeninvgauss CDF is not accurate)reasonc                      t          j        dd          } t          |           }|                    dd          }|d         dk     sJ d S )N皙	@r   rw   i	 rc   r   rg   )r   geninvgaussr   r-   )r|   r~   errs      r    test_geninvgauss_uerrorr      sP     S#&&D
 
&
&C


&u

=
=Cq6E>>>>>>r5   z!Hits RecursionError, see gh-23172r&   )r<   ))\(?r   c                 *   t                      5 }|                    t                      t          t          |           | }t          |          }d d d            n# 1 swxY w Y   |                    ddd          \  }}|dk    r|dk     sJ d S d S )Nrw   l   c}u -SRTrx   g&.=g&.>)r   rz   r{   rj   r   r   r-   )rn   ro   r}   r|   r~   r   ry   s          r    test_error_extreme_paramsr      s     
		 +

>"""'wuh''.$T**	+ + + + + + + + + + + + + + +
 ))"7 *  GW +~~~~ ~s   AAA!$A!c                  l   t          t          j                              } t          j        t
          d          5  |                     d           d d d            n# 1 swxY w Y   t          j        t
          d          5  |                     d           d d d            d S # 1 swxY w Y   d S )Nzsize must be an integerr   r8   r$   )   r   )r   r   r   r   r   r   r-   )r.   s    r    test_evaluate_error_inputsr      s(   
 
.
.C	z)B	C	C	C % %$$$% % % % % % % % % % % % % % %	z)B	C	C	C ( ('''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s#   AA#&A#B))B-0B-c                  R   d\  } }t          j        | |          }t          |d          }|                    d          }|| z
  |z  }t          j        |d          j        dk    sJ g d	}t          |                    |          |                    |          d
           d S )N)r8   ffffff@r   r   i  r     r$   r   rd   re   rg   rh   )	r   r   r   r(   cramervonmisesrl   r   _ppfrm   )r   r   r|   r~   r
r_rescaledrt   s          r    test_rvs_ppf_loc_scaler      s    JC:#U+++D
 D
9
9
9CTAc'U"J
F33:TAAAA%%%ACHHQKK%888888r5   c                  
   t          t          j                    d          } |                     d          }d|                                cxk    r|                                cxk     rdk    sn J d\  }}t          j        ||          }t          |d	          } |                     d          }||d
z  z
  ||dz  z   }}||                                cxk    r|                                cxk     r|k    sn J d S )N)   domaind   r$   r   r   )r8   r   r   )g         r   r   )r   r   r   r(   minmax)r~   r   r   r   r|   lbubs          r    test_domainr      s    !g
>
>
>CSA''''15577''''a'''''' JC:#U+++D
 i
8
8
8CSA53;eaiB((((15577((((b((((((((r5   zdistname, args, expected)r<   r8   r   r   r   r   r:   c                 (    t          t          |           | }t          |          }t          |                                |           d|_        d|_        t          |                                ddt          j        |          z  z              d S )Nr   r   )	rj   r   r   r   supportr   r   r)   array)rn   ro   expectedr|   r~   s        r    test_supportr      s     $75(##T*D
 
&
&Cs{{}}h///CGCIs{{}}a!BHX,>,>*>&>?????r5   )r<   r   rW   c                      t          t          |           | }t          |d          }t          |                                d           d|_        d|_        t          |                                d           d S )N)rf   rF   r   r   r   )       @rC   )rj   r   r   r   r   r   r   )rn   ro   r|   r~   s       r    test_support_truncationr      sq     $75(##T*D
 j
9
9
9Cs{{}}j111CGCIs{{}}&@AAAAAr5   c                  l   t          j                    5  t          j        d           t          t	          j                    d          } d d d            n# 1 swxY w Y   |                     d          }d|                                cxk    r|                                cxk     rdk    sn J d S )Nerror)r   r   r   r   r$   r   r   )	warningscatch_warningssimplefilterr   r   r   r(   r   r   )r~   r   s     r    test_domain_shift_truncationr      s     
	 	"	" B Bg&&&$UZ\\&AAAB B B B B B B B B B B B B B B 	SA&&&&!%%''&&&&Q&&&&&&&&s   7AAAc                  z   t          t          j                    d          } t          j        dd          }d}d}t	          |                     |          |                    |                     t	          |                     |          |                    |                     d\  }}d| _	        d	| _
        t          j        dd||
          }t          j        |          |z  |z   }t	          |                     |          |                    |                     t	          |                     |          |                    |                     t          t          j        dd          d          } d| _	        d| _
        t          |                                 d           t          j        g d          }|                     |          }t          |d         |d	         fd           t          j        |dd	                   dk    sJ t	          |                     |          d           d S )N)r   r   r   r   r   )r   rC         @g333333@rd   rf   gGz?)r   r   r   r   r   r   r8   )g333333?rF   )      @      @)gQ@Gz@Q@gGz@r   r   r   )r   r   r   r   )r   r   r   r   r   _cdfcdfr   rm   r   r   r)   r   r<   r   r   r   )r~   
trunc_normxpr   r   y_cdfs          r     test_non_rvs_methods_with_domainr      s   
 j
A
A
ACc**JAACHHQKK!2!2333CHHQKK!2!2333JCCGCIcs%@@@J
ec!ACHHQKK!2!2333CHHQKK!2!2333
 !C!5!5j
I
I
ICCGCIs{{}}l333
)))**AHHQKKEa%(+V4446%!*!!!!CHHUOO%=>>>>>r5   c                  ~   t          j                    } t          |           }t          j        ddd          }d}t          |                    |          |                     |                     t          |                    |          | 	                    |                     d\  }}||_
        ||_        t          j        ||          } t          |                    |          |                     |                     t          |                    |          | 	                    |                     d S )Nr   r#   )numr   )rf   r   r   )r   r   r   r)   linspacer   r   r   r   rm   r   r   )	norm_distr~   r   r   r   r   s         r    #test_non_rvs_methods_without_domainr     s    
I
 
+
+C
Br"""AACHHQKKq!1!1222CHHQKKq!1!1222JCCGCI
s%000ICHHQKKq!1!1222CHHQKKq!1!122222r5   z	domain, x))Nrf   )r   rf   )r   r   c                     t          t          j                    |           }t          j        |                    |                    sJ t          j        |                    d                    sJ dS )z pdf, cdf etc should map scalar values to scalars. check with and
    w/o domain since domain impacts pdf, cdf etc
    Take x inside and outside of domain r   rf   N)r   r   r   r)   isscalarr   r   )r   r   r~   s      r    test_scalar_inputsr     sb     !f
=
=
=C;sxx{{#####;sxx}}%%%%%%%r5   c                     d\  } }}t          t          j        |           ||f          }d|_        |                    d          }||                                cxk    r|                                cxk     r|k    sn J t          j        |           j         |           |          z
  t          j        |fd          j	        dk    sJ d S )N)g      @g      ?g      ?r   i  rb   r$   c                       |           z  S )Nr:   )r   r   probs    r    <lambda>z-test_domain_argus_large_chi.<locals>.<lambda>6  s    SSVVd] r5   皙?)
r   r   r;   r   r(   r   r   r   r   rl   )rI   r   r   r~   r   r   r   s        @@r    test_domain_argus_large_chir   +  s     "KCR
 S!1!12r(
C
C
CCCSA((((15577((((b((((((
+c


C3r77SSWWD#:#:#:#:#:;;BTIIIIIIr5   c                     t          t          j                    d          } |                     d          }d| _        d| _        |                     d          }t          j        ||dz
  dz            j        dk    sJ d	| _        d
| _        |                     d          }t          j        ||          j        dk    sJ d S )Ni訤-r   r   r$   r   r   r   r   r   r   )r   r   r   r(   r   r   rk   rl   )r~   r1r2s      r    test_setting_loc_scaler   9  s    
 I
F
F
FC	d		BCGCI	B%b26S.99@4GGGGCGCI	B%b"--4t;;;;;;r5   c                  <   d} t          j        t          |           5  t          t	          j        d                    }d d d            n# 1 swxY w Y   t          t	          j        d          d          }|                    dd          \  }}|d	k    sJ d S )
Nz0No generator is defined for the shape parametersr   gQ?T)ignore_shape_ranger      rc   gư>)r   r   r   r   r   r\   r-   )r   r~   u_errr2   s       r    test_ignore_shape_ranger   H  s    
<C	z	-	-	- 4 4$UWT]]334 4 4 4 4 4 4 4 4 4 4 4 4 4 4
 4
H
H
HC !!t#!>>HE1D======s   "AAAz4NumericalInversePolynomial.qrvs fails for Win 32-bitc                      e Zd Zd Zdej                            dd          ej                            dd          gZd e	            fddd	d
gZ
d e	            fd e	            fdgZej                            de          ej                            de
          ej                            de          d                                     Zd ZdS )TestQRVSc                    t          t          j                              }d}t          j        t
          |          5  |                    d           d d d            n# 1 swxY w Y   d}t          j        t
          |          5  |                    dt          j                            d                     d d d            d S # 1 swxY w Y   d S )	Nz&`qmc_engine` must be an instance of...r   r   )
qmc_engine6`d` must be consistent with dimension of `qmc_engine`.r   r   dr   )	r   r   r   r   r   r   qrvsqmcHalton)selfr.   r   s      r    test_input_validationzTestQRVS.test_input_validationV  s?   $UZ\\228]:U333 	# 	#HHH"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# I]:U333 	: 	:HHqUY%5%5a%8%8H999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s#   A!!A%(A%	5CCCNr   r   seedr   )r   )r   )   r   )r   r   )r   r   r   )r   )r   qrngzsize_in, size_outzd_in, d_outc                    t          t          j                              }|\|Z|j        |k    rOd}t	          j        t          |          5  |                    |||           d d d            n# 1 swxY w Y   d S |||j        dk    r|j        f}||z   }t          |          }	|                    |||          }
||
j	        |k    sJ |	o|	
                    t          j        |          pd          }t          j                            |                              |          }t          |
|d           d S d S )Nr   r   r   r   r%   r   r   -q=rh   )r   r   r   r   r   r   r   r   r   shaper*   r)   prodrm   reshaper   )r   r   size_insize_outd_ind_outr.   r   shape_expectedqrng2r   uniformqrvs2s                r    test_QRVS_shape_consistencyz$TestQRVS.test_QRVS_shape_consistencym  s   
 %UZ\\22  0TVt^^LEz777 ; ;DT:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;F <D,1VIE!E)xxWx>>:////ll277#3#3#8q99GJNN7++33NCCED%e444444 s   A22A69A6c                 (   t          t          j                              }d}d}t          j                            |d          }t          j                            |d          }|                    t          j        |                    }|                    |||          }t          j        	                    |          }t          |          D ]=}	|d|	f         }
|d d |	f                             |          }t          |
|d           >d S )	N)r   r   r&   r   r   r   .r   rh   )r   r   r   r   r   r*   r)   r   r   rm   ranger   r   )r   r.   r%   r   r   r   r   r   r   isamplesample2s               r    test_QRVS_size_tuplezTestQRVS.test_QRVS_size_tuple  s     %UZ\\22y**	   ++,,rwt}}--xxTQ4x88
w''q 	9 	9A#q&\FAAAqDk))$//GFG%88888	9 	9r5   )__name__
__module____qualname__r   r   r   Sobolr   qrngstuplesizesdsr   markparametrizer   r   r:   r5   r    r   r   R  s       	: 	: 	: 59??11?--uy/?/?/?/J/JKE 
uuwwE /Auuww<	3B[VU++[0%88[]B//5 5 0/ 98 ,+569 9 9 9 9r5   r   c                     d} t                      5 }|                    t                     t          t	          j        |            }d d d            n# 1 swxY w Y   |                    d          \  }}|dk    sJ d S )N)gA;B?gעG-S?i  r   rg   )r   rz   r{   r   r   rB   r-   )ro   r}   r.   r   r2   s        r    test_burr_overflowr
    s    
 $D			 8

>"""$UZ%6778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 ###66JGQes   6AAA)-r   r   numpyr)   numpy.testingr   r   r   copyr   scipy.stats.samplingr   scipyr   scipy._lib._testutilsr	   r!   r4   dists_with_paramsr  r  ru   r   xslowxfailr   skipif	fail_slowr   r   r   r   infr   r   r   r   r   r   r   r   r   xfail_on_32bitr   r
  r:   r5   r    <module>r     s        . . . . . . . . . .       7 7 7 7 7 7       ) ) ) ) ) ): : :* $  $  $F$ $ $ N *->??: : @?: *->??
 
 @?
 ;<<  =<  G$GHHq*.D-EFF  GF  IH( ( (9 9 9) ) )  46!2'89;< <
@ 
@< <
@ *.=? ?B B? ?B' ' '? ? ?D3 3 3 +( ( () )& &	) )&J J J< < <   : P9 P9 P9 P9 P9 P9 P9 P9f    r5   