U
    HvfI                     @  sz  U d dl mZ d dlmZmZmZ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d
dddgZddddg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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j@e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jid#dfejjejjd#dfejkejkd#dfejle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d0dfejejd1d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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jd0dfejejd$dfejejd$dfejejd0dfejejd0d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jd0dfejejd!dfejejd-dfejejd!dfejejd$dfejejd3d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jd4dfejejd4dfejejd4dfejejd#dfejejd#dfejejd5dfejejd5dfejejd5dfejejd5dfejejd5d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jd5dfejejd6dfejejd#dfejejd5d7fejejd6d7fejejd5d7fejejd6d7fejejd dfejejd dfejejd dfejejd8dfejejd8dfejejd.dfejejd dfejejd dfejejd dfejejd5dfejejd6dfejejd#dfejejd5d7fejejd6d7fejejd5d7fejejd6d7fejejd dfejejd!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d9dfejejd9dfejejd9dfejejd9d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d3dfejejd#d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 d0dfej!ej!d0dfej"ej"d$dfej#ej#d dfgZ$d;e%d<< d=d e$D Z&d>d? Z'd@dA Z(ej)j*dBe$e&dCdDdE Z+dS )F    )annotations)ListTupleCallableOptionalN)product)assert_allclosesuppress_warnings)special)cython_specialTFi   
   g      $g      g      ?g      $@c                 C  s   g | ]}t | qS  )complex).0tupr   r   K/tmp/pip-unpacked-wheel-96ln3f52/scipy/special/tests/test_cython_special.py
<listcomp>   s     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, ...], Optional[str]]]PARAMSc                 C  s   g | ]}|d  j qS )r   )__name__r   xr   r   r   r   "  s     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>&  s     z(_generate_test_points.<locals>.<genexpr>)tuplelistr   )	typecodesZaxesptsr   r   r   _generate_test_points%  s    r6   c                  C  sZ   t tD ]L} tt| }t|r| dstD ]\}}}}||kr, qq,t|  dqd S )N_z missing from tests!)dirr   getattrcallable
startswithr+   RuntimeError)namefuncr7   Zcyfunr   r   r   test_cython_api_completeness+  s    
r?   param)idsc                   sV  | \}}}}|rt j|d tdd |D }dd t|D }|D ]$}t|D ]\}}	|| |	 qPqDt }
dgt|  t|D ]8\}}	tt	|	}||
krqt|	dk |< |
| q|D ]} fddt|D }|r|t| }nd }|}t
|}|D ]J}t  }|t || }|| }W 5 Q R X t||d	|||d
 qqd S )N)reasonc                 s  s   | ]}t |V  qd S r/   )len)r   specr   r   r   r1   >  s     z"test_cython_api.<locals>.<genexpr>c                 S  s   g | ]
}t  qS r   )set)r   r7   r   r   r   r   ?  s     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   z{} {} {})err_msg)pytestZxfailmaxrange	enumerateaddrE   rC   r2   sortedr6   r	   filterDeprecationWarningr   format)r@   ZpyfuncZcyfuncZspecializationsZknownfailureZ
max_paramsvaluesr4   rG   vseenvv	signatureZcy_spec_funcr5   ptsupZpyvalZcyvalr   rI   r   test_cython_api7  s>    

r[   (,  
__future__r   typingr   r   r   r   rK   	itertoolsr   Znumpy.testingr   r	   Zscipyr
   Zscipy.specialr   Zbint_pointsZ
int_pointsZreal_pointsZcomplex_pointsrF   r0   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IDSr6   r?   markZparametrizer[   r   r   r   r   <module>   sF   








  x

