a
    QeH                     @  sZ  U d dl mZ d dlm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Z dd	gZg d
Zg dZdd eeddD Zdddddddddd	Zeeeeeeeeed	Zejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfej ej ddfej!ej!ddfej"ej"ddfej#ej#ddfej$ej$ddfej%ej%ddfej&ej&ddfej'ej'ddfej(ej(ddfej)ej)ddfej*ej*ddfej+ej+ddfej,ej,ddfej-ej-ddfej.ej.ddfej/ej/ddfej0ej0ddfej1ej1ddfej2ej2ddfej3ej3ddfej4ej4ddfej5ej5ddfej6ej6ddfej7ej7ddfej8ej8ddfej9ej9ddfej:ej:ddfej;ej;ddfej<ej<ddfej=ej>ddfej?ej?ddfej@ej@ddfejAejAddfejBejBddfejCejCd dfejDejDd dfejEejEd dfejFejFd!dfejGejGddfejHejHddfejIejIddfejJejJddfejKejKddfejLejLddfejMejMddfejNejNd"dfejOejOd"d#fejPejPd"d#fejQejQd"d#fejRejRd$d#fejSejSd$d#fejTejTd%dfejUejUd%dfejVejVd&d#fejWejWd"d#fejXejXd"dfejYejYd"dfejZejZd"d#fej[ej[d&d#fej\ej\d"dfej]ej]ddfej^ej^ddfej_ej_ddfej`ej`ddfejaejad'dfejbejbddfejcejcd(dfejdejdddfejeejeddfejfejfddfejgejgddfejhejhddfejiejjddfejkejkddfejlejlddfejmejmddfejnejnddfejoejoddfejpejpddfejqejqddfejrejrddfejsejsddfejtejtddfejuejuddfejvejvddfejwejwd)dfejxejxd)dfejyejyd)dfejzejzd)dfej{ej{ddfej|ej|d*dfej}ej}d+dfej~ej~d,dfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejd*dfejejd*dfejejddfejejddfejejd*dfejejd*dfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejd(dfejejddfejejddfejejd*dfejejd*dfejejddfejejd'dfejejddfejejddfejejd-dfejejd'dfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejd.dfejejd.dfejejd.dfejejddfejejddfejejd/dfejejd/dfejejd/dfejejd/dfejejd/dfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejd/dfejejd0dfejejddfejejd/d1fejejd0d1fejejd/d1fejejd0d1fejejddfejejddfejejddfejejd2dfejejd2dfejejd(dfejejddfejejddfejejddfejejd/dfejejd0dfejejddfejejd/d1fejejd0d1fejejd/d1fejejd0d1fejejddfejejddfejejddfejejddfejejddfej ej ddfejejd3dfejejd3dfejejd3dfejejd3dfejejddfejejddfej	ej	ddfej
ej
d(dfejejd(dfejejddfejejd4dfejejddfejejddfejejddfejejddfejejddfejejddfejejddfejejd-dfejejddfejejd-dfejejddfejejddfejejddfejejddfejejd(dfejejd*dfejejd*dfejejddfej ej ddfgZ!d5e"d6< d7d e!D Z#d8d9 Z$d:d; Z%ej&j'd<e!e#d=d>d? Z(dS )@    )annotations)CallableN)product)assert_allclosesuppress_warnings)special)cython_specialTF)i   
   )g      $g      g      ?g      $@c                 C  s   g | ]}t | qS  )complex).0tupr   r   [/var/www/sunrise/env/lib/python3.9/site-packages/scipy/special/tests/test_cython_special.py
<listcomp>       r      )repeatZbintfloatdoublezlong doublezfloat complexzdouble complexzlong double complexintlong)	bfdgFDGil)dd)r   r   )Zdldddd)r#   )r   )r"   ZDD)r#   ZDDD)ddddZDDDD)r"   dDldzd and l differ for negative int)r#   ddDZldd)r&   )r$   dddDZlddd)r   r   r   )r&   r"   )r%   )r"   r%   )r#   r'   )r$   r(   )r   )Zlldr#   )r$   )Zdddddzsee gh-6211)r"   r"   )r&   ZldbZlDZlDb)Zllddr$   z<list[tuple[Callable, Callable, tuple[str, ...], str | None]]PARAMSc                 C  s   g | ]}|d  j qS )r   )__name__r   xr   r   r   r   "  r   c                 C  s"   t dd | D }tt| }|S )Nc                 s  s   | ]}t | V  qd S N)TEST_POINTSr+   r   r   r   	<genexpr>&  r   z(_generate_test_points.<locals>.<genexpr>)tuplelistr   )	typecodesZaxesptsr   r   r   _generate_test_points%  s    r4   c                  C  sZ   t tD ]L} tt| }t|r| dstD ]\}}}}||u r, qq,t|  dqd S )N_z missing from tests!)dirr   getattrcallable
startswithr)   RuntimeError)namefuncr5   Zcyfunr   r   r   test_cython_api_completeness+  s    
r=   param)idsc              
     sr  | \}}}}|rt j|d tdd |D }dd t|D }|D ]$}t|D ]\}}	|| |	 qPqDt }
dgt|  t|D ]8\}}	tt	|	}||
v rqt|	dk |< |
| q|D ]} fddt|D }|r|t| }nd }|}t
|}|D ]f}t *}|t || }|| }W d    n1 s@0    Y  t||| d	| d	| d
 qqd S )N)reasonc                 s  s   | ]}t |V  qd S r-   )len)r   specr   r   r   r/   >  r   z"test_cython_api.<locals>.<genexpr>c                 S  s   g | ]
}t  qS r   )set)r   r5   r   r   r   r   ?  r   z#test_cython_api.<locals>.<listcomp>Fr
   c                   s    g | ]\}} | rt | qS r   )CYTHON_SIGNATURE_MAP)r   jcodeZis_fused_coder   r   r   O  s    )err_msg)pytestZxfailmaxrange	enumerateaddrC   rA   r0   sortedr4   r   filterDeprecationWarningr   )r>   ZpyfuncZcyfuncZspecializationsZknownfailureZ
max_paramsvaluesr2   rE   vseenvv	signatureZcy_spec_funcr3   ptsupZpyvalZcyvalr   rG   r   test_cython_api7  s>    

(rY   ()  
__future__r   typingr   rJ   	itertoolsr   Znumpy.testingr   r   Zscipyr   Zscipy.specialr   Zbint_pointsZ
int_pointsZreal_pointsZcomplex_pointsrD   r.   ZagmZairyZ_airy_pywrapZairyeZ_airye_pywrapZbdtrZbdtrcZbdtriZbdtrikZbdtrinZbeiZbeipZberZberpZ
besselpolybetaZbetaincZ
betaincinvZbetalnZbinomZboxcoxZboxcox1pZbtdtrZbtdtriZbtdtriaZbtdtribZcbrtZchdtrZchdtrcZchdtriZchdtrivZchndtrZ	chndtridfZ	chndtrincZchndtrixZcosdgZcosm1ZcotdgZdawsnZellipeZ	ellipeincZellipjZ_ellipj_pywrapZ	ellipkincZellipkm1ZellipkZelliprcZelliprdZelliprfZelliprgZelliprjZentrerferfcZerfcxZerfiZerfinvZerfcinvZeval_chebycZeval_chebysZeval_chebytZeval_chebyuZeval_gegenbauerZeval_genlaguerreZeval_hermiteZeval_hermitenormZeval_jacobiZeval_laguerreZeval_legendreZeval_sh_chebytZeval_sh_chebyuZeval_sh_jacobiZeval_sh_legendreZexp1Zexp10Zexp2ZexpiZexpitexpm1ZexpnZexprelZfdtrZfdtrcZfdtriZfdtridfdZfresnelZ_fresnel_pywrapgammaZgammaincZ	gammainccZgammainccinvZgammaincinvZgammalnZgammasgnZgdtrZgdtrcZgdtriaZgdtribZgdtrixZhankel1Zhankel1eZhankel2Zhankel2eZhuberZhyp0f1Zhyp1f1Zhyp2f1ZhyperuZi0Zi0ei1Zi1eZ
inv_boxcoxZinv_boxcox1pZit2i0k0Z_it2i0k0_pywrapZit2j0y0Z_it2j0y0_pywrapZ
it2struve0ZitairyZ_itairy_pywrapZiti0k0Z_iti0k0_pywrapZitj0y0Z_itj0y0_pywrapZitmodstruve0Z	itstruve0ZivZiveZj0Zj1ZjvZjveZk0Zk0eZk1Zk1eZkeiZkeipZkelvinZ_kelvin_pywrapZkerZkerpZkl_divknZkolmogiZ
kolmogorovkvZkvelog1pZ	log_expitZlog_ndtrZ	ndtri_expZloggammaZlogitZlpmvZ	mathieu_aZ	mathieu_bZmathieu_cemZ_mathieu_cem_pywrapZmathieu_modcem1Z_mathieu_modcem1_pywrapZmathieu_modcem2Z_mathieu_modcem2_pywrapZmathieu_modsem1Z_mathieu_modsem1_pywrapZmathieu_modsem2Z_mathieu_modsem2_pywrapZmathieu_semZ_mathieu_sem_pywrapZmodfresnelmZ_modfresnelm_pywrapZmodfresnelpZ_modfresnelp_pywrapZ	modstruveZnbdtrZnbdtrcZnbdtriZnbdtrikZnbdtrinZncfdtrZncfdtriZ
ncfdtridfdZ
ncfdtridfnZ	ncfdtrincZnctdtrZ	nctdtridfZ	nctdtrincZnctdtritZndtrZndtriZnrdtrimnZnrdtrisdZobl_ang1Z_obl_ang1_pywrapZobl_ang1_cvZ_obl_ang1_cv_pywrapZobl_cvZobl_rad1Z_obl_rad1_pywrapZobl_rad1_cvZ_obl_rad1_cv_pywrapZobl_rad2Z_obl_rad2_pywrapZobl_rad2_cvZ_obl_rad2_cv_pywrapZpbdvZ_pbdv_pywrapZpbvvZ_pbvv_pywrapZpbwaZ_pbwa_pywrapZpdtrZpdtrcZpdtriZpdtrikZpochZpowm1Zpro_ang1Z_pro_ang1_pywrapZpro_ang1_cvZ_pro_ang1_cv_pywrapZpro_cvZpro_rad1Z_pro_rad1_pywrapZpro_rad1_cvZ_pro_rad1_cv_pywrapZpro_rad2Z_pro_rad2_pywrapZpro_rad2_cvZ_pro_rad2_cv_pywrapZpseudo_huberpsiZradianZrel_entrZrgammaroundZspherical_jnZspherical_ynZspherical_inZspherical_knZshichiZ_shichi_pywrapZsiciZ_sici_pywrapZsindgZsmirnovZsmirnoviZspenceZsph_harmZstdtrZstdtridfZstdtritZstruveZtandgZtklmbdaZvoigt_profileZwofzZwright_besselZwrightomegaZxlog1pyZxlogyZy0y1ZynZyvZyveZzetacZowens_tr)   __annotations__ZIDSr4   r=   markZparametrizerY   r   r   r   r   <module>   sD  








  x

