o
    i
6                 
   @   sn  d dl Z d dlZd dlmZ d dlZd dlmZ d dlZd dlm	Z	m
Z
 d dlmZmZmZmZ d dlm  mZ d dlmZ d dlmZ d dlmZ d d	lm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' d dl(m)Z)m*Z*m+Z+ d dlm,Z,m-Z- G dd dZ.dDddZ/e)e,e-e*gZ0G dd dZ1dd Z2dd Z3dd Z4dd Z5dd Z6dd Z7d d! Z8ej9:d"e,fej9:d#e; d$gej9:d%e; d&gej9:d'd(gej9:d)ej<j=ej>ej?gd*d+ Z@d,d- ZAd.d/ ZBd0d1 ZCd2d3 ZDG d4d5 d5ZEG d6d7 d7ZFG d8d9 d9ZGG d:d; d;ZHG d<d= d=ZIG d>d? d?ZJG d@dA dAe#ZKG dBdC dCZLdS )E    N)deepcopy)inf)assert_allcloseassert_equal)
strategiesgivenreproduce_failuresettings)stats)_kolmogorov_smirnov)kolmogn)qmc)distcont)
_Domain_RealDomain
_Parameter_Parameterization_RealParameterContinuousDistributionShiftedScaledDistribution_fiinfo_generate_domain_supportMixture)StandardNormal_LogUniform_Gamma)NormalUniformc                   @   s*  e Zd ZejdZdd Zej	
dejddddej ejgdd	 Zej	jeejd
dde e e ddd Zej	
dej ejdddfdgdd Zej	jeeejddejddeeejeejddejddeeeje e ddd Zdd Z dS ) Test_RealDomainl   @x	 c                 C   sL   t dd}d}tjt|d |t W d    d S 1 sw   Y  d S )Nab	endpointsz0The endpoints of the distribution are defined...match)r   pytestraises	TypeErrorget_numerical_endpointsdict)selfdomainmessage r.   [/home/kim/smarthome/.venv/lib/python3.10/site-packages/scipy/stats/tests/test_continuous.pytest_iv   s
   
"zTest_RealDomain.test_ivx
            sizec                 C   s@   t j t j}}t||fdd}t||||k ||k@  d S )N)FTr#   	inclusive)npr   pir   r   contains)r+   r1   r    r!   r,   r.   r.   r/   test_contains_simple#   s    z$Test_RealDomain.test_contains_simpler5   r   Z
num_shapesmin_side)shapesinclusive_ainclusive_bdatac              	   C   s$  |\}}|\}}}	t ddddd}
t ddddd}|tjt ||
d}|tjt ||d}|| }tt|| |dt||dt||| dg}td	||fd
}|	t
dt dt
dt d ||t ||d	}|rxdnd}|r~dnd}td| d| d}t|| d S )NFg     @   )	allow_nanZallow_infinity	min_value	max_valuer4   g     @@)elementsr2   r   r9   r    r,   r!   z<=<z(a z	 x) & (x z b))r*   drawnpstZarraysZfloating_dtypesr;   Zconcatenatelinspacer   Zdefine_parametersr   r=   evalr   )r+   rA   rB   rC   rD   Zinput_shapesresult_shapeZshape_aZshape_bZshape_xZ
a_elementsZ
b_elementsr    r!   dr1   r,   resZleft_comparisonZright_comparisonrefr.   r.   r/   test_contains+   s<   
zTest_RealDomain.test_containscaseFTz(-\infty, \pi])r       TFz[a, 5)c                 C   s4   t |d d |dd d}t||d ksJ d S )Nr4   r6   r9   )r   str)r+   rU   r,   r.   r.   r/   test_strX   s   zTest_RealDomain.test_str)rF   L)Zwhitelist_categories)r    r!   rB   rC   c           	      C   sr   t j||}t j||}|rdnd}|rdnd}t||f||fd}| | d| | }t||ks7J d S )N[(])r9   , )r   symbolsgetr   rW   )	r+   r    r!   rB   rC   Zleft_bracketZright_bracketr,   rS   r.   r.   r/   	test_str2`   s   zTest_RealDomain.test_str2c                 C   s(   t dd}t dd}|j|jusJ d S )Nr   rE   r"   )r   r_   )r+   Zdomain1Zdomain2r.   r.   r/   test_symbols_gh22137x   s   

z$Test_RealDomain.test_symbols_gh22137N)!__name__
__module____qualname__r;   randomdefault_rngrngr0   r&   markparametrizeuniformr   r<   r>   slowr   rM   mutually_broadcastable_shapesr   ZbooleansrD   rT   rX   Zone_ofZdecimals
charactersZsampled_fromlistr   r_   ra   rc   r.   r.   r.   r/   r      sF    

(




r   c                 C   sR  |   }|dkr/|tjd|d d}| |}|tj||d\}}	| j||||d}
n	| j|d}
t }	|tj	|	|d}|
j
j||
j||dd	}t||	}|tj	||d}|
j
j||
j||dd	}t||}td
d}td|d}|j|||d}tjddd t|}W d    n1 sw   Y  |
|||||	||fS )Nr   rE   )rH   r?   )ri   proportionsZi_parameterizationri   )r@   Ztypical)parameter_valuesrq   ri   regionrb   TTprJ   )rq   ri   ignoredivideinvalid)Z_num_parameterizationsrL   r   integers_num_parametersrM   rn   _drawtupleZbroadcastable_shapes	_variable_parametersr;   Zbroadcast_shapesr   r   errstatelog)familyrD   ri   rq   r@   Zn_parameterizationsiZn_parametersrA   rP   distx_shaper1   x_result_shapeZy_shapeyxy_result_shapeZp_domainZp_varrv   logpr.   r.   r/   draw_distribution_from_family   sF   




r   c                   @   s  e Zd Zejdeddejdee	e
 e
jddddd	 Zejd
ejdeejddddhdfdddhdfddhdfddhdfddhdfddhdfddhdfddhdfddhdfddhdfdh ddfdh ddfd h ddfd!h ddfd"d#d$hd%fd&d#d$hd'fgedde	e
 e
jdddd(d) Zd*d+ Zejd,dd!gd-d. Zejd,dd!gd/d0 Zd1d2 Zd3d4 Zd5d6 Zejd,dd gd7d8 ZdS )9TestDistributions<      )Zmax_examplesr   r   rG   rD   seedc                 C   s   t j|}d}t||||}|\}}}	}
}}}}|tjdddd}t jddd) t| t	|| t
|d||| tjd|d	}t
|d||| W d    d S 1 sWw   Y  d S )
Nffffff?皙?r   r   r   r   )Zmin_dimsr@   Zmax_siderw   rz   ry   samplerE   rQ   r   )r;   rg   rh   r   rL   rM   Zarray_shapesr   check_supportcheck_moment_funcscheck_sample_shape_NaNsr   Halton)r+   r   rD   r   ri   rq   tmpr   r1   r   rv   r   rP   r   r   sample_shapeZqrngr.   r.   r/   test_support_moments_sample   s   
"z-TestDistributions.test_support_moments_sampler2   zfunc, methods, argentropylog/exp
quadratureN
logentropymedianicdfmodeoptimizationmeancachevarianceskewnesskurtosispdfr1   logpdflogcdf>   r   
complementr   cdflogccdfccdfilogccdfr   	inversionr   iccdfrv   c                 C   s  |t kr|dkrtd tj|}d}t||||}	|	\}
}}}}}}}|||d}tjdddd# |d u rBt|
|d || n||v rPt|
||| || W d    n1 sZw   Y  |dkrnt	|

 d |
  tjddddY t|
ts|d	krd
h}t|
d|||| t|
d|||| n1|dkrdh}t|
d|||| t|
d|||| W d    d S W d    d S W d    d S W d    d S 1 sw   Y  d S )Nr   z'Mode is not unique; `method`s disagree.r   )r1   rv   r   rw   )rz   ry   Zoverr   r4   r   r   FTr   Zaddition)r   r&   skipr;   rg   rh   r   r   check_dist_funcr   standard_deviationr   
isinstancer   
check_cdf2check_ccdf2)r+   r   rD   r   funcmethodsargri   rq   r   r   r1   r   rv   r   rP   r   r   argsr.   r.   r/   
test_funcs   sB   

"zTestDistributions.test_funcsc                 C   sN   zdd l m} W n
 ty   Y d S w tddd}| }|| ks%J d S )Nr                 ?r   )Zmatplotlib.pyplotZpyplotImportErrorr   ZplotZgca)r+   ZpltXaxr.   r.   r/   	test_plot   s   zTestDistributions.test_plotmethod_namec           	      C   s   t  }d|_tddg}t||}t|d| }||dd}||dd}||dd}t|d	 |d	  |d
 |d
 ks?J t|d
 |d
 |jd d S )N-q=-C6?MbP?r   formulamethodcomplement_safer   rE   r   rtolr
   r   tolr;   asarraygetattrr   r   )	r+   r   r   rv   r   ifuncr1   p1p2r.   r.   r/   test_complement_safe  s   
z&TestDistributions.test_complement_safec                 C   s   t  }d|_tddg}t||}t|d| }||dd}||dd}t|d |d  |d	 |d	 ks9J t||d	 |d	 |jd
 d S )Nr   r   r   r   r   r   r   rE   r   r   r   )r+   r   r   rv   r   r   x1Zx2r.   r.   r/   test_icomplement_safe  s   
 z'TestDistributions.test_icomplement_safec                 C   s   t  }d|_g d}g d}|j||dd}|j||dd}|j||dd}t|| t|||jd tg d	}tg d
}|d||  }|j||dd}|j||dd}t|d t|||jd d S )Nr   )r2      )r   r   r   r2   r   r   Zsubtraction_safesubtractionr   )#BǻO
㒻#B;O
;r   )r   r   r   r   r   r   )	r
   r   r   r   r   r   r;   r   r   )r+   r   r1   r   p0r   r   r.   r.   r/   test_subtraction_safe  s    

z'TestDistributions.test_subtraction_safec                 C   s   G dd dt j}|g dd}tjdd |jdd}|jd	d}W d    n1 s-w   Y  |jd
d}ddg}t||  sGJ |d |d ksQJ t|| ||  d S )Nc                          e Zd Z fddZ  ZS )z7TestDistributions.test_logentropy_safe.<locals>._Normalc                    s.   t t jdi |}d|d< t j|d< |S )Nr   r.   )r;   r   super_entropy_formular   )r+   paramsout	__class__r.   r/   r   8  s   
zHTestDistributions.test_logentropy_safe.<locals>._Normal._entropy_formula)rd   re   rf   r   __classcell__r.   r.   r   r/   _Normal7      r   rE   r4   r5   sigmarw   ry   logexp_safer   logexpr   r   r   rE   )r
   r   r;   r   r   isinfallr   )r+   r   r   res1res2rS   i_flr.   r.   r/   test_logentropy_safe5  s   z&TestDistributions.test_logentropy_safec                 C   s   t jg dd}g d}g d}tjdd |j||dd}|j||d	d}W d    n1 s1w   Y  |j||d
d}ddg}t||  sMJ |d |d ksWJ t|| ||  d S )Nr   r   )rE   ,  )ir4   -  rw   r   r   r   r   r   r   r   rE   )r
   r   r;   r   r   r   r   r   )r+   r   r1   r   r   r   rS   r   r.   r.   r/   test_logcdf2_safeJ  s   z#TestDistributions.test_logcdf2_safec                 C   s   t jdd}|dkrddgnddg}t||}tjdd ||d	d
}||dd
}W d    n1 s4w   Y  ||dd
}|d |d ksIJ |d |d ksSJ |d |d ks]J |d |d ksgJ d S )Nr4   r   r   r   rE   r   rw   r   r   r   r   r   r   )r
   r   r   r;   r   )r+   r   r   r1   r   r   r   rS   r.   r.   r/   test_logexp_safeZ  s   
z"TestDistributions.test_logexp_safe)rd   re   rf   r&   rj   	fail_slowr	   rk   familiesr   r   rD   r{   r   r   r   r   r   r   r   r   r   r.   r.   r.   r/   r      sP    









!


r   c                 C   s  || }|dkr| j }dh}| d| dr"t|tjs"|d |D ]_}||||d}	tt| |	j	}
t
|	j	| tj
|	j| j |dkrPt|	sPJ tt|	|
 s\J t
|	|
  tj |||dd}|||dd}tt|	|r~J t
|| q$d S )	Nr   Zinverse_transform__formular   )r   ri   r.   *   )r   
_overridesr   r   Z	QMCEngineaddr;   broadcast_toget_valid_parametersshaper   testingdtype_dtypeisscalarr   isfinitenananyequal)r   fnamer   rP   ri   Z
full_shapesample_methodr   r   rR   valid_parameterssample1sample2r.   r.   r/   r   i  s,   

r   c                 C   sl   |   \}}t| dd | t| dd | |j| jksJ |j| jks$J |j| jks,J |j| jks4J d S )Nsupport)r  check_nans_and_edgesr
  _shaper  r  )r   r    r!   r.   r.   r/   r     s   r   c           
      C   s  |d u rt  n|f}| }d|v r1tt t| ||ddi W d    n1 s,w   Y  t| || }t| ||| ddi}|dv rLddi}n|dv rUddi}n|dv r]d	d
i}| d| drk|d t	j
|j| |t  krt	|sJ |D ]J}t| ||d|i}	d|v rt	j
jt	|	t	|fi | nt	j
j|	|fi | t	j
|	j|j t	j
|	j| |t  krt	|	sJ qd S )Nr   r   atolV瞯<>   r   logmeanr   logskewness>   r   ư>>   r   r   gH׊>r  r  r   r   )r~   copyr&   r'   NotImplementedErrorr   r  r  r  r;   r  r   r
  r  r   expr  )
r   r  r   rP   r   r   rS   Ztol_overrider   rR   r.   r.   r/   r     sB   




r   c           	      C   s  |  }|r/| dr|d | ds| dr|d | ds)| dr.|d n(| d	r9|d | dsC| drH|d | dsR| drW|d | || | }tj|j| |t krut	|suJ |D ]K}|rt
| j|||d
n| j|||d
}tjj||dd |rtj|j|d j n	tj|j|j tj|j| |t krt	|sJ qwd S )NZ_logcdf2_formular   Z_logcdf_formulaZ_logccdf_formular   Z_cdf_formulaZ_ccdf_formular   Z_cdf2_formular   +=r                  )r   r  r  r   r;   r  r   r
  r~   r  r"  r   r   r  	r   r   r1   r   rP   r   rS   r   rR   r.   r.   r/   r     sH   











r   c           	      C   s   |  }| d|rdnd dr|d | || | }tj|j| |t	 kr4t
|s4J |D ]=}|rEt| j|||dn| j|||d}tjj||dd tj|j|j tj|j| |t	 krst
|ssJ q6d S )	Nr  r    Zccdf2_formular   r   r#  r$  )r   r  r  r   r   r;   r  r   r
  r~   r  r"  r   r   r  r&  r.   r.   r/   r     s$   


r   c                 C   s  t | }|dv rtddd}n|dv rtt dfdd}n| jj}t| ||}tj|g|R  ^}}|\}}}	}
||@ }t||  tj	 t||
 tj	 | 
 \}}t||j}t||j}|	dk|@ }|	dk|@ }|dk|@ }|dk|@ }|d	v rt|| tj  t|| tj  t||| @  tj  t||| @  tj  n|d
v rt|| d t|| d t||| @  d t||| @  d n|dv rt|| t  t|| d t|| t  t|| d n|dv rt|| d t|| d t|| d t|| d n|dv r9t|| d t|| t  t|| d t|| t  n|dv r[t|| d t|| d t|| d t|| d ng|dv rt||	dk tj	 t||	dk tj	 t||dk ||dk  t||dk ||dk  n3|dv rt||	dk tj	 t||	dk tj	 t||dk ||dk  t||dk ||dk  |dvrt|||dk@   sJ d S d S )N>   r   r   rb   ru   r9   >   ilogcdfr   r   r   rE   >   r   >   r   >   r   >   r   >   r   >   r   >   r(  r   >   r   r   >   r  r   r  r   r  )r	  r   r   r   r,   classify_argr;   broadcast_arraysr   r  r  r  r
  r  r   )r   r  r   rR   r  
arg_domainZclassified_argsZ	valid_argZendpoint_argZoutside_argZnan_arg	all_validr    r!   Zoutside_arg_minusZoutside_arg_plusZendpoint_arg_minusZendpoint_arg_plusr.   r.   r/   r    s   





 r  c              	      s  d d fdd	}fdd}   tdD ]O}||dd	d
d j|ddd}tdd | |j|ks8J ||dd	|dd ||dd|||dd ||dd||dkd jtjkrg||dd|dd q   dd dd tddD ](}j|ddd}||dd|||dp||dd |d ||dd| q}   tdD ]x}||dd	d
d j|ddd}|j|ksJ ||dd	|dd ||dd|||dd ||dd||dkd jtjkr||dd|dd jtjkr|dks||dd|||dp|dkd ||ds&|d ||dd| q   dd dd dd tddD ]$}j|ddd}||dd|||dd |d ||dd| qBjdddd}   tdD ]?}||dd	d
d j|ddd||d   }|j|ksJ ||dd|||dd ||dd||dkd ||dd| qwt	t
rd S d S )Ng&.>Tc                    s~   |rj | ||d}t|| d|   d |j|jksJ d S tt j | ||d W d    d S 1 s8w   Y  d S )Nr   r2   r$  )momentr   r
  r&   r'   r!  )orderkindr   rS   successrR   r  r   r.   r/   check`  s   "z!check_moment_funcs.<locals>.checkc                    sD   d| d}  |}|sdS t |}t|dttd}| |v S )NZ_moment_r  Forders   )r  r   setrange)r.  r/  Zformula_nameZ	overridesr   r3  )r   r.   r/   has_formulai  s   

z'check_moment_funcs.<locals>.has_formular4  rawr   F)r0  r   r   r-  r   Zgeneralr   Zquadrature_icdfcentralrE   r4   	transformstandardizedrV   r5   	normalize)NNT)reset_cacher6  r-  r  r
  r   r
   r   r   r   r   )r   rP   r2  r7  r   rS   varr.   r1  r/   r   X  s   	




r   r   r   )r4   r5   
dist_shape)r6   rE   r  r   rng_typec                 C   s   t jd}|  }|r|dkrtd | ||}d}|f| }	|	| }
|dkr-|j}|t jjkr9|d|d}||	|d}|j	|
ksFJ t
||dd	}t|j	d |d
d}d}|j}t ||k }||| k skJ d S )Nl   MLy r   z3Distribution can't have a shape without parameters.i   r   rE   r   rr   )ZaxisF)r   g{Gz?)r;   rg   rh   r|   r&   r   r}   r   	Generatorr
  r   r   r8   sum)r   r?  r   r  r@  ri   Znum_parametersr   nZsample_sizeZsample_array_shaper  r1   Z	statisticpvalueZp_thresholdZnum_pvaluesZnum_small_pvaluesr.   r.   r/   test_sample_against_cdf  s(   

rE  c                 C   s   | j }i }| jD ]}||j qtj| jtd}| D ]A\}}||vr&q|| }|j	j
|d\}}	|j	j\}
}|
r?||kn||k }||rJ||	kn||	k M }t||j	j||d ||M }qt| | j |S )Nr  rs   )r   _parameterizationsupdate
parametersr;   onesr  boolitemsr,   r)   r:   r   r=   _invalid)r   rs   rJ  Zparameterizationr,  namevalue	parameterr    r!   
a_included
b_includedvalidr.   r.   r/   r	    s*   



r	  c                 C   s.  |d u r*t j| jtd}t j| jtd}t j| jtd}t j| jtd}||||fS |j| jd\}}t |||\}}}|j\}	}
|	rH||kn||k }||
rS||kn||k M }t j|j	t
d}d|||k< d|||k< t j|j	t
d}d||	r|||k n||k< d||
r||k n||k< t |}||||fS )NrF  rG  r   rE   )r;   rK  r  rL  zerosr)   r   r*  r:   r
  intisnan)r   r   r+  Z
valid_argsZendpoint_argsZoutside_argsZnan_argsr    r!   rR  rS  ZinsideonZoutsider  r.   r.   r/   r)     s*   


r)  c                  C   s  G dd dt } d}tjt|d | dd W d    n1 s!w   Y  d}tjt|d | tg d W d    n1 sBw   Y  tjt|d | g d	d W d    n1 s`w   Y  tjt|d | tjd W d    n1 s}w   Y  tjt|d | d
d W d    n1 sw   Y  d}tjt|d |  d
 W d    n1 sw   Y  tjt|d |  tj W d    n1 sw   Y  d}tjt|d |  jddd W d    n1 sw   Y  G dd dt }d}tjt|d |dd W d    n	1 sw   Y  d}tjt|d |  W d    n	1 s;w   Y  d}tjt|d |ddgg d	d W d    n	1 s_w   Y  d}tjt|d |g d	g d	d}|	ddg W d    n	1 sw   Y  d}tjt
|d |dt gddgd W d    n	1 sw   Y  d}tjt|d |g d	g d	d}|jdd W d    d S 1 sw   Y  d S )Nc                   @   s   e Zd Zede dZdS )z#test_input_validation.<locals>.Testr1   rJ   N)rd   re   rf   r   r   r   r.   r.   r.   r/   Test=  s    rY  z`The `Test` distribution family does not accept parameters, but parameters `{'a'}` were provided.r$   rE   r    zAAttribute `tol` of `Test` must be a positive float, if specified.r   r   r   zEArgument `order` of `Test.moment` must be a finite, positive integer.z2Argument `kind` of `Test.moment` must be one of...r4   coconutr/  c                   @   sB   e Zd Zede dZede dZeeegZede dZ	dS )z$test_input_validation.<locals>.Test2crJ   rQ   r1   N)
rd   re   rf   r   r   Z_p1Z_p2r   rH  r   r.   r.   r.   r/   Test2Z  s
    r_  zkThe provided parameters `{a}` do not match a supported parameterization of the `Test2` distribution family.zLThe `Test2` distribution family requires parameters, but none were provided.zjThe parameters `{c, d}` provided to the `Test2` distribution family cannot be broadcast to the same shape.)r^  rQ   zmThe argument provided to `Test2.pdf` cannot be be broadcast to the same shape as the distribution parameters.z$Parameter `c` must be of real dtype.z<Parameter `convention` of `Test2.kurtosis` must be one of...Z
convention)r   r&   r'   
ValueErrorr;   r   r  r-  r   r   r(   objectr   )rY  r-   r_  r   r.   r.   r/   test_input_validation<  sp   $rc  c                  C   s   t ddgdd} tdi | }t|}tt|}| | | }}}t||ks2J t||ks;J |jdd|jdd|jdd}}}t||ksXJ t||ksaJ d S )Nr   r4   r2   r   r  rr   r.   )	r*   r   r   pickleloadsdumpsr   r;   r   )kwargsZdist1Zdist2Zdist3r   r   Zres3r.   r.   r/   test_rng_deepcopy_pickle  s   (rh  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestAttributesc                 C   s  t dd}d}tjt|d |jdd W d    n1 sw   Y  | }tjt|d |jdd W d    n1 s@w   Y  d |_tjt|d |jdd W d    n1 s`w   Y  | }|jdd}t|| |jdd}|jdd}t|| t||krJ d|_|jdd}|jdd}t|| t||krJ |	  tjt|d |jdd W d    n1 sw   Y  d	}tjt
|d d
|_W d    d S 1 sw   Y  d S )Nno_cache)cache_policyzD`StandardNormal` does not provide an accurate implementation of the r$   r   r   r   r   z/Attribute `cache_policy` of `StandardNormal`...rz   )r   r&   r'   r!  r   rk  r   r;   r   r=  ra  )r+   r   r-   r   Zcached_meanZquadrature_meanr.   r.   r/   test_cache_policy  sB   



"z TestAttributes.test_cache_policyc           
      C   s  d}t  }d}tjt|d d|_W d    n1 sw   Y  tjt|d d|_W d    n1 s7w   Y  tjt|d tj|_W d    n1 sRw   Y  t jdd}t jdd}||}|j|d	d
}|j|d	d
}t	|||jd t	|||jd t
|| t
|| ksJ d}	|j|j|_|_||	}|j|	dd
}|j|	dd
}t	|||jd t	|||jd t
|| t
|| ksJ d S )N      @z+Attribute `tol` of `StandardNormal` must...r$   g      )r   r   r[  r   r   r   r   gGz?r   )r
   r   r&   r'   ra  r   r;   r  r   r   absr   )
r+   r1   r   r-   X1X2rS   r   r   rv   r.   r.   r/   test_tol  s8   


 zTestAttributes.test_tolc                 C   s   t ddd}|ddksJ d|_|tddksJ tdtd}}t ||dd	}|tdd
ks<J G dd dt }|||dd	}| dksSJ |jdd
ddks^J d}tjt	|d d|_W d    d S 1 svw   Y  d S )Nr   rE   r   r4   Zskip_all       @r   r   )r    r!   validation_policyr   c                   @   s   e Zd Zdd Zdd ZdS )z0TestAttributes.test_iv_policy.<locals>.MyUniformc                 _      dS N	incorrectr.   r+   r   rg  r.   r.   r/   r        zATestAttributes.test_iv_policy.<locals>.MyUniform._entropy_formulac                 [   rt  ru  r.   )r+   r.  r   r.   r.   r/   _moment_raw_formula  rx  zDTestAttributes.test_iv_policy.<locals>.MyUniform._moment_raw_formulaN)rd   re   rf   r   ry  r.   r.   r.   r/   	MyUniform  s    rz  rv  r8  )r/  r.  z/Attribute `validation_policy` of `MyUniform`...r$   rz   )
r   r   rs  r;   r   r   r-  r&   r'   ra  )r+   r   r    r!   rz  r-   r.   r.   r/   test_iv_policy  s   "zTestAttributes.test_iv_policyc                 C   s   t jddd}t jdgdd}|jdksJ |jdksJ |jd dks&J |jd dks/J tt d|_W d    n1 sBw   Y  d|jd< |jd dksUJ d S )NrE   r4   mur   r5   r   r2   )r
   r   r}  r   r&   r'   AttributeError)r+   r   Yr.   r.   r/   test_shapes  s   
zTestAttributes.test_shapesN)rd   re   rf   rl  rq  r{  r  r.   r.   r.   r/   ri    s
    (ri  c                   @   s6   e Zd Zejdeedd Zdd Z	dd Z
dS )	TestMakeDistributionzi, distdatac              	   C   s  |d }h d}t tjdds||v rtd |dv r d S ddd}d	d
h}ddh}h d}h d}	h ddhdhd}
ddh}tt|}|jrXt	t
|jd|d ni }tjd}t|}|d)i |}|d)i |}|jd|d}||}||d}d}tjddd. |d\}}}}t| |  ||vrt| | |d t| | |d t| |||d t| |||d ||vrt| |||d ||vrt|jdd |||d t|||||d t|||||d t|||||d t|||||d ||	vr4t|||||d t| ||!||d t|"||#||d t|$||%||d t&d!D ]}||
|i vrzt|j'|d"d#|'|||d q_t&d$d%D ]}||vrt|j'|d&d#|d|d  ||d qd'}t|jd|d|j(dtj|d(|d W d    d S 1 sw   Y  d S )*Nr   >   ZargusexponpowZ	powernorm	kstwobignhalfgennormZ	exponweibZgenexponkstwoZpowerlognorm	johnsonsbZrecipinvgaussZgompertzZkappa4Zstudentized_rangeksoneZvonmises_lineZSCIPY_XSLOW0zSkipping as XSLOW>   vonmiseslevy_stablegh㈵>)r  r  r  Zpearson3r  r  >   r  chir  r  invgammar  >   Z
skewcauchyZarcsineZ	trapezoidZtriang>   alphaZ
halfcauchyZ
foldcauchyZlevy_lZlevyZparetor  r3   r^   rE   l   s4XF r2   r
  ri   gHz>r   rw   rx   Zmvskr   )r   r  excessr`  rV   r8  r]  r5   r6   r;  l   1XS+- )r8   random_stater.   ))rV  osenvironr`   r&   r   r   r
   rA   r*   zipsplitr;   rg   rh   make_distributionr   r   r   r   r  r   r   r   r   r   r   r   r   r   r   logsfr   sfr   ppfr   isfr6  r-  rvs)r+   r   Zdistdatadistnamerm   Zcustom_tolerancesZskip_entropyZskip_skewnessZskip_kurtosisZskip_logccdfZskip_rawZskip_standardizedr   r   ri   ZCustomDistributionr   r  r1   rv   r   r  mvskr.  r   r.   r.   r/   test_make_distribution
  s   


$



$z+TestMakeDistribution.test_make_distributionc                 C   s   d}t jt|d ttj W d    n1 sw   Y  d}t jt|d ttj W d    n1 s9w   Y  d}t jt|d tt  W d    d S 1 sYw   Y  d S )Nz`levy_stable` is not supported.r$   z`vonmises` is not supported.z4The argument must be an instance of `rv_continuous`.)	r&   r'   r!  r
   r  r  r  ra  rb  r+   r-   r.   r.   r/   rc  T  s   "z*TestMakeDistribution.test_input_validationc                 C   s   ddl m} | D ]	}tt|sJ q
ttj}t|dddks%J tj	dkr5t
|dddks5J d|jv s<J ttj}t|dd	d
ksMJ tj	dkr]t
|dd	dks]J d|jv sdJ d S )Nr   )_distribution_namesr4   rZ  zGamma(a=2.0)2zGamma(a=np.float64(2.0))Gamma)betazHalfGeneralizedNormal(beta=2.0)z+HalfGeneralizedNormal(beta=np.float64(2.0))ZHalfGeneralizedNormal)(scipy.stats._distribution_infrastructurer  keyshasattrr
   r  gammarW   r;   __version__repr__doc__r  )r+   r  r   r.   r.   r/   test_repr_str_docsa  s   

z'TestMakeDistribution.test_repr_str_docsN)rd   re   rf   r&   rj   rk   	enumerater   r  rc  r  r.   r.   r.   r/   r  	  s
    
Ir  c                   @   s   e Zd Zdd Zejdee	 ej
ddddd Zejd	ejd
ddgdd Zejdejdg dejddd Zejd	dd Zdd Zdd Zdd Zdd Zdd Zd S )!TestTransformsc           	      C   s>  t jd}|d}|d}t ||t ||}}tjt ||d}t||}|j	d|d}|
|}t| t | d  t| |  t| |d t| |  t| |  t| t |  t| |d t| |d	d
  t| |  t|||| t|
||
| t|||| t|||| t|||| t|||| t| || | t|!||"| t|#t ||| t|$t ||| |%d}t &||k||k @ sJ d S )N   b2,' r5   rE   )lbubr5   r2   r  r%        ?r  r  r5   r2   )'r;   rg   rh   minimummaximumr
   truncater   	truncnormr  r   r   r   r   r   r   r  r   r   r>  r   sqrtr   r   r  r   r   r  r   r   r  r   r   r   r  r(  r   r   r   )	r+   ri   r  r  r  Y0r   rv   r   r.   r.   r/   test_truncatev  s:   



 zTestTransforms.test_truncater2   r   r   r   c                 C   sR  t j|}G dd dt}t|||ddd}|\}}}}	}
}}}|j}|j}t }tj	||d}|| | }|| | }|
 \}}|
 \}}t|||  t|||  t jddd` tt | |  t| |  t| | |  t| | |  t| | |  t| | |d	   t| | d
  t| | t |  t| |  t||||t |  t|||||  t|||| t|||| t|||| t|||| t|||||| t|||||| t|||||| t|||||| t||
||
| |  t| |	| |	| |  t|!|
|!|
| |  t|"|	|"|	| |  t#ddD ]4}t|$|d|$| t|$|d|$|d||   t|$|d|$|dt ||   qW d    n	1 sw   Y  |d	|  | }||d	  | }t %|j&}|
 \}}|
 \}}t|||  t|||  t jddd t| | |  t| | |  t| | |  t| | |  t| | |  t| | |  t| | |  t| | |  t| | |  t|||||  t|||||  t|||||  t|||||  t|||||  t|||||  t||
||
|  t| |	| |	|  t|!|
|!|
|  t|"|	|"|	|  t#ddD ]*}t|$|d|$|d t|$|d|$|d t|$|d|$|d qW d    d S 1 s"w   Y  d S )Nc                       r   )z8TestTransforms.test_loc_scale.<locals>.TransformedNormalc                    s    t  jt g|R i | d S )N)r   __init__r   rw  r   r.   r/   r    s    zATestTransforms.test_loc_scale.<locals>.TransformedNormal.__init__)rd   re   rf   r  r   r.   r.   r   r/   TransformedNormal  r   r  )rE   r   r   r   rE   )rq   r@   )locscalerw   r   r4   r  rV   r8  r9  r;  )'r;   rg   rh   r   r   r  r  r   r
   normr  r   r   r"  r   r   r   r   r   r   r   r   signr   r   r   r   r   r   r   r   r(  r   r   r   r6  r-  rU  r  )r+   rD   r   ri   r  r   r   r1   r   rv   r   rP   r   r   r  r  Zdist0Zdist_refZx0Zy0r    r!   Za0Zb0r   zr.   r.   r/   test_loc_scale  s   
 !
$zTestTransforms.test_loc_scalerV   exp_powr"  powc                 C   s@  t jd}|d}|d}t | | }|dkr!t|}nt j| }tj|t |d}|jd|d}|	|}	t
| t |  t
| |  t
| |d t
| |  t
| |  t
| t |  t
| |d t
| |d	d
  t
| |  t
|||| t
|	||	| t
|||| t
||	||	 t
||	||	 t
|||| t
|||| t
| ||!| t
|"t |	||	 t
|#t |	||	 d}
t
|j$|
dt |j$|
d d S )Nr  r  r"  )r  r  r  r  r  r  r5      M [ rr   )%r;   rg   rh   r   r
   r"  eZlognormr  r   r   r   r   r   r   r  r   r   r>  r   r  r   r   r  r   r   r  r   r   r  r   r   r   r  r(  r   r   )r+   r  ri   r}  r   r   r  r  r   rv   r   r.   r.   r/   test_exp_pow  s>   



$zTestTransforms.test_exp_powr  )rE   r4   r   z/`scale=-1` fails on 32-bit; needs investigationc                 C   s  t jd}|d}t |t|}}ttj}|| ||d }|dkr-t|dnt|d }|| }|j	d|d}	|
|	}
t |
}t| t |  t| |  t| |  t| |  t||	||	 t|
|	|
|	 t||	||	 t||
||
 t||
||
 t||	||	 t||	||	 t||	||	 t jddd t|||| t|||| W d    n1 sw   Y  d	}t|j	|d
||j	|d
  d S )Nr  r  rZ  r   r  r  rw   rx   r  rr   )r;   rg   rh   r  rn  r
   r  r  r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r(  r   )r+   r  ri   r    r  ZInvGammar  r   r  r   rv   r   r   r.   r.   r/   test_reciprocal&  s8   


"zTestTransforms.test_reciprocalc           	      C   sB  t jd}|d}t|d}t|}t|}|jd|d}||}t	|
 t |  t	| |  t	| |d t	| |  t	| |  t	| t |  t	| |d t	| |dd	  t	| |  t	|||| t	|||| t	|||| t	|||| t	|||| t	|||| t	|||| t	|||| t j d
d$ t	|!t ||| t	|"t ||| W d    n	1 sw   Y  d}t	|j#|dt |j#|d d S )Nr  r  rZ  r  r  r  r  r  r5   rw   )rz   r  rr   )$r;   rg   rh   r   r
   Zloggammar   r  r   r   r   r   r   r  r   r   r>  r   r  r   r   r  r   r   r  r   r   r  r   r   r   r  r   r(  r   r   )	r+   ri   r    r   r  r  r   rv   r   r.   r.   r/   test_logQ  s<   




$zTestTransforms.test_logc                 C   sF  t ddd}d}tt|d| dksJ td| d| dks%J tt|d| dks4J t d	dd}d
}tjt|d d|  W d    n1 sRw   Y  d}tjt|d t| W d    n1 spw   Y  d}tjt|d d|  W d    n1 sw   Y  tjt|d d|  W d    n1 sw   Y  tjt|d ddg|  W d    n1 sw   Y  d}tjt|d |d  W d    n1 sw   Y  tjt|d |d  W d    n1 sw   Y  tjt|d |ddg  W d    d S 1 sw   Y  d S )NrE   r4   r   zUniform(a=1.0, b=2.0)zlog(r]   z1/(zexp(r   z=Division by a random variable is only implemented when the...r$   zBThe logarithm of a random variable is only implemented when the...z@Raising an argument to the power of a random variable is only...r        ?z=Raising a random variable to the power of an argument is onlyr   )r   rW   r
   r   r"  r&   r'   r!  )r+   r   ZX_strr-   r.   r.   r/   test_monotonic_transformss  sD   




$z(TestTransforms.test_monotonic_transformsc           	      C   s   t jd}d\}}}}|ddd}t||d}|| | }t||||| |  |||  }t||||| |  || | }t||||| |  |t||d|  }t|||| | |  d S )Nl   lO[5 )g7A`?gq=
ףp?g=
ףp=?g(\?r5   d   r   )r;   rg   rh   rl   r   r   r   r   )	r+   ri   r    r!   r  r  r1   r  r   r.   r.   r/   test_arithmetic_operators  s   $z(TestTransforms.test_arithmetic_operatorsc                 C   s  t jd}|d}tt | }t|}|jd|d}||}t	|
 t | d  t	| |  t	| |d t	| |  t	| |  t	| t |  t	| |d t	| |dd	  t	| |  t	|||| t	|||| t	|||| t	|||| t	|||| t	|||| t	|||| t	||| | t	|!t ||| t	|"t ||| |#d
}t $|dksJ d S )Nr  r  r  r  r%  r  r  r  r5   r2   r   )%r;   rg   rh   r
   rn  r   Zfoldnormr  r   r   r   r   r   r   r  r   r   r>  r   r  r   r   r  r   r   r  r   r   r  r   r   r   r  r(  r   r   r   )r+   ri   r  r  r  r   rv   r   r.   r.   r/   test_abs  s6   



zTestTransforms.test_absc                 C   s   t t j}|dd}t| }t|d|d t|d|d t|d|d t|d|d t|	d|	d t|
d|
d d S )Nr4   )r^  rE   )r
   r  Zweibull_minrn  r   r   r   r   r   r   r   )r+   ZWeibullr   r  r.   r.   r/   test_abs_finite_support  s   

z&TestTransforms.test_abs_finite_supportc                 C   s  t jd}t d }tjdd}|jd|d}||}t|	 t 
| d dd	 t| | dd	 t| |  t| |  t| |  t| t |  t| |d
 t| |dd  t| |  t|||| t|||| t|||| t|||| t|||| t|||| t|||| t|||| t| t 
||| t|!t 
||| |"d}t #|dksJ d S )Nr  r4   rE   )Zdfr2   r  r%  r  r   r  r  r5   r   )$r;   rg   rh   r   r
   Zchi2r  r   r   r   r   r   r   r   r   r>  r   r  r   r   r  r   r   r  r   r  r   r  r   r   r   r  r(  r   r   r   )r+   ri   r  r  r   rv   r   r.   r.   r/   test_pow  s4   

 
zTestTransforms.test_powN)rd   re   rf   r  r&   rj   r  r   r   rD   r{   r  rk   r  Zxfail_on_32bitr  r  r  r  r  r  r  r.   r.   r.   r/   r  s  s&    
"
d
&

(
!" r  c                   @   s0   e Zd Zejddd Zdd Zdd ZdS )	TestOrderStatisticr   c           
      C   sX  t jd}tddd}d}t dgdgdgg}tj|||d}t||d | }|jd|d	}|	|}t
t | |  t
| |  t
| |  t
| |  t
| |d
dd t
| |dd dd t
| |d t
| |  t
|||| t
|j	|dd|j	|dd t
|j|dd|j|dd t
|j|dd|j|dd t
|j|dd|j|dd t
|||| t
|||| t
|||| t jddd$ t
|t  ||| t
|!t  ||"| W d    n	1 s"w   Y  d}	t#j$t%|	d tj||dd W d    n	1 sDw   Y  t#j$t%|	d tj|d|d W d    n	1 sdw   Y  t#j$t%|	d tj||dd W d    n	1 sw   Y  t#j$t%|	d tj|d|d W d    d S 1 sw   Y  d S )Nl   Cvu= r   rE   r   rV   r5   )rC  rr  r  r  r  r$  r  r  r   r   r   r   rw   r   z0`r` and `n` must contain only positive integers.r$   r   r  )&r;   rg   rh   r   r   r
   order_statisticr  r  r   r   r"  r   r   r   r   r>  r   r   r   r  r  r   r   r   r   r   r   r   r  r   r(  r   r   r  r&   r'   ra  )
r+   ri   r   rC  r  r  r  r   rv   r-   r.   r.   r/   test_order_statistic  sR   
$z'TestOrderStatistic.test_order_statisticc                 C   sD   t t j}| }|d d }t j|ddd}t| |  d S )NrV   r4   r5   r  rC  )r
   r  rl   r  r   r  )r+   r   r   r  Zr.   r.   r/   test_support_gh22037   s
   z'TestOrderStatistic.test_support_gh22037c                 C   s   t t j}t t j}ddgd}}ddgdgg}}dggdggg}| }t |||}	t j|	||d	}
|||d
}t j|||d	}tj|
	||	| d S )Nr  r   rE   r5   r6   rV   g333333ӿr   r  r   )
r
   r  r  r  r  r  r;   r  r   r   )r+   r   ZTruncatedNormalr    r!   r  rC  r1   ro  ZY1ZZ1rp  ZZ2r.   r.   r/   test_composition_gh22037*  s   z+TestOrderStatistic.test_composition_gh22037N)	rd   re   rf   r&   rj   r  r  r  r  r.   r.   r.   r/   r    s
    

*
r  c                   @   sf   e Zd Zdd Zdd Zejdej	ej	fej
ejfgdd Zdd	 Zd
d Zdd Zdd ZdS )TestFullCoveragec                 C   s   t t td d W d    n1 sw   Y  t t td d W d    n1 s1w   Y  t t td  W d    d S 1 sLw   Y  d S Nr   )r&   r'   r!  r   r=   r)   __str__r+   r.   r.   r/   test_Domain?  s   "zTestFullCoverage.test_Domainc                 C   s<   t t td d W d    d S 1 sw   Y  d S r  )r&   r'   r!  r   validater  r.   r.   r/   test_ParameterG  s   "zTestFullCoverage.test_Parameter)dtype_in	dtype_outc           	      C   sb   t d}td|d}tjddg|d}|j|i d\}}}t|| ||ks(J t|dd	g d S )
N)r   rE   r1   rJ   r  g      @rF  rG  TF)r   r   r;   r   r  r   )	r+   r  r  r,   rQ  r1   Zarrr  rT  r.   r.   r/   "test_RealParameter_uncommon_dtypesK  s   
z3TestFullCoverage.test_RealParameter_uncommon_dtypesc                 C   sJ   G dd dt }| }tj}||_tjdg|d}||j|ks#J d S )Nc                   @   s&   e Zd ZededddZdd ZdS )zNTestFullCoverage.test_ContinuousDistribution_set_invalid_nan.<locals>.TestDistr1   )r   r   r"   rJ   c                 _   rt  )Nr   r.   r+   r1   r   rg  r.   r.   r/   _logpdf_formula_  rx  z^TestFullCoverage.test_ContinuousDistribution_set_invalid_nan.<locals>.TestDist._logpdf_formulaN)rd   re   rf   r   r   r   r  r.   r.   r.   r/   TestDist]  s    r  r  rF  )r   r;   float32r  r   r   r  )r+   r  r   r  r1   r.   r.   r/   +test_ContinuousDistribution_set_invalid_nanX  s   z<TestFullCoverage.test_ContinuousDistribution_set_invalid_nanc                 C   sH   t tdjttjjksJ t tdjttjjks"J d S )Nr   rE   )r   r;   float64maxZfinfoZint64Ziinfor  r.   r.   r/   test_fiinfoh  s   "&zTestFullCoverage.test_fiinfoc                 C   s@   t t}d|v s
J t t}d|v sJ t t}d|v sJ d S )Nz"accepts no distribution parameterszaccepts one parameterizationzaccepts two parameterizations)r   r   r   r   )r+   msgr.   r.   r/   test_generate_domain_supportl  s   z-TestFullCoverage.test_generate_domain_supportc                 C   s   t ddd}tjdk rt|dksJ nt|dksJ tjdk r.t|d d d	ks-J nt|d d d
ks:J t tddd}t|dksKJ t tjdtjdtjdtjdd}t|dkseJ d S )Nr   rE   r   r  zUniform(a=0.0, b=1.0)z-Uniform(a=np.float64(0.0), b=np.float64(1.0))r5   r4   z3.0*Uniform(a=0.0, b=1.0) + 2.0zOnp.float64(3.0)*Uniform(a=np.float64(0.0), b=np.float64(1.0)) + np.float64(2.0)r6   z'Uniform(a=array([0., 0., 0., 0.]), b=1)rF  z[Uniform(a=array([0., 0., 0., 0.], dtype=float32), b=array([1., 1., 1., 1.], dtype=float32)))r   r;   r  r  rU  r  rK  )r+   r   r.   r.   r/   #test_ContinuousDistribution__repr__v  s   

$z4TestFullCoverage.test_ContinuousDistribution__repr__N)rd   re   rf   r  r  r&   rj   rk   r;   Zfloat16Zint16r  r  r  r  r  r  r.   r.   r.   r/   r  <  s    




r  c                   @   s4  e Zd ZedddZeededdZedddZ	edddZ
eedddZejd	eeedd
g ejeejjejdk dddejejdejde ejdejd ejjejdk dddde d ed de d d de d d de dde d  dde  ejedddeeddeje	e
gddgdeeeeede edd
ge ed
dg gdd Zejd	eedd
e	 d d
e	 edd edd
e	 d eeddeeed edeje	edddded ddee  de g
dd Z dS ) 	TestReprsr   rE   r   r   r   r   r|  i  r   rr  r  z#numpy 1.x didn't have dtype in repr)reason)Zmarksr4   rF  r5   r6   rV   r  g?g?g333333?r   weightsrm  c                 C   s   ddl m} ddl m} ddlm}m}m}m}m} ddlm	}	m
}
 ddlm} tt|}|jddd	}|jddd	}t|| |j|ju sIJ d S )
Nr   )array)r  )rn  r"  r   r  r  )r   r   )r   r2   i  r  )numpyr  r  scipy.statsrn  r"  r   r  r  r   r   scipy.stats._new_distributionsr   rO   r  r   r   r  )r+   r   r  r  rn  r"  r   r  r  r   r   r   Znew_distr  r  r.   r.   r/   test_executable  s   &
zTestReprs.test_executablec                 C   s   t t|dk s
J d S )N   )lenr  )r+   r   r.   r.   r/   test_not_too_long  s   zTestReprs.test_not_too_longN)!rd   re   rf   r   Ur;   r  Vr   r   r  rU  r  r&   rj   rk   r  paramZskipifr  rK  r  r
   r  r  r   rn  r"  r   r  fullZaranger  r.   r.   r.   r/   r    sp    "


#r  c                   @   s0   e Zd Zedeej ejfddZdd ZdS )	MixedDistr1   r"   rJ   c                 O   sd   ddt dt j   t d|d d d   ddt dt j   t d|d d d    S )	N皙?皙?r4         g      ?333333??r  )r;   r  r<   r"  r  r.   r.   r/   _pdf_formula  s   00zMixedDist._pdf_formulaN)	rd   re   rf   r   r   r;   r   r   r	  r.   r.   r.   r/   r    s    r  c                   @   sF   e Zd Zdd Zejdddgdd Zdd	 Zd
d Z	dd Z
dS )TestMixturec                 C   s(  d}t jt|d tg  W d    n1 sw   Y  d}t jt|d td W d    n1 s5w   Y  d}t jt|d ttddgdt g W d    n1 sZw   Y  d	}t jt|d tt gd
d
gd W d    n1 s}w   Y  d}t jt|d tt gdgd W d    n1 sw   Y  d}t jt|d tt gdgd W d    n1 sw   Y  d}t jt|d tt t gd
dgd W d    n1 sw   Y  d}t jt|d tt t gddgd W d    d S 1 sw   Y  d S )Nz7`components` must contain at least one random variable.r$   z3Each element of `components` must be an instance...r   z5All elements of `components` must have scalar shapes.rE   r4   )r}  z5`components` and `weights` must have the same length.r  r  z)`weights` must have floating point dtype.z`weights` must sum to 1.0.r   z#All `weights` must be non-negative.r  r  )r&   r'   ra  r   r   r  r.   r.   r/   rc    s@   

$z!TestMixture.test_input_validationr
  r.   )r2   c           
         sD  t jd}ttdddtdddfdd}t }| } fd	d
}|| |  || |  || |  ||	 |	  ||
 |
  || |  || |  || |  || |  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| dD ]}tdD ]}||j||d|j||ddd qqd |j |d}	|	j ksJ t|	 |jj dks J d S )Nl   $8-@      пr  r|  r  r  r  r  r  c                    s0    dkrt | sJ t jj| |fi | d S )Nr.   )r;   r  r  r   )rR   rS   rg  r
  r.   r/   r     s   z/TestMixture.test_basic.<locals>.assert_allclose)r8  r9  r;  rV   r]  r  r$  )r2   r   rV   rr   g?)!r;   rg   rh   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r(  r   r   r   r6  r-  r   r
  r
   Zks_1sampZravelrD  )
r+   r
  ri   r   r  r1   r   r/  r.  r   r.   r  r/   
test_basic  sJ   
"zTestMixture.test_basicc                 C   sZ   d}t t j}||d}t || f}tddd}t||t j|d| d S )Nr  rZ  r6   r   )	r
   r  r  r   r;   rN   r   r   Zdgamma)r+   r    r  r   r  r1   r.   r.   r/   test_default_weights1  s   
"z TestMixture.test_default_weightsc                 C   s   t dddt dddg}d}t||d}tt d|_W d    n1 s'w   Y  tt d|_W d    n1 s?w   Y  |d	 |jd
< |jd
 |d
 ksVJ |d	 |jd
< |jd
 |d
 kshJ d S )Nr  r  r|  r  r  r  r  r2   rE   r   )r   r   r&   r'   r~  
componentsr  )r+   r  r  r   r.   r.   r/   test_properties9  s   zTestMixture.test_propertiesc                 C   s   t jd}ttj}| }t||g}|jdd}t j|	||	| t j|
||
| t j|||| t j|||| d S )Nl    nppRr2   r7   )r;   rg   rh   r
   r  Zcauchyr   r  r   r   r   r(  r   )r+   ri   ZCauchyZX0r   rv   r.   r.   r/   test_inverseK  s   zTestMixture.test_inverseN)rd   re   rf   rc  r&   rj   rk   r  r  r  r  r.   r.   r.   r/   r
    s    !
+r
  )r   )Mr  rd  r   r   r  r;   r   r&   Znumpy.testingr   r   Z
hypothesisr   r   r   r	   Zhypothesis.extra.numpyextrarM   Zscipyr
   Zscipy.stats._fitr   Zscipy.stats._ksstatsr   r  r   Zscipy.stats._distr_paramsr   r  r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r  r   r   r   r   r   r   r  r   rj   rk   r~   rg   rA  r   ZSobolrE  r	  r)  rc  rh  ri  r  r  r  r  r  r  r
  r.   r.   r.   r/   <module>   sl    0
g& =
6,K~'Czj   HRN