Ë
    âQ(h  ã            
       ó€  — d dl mZmZ d dlmZ d dlZd dlZd dlZd dlZd dl	m
Z d dl	mZ d dlmZ 	 d dlZdZd	Zd#d
„Zd„ Zd„ Zd„ Zej.                  ej0                  ej2                  ej4                  dœZd„ d„ d„ d„ d„ d„ d„ d„ d„ dœ	Zd„ d„ d„ d„ dœZeeej<                  dœZd„ Z d „ Z!d!„ Z"d"„ Z#y# e$ r dZY Œ„w xY w)$é    )Úassert_equalÚassert_)ÚraisesN)Ú_ccallback_c)Ú_test_ccallback)ÚLowLevelCallableTFç       @c                 óB   — | t         k(  rt        d«      ‚|€| dz   S | |z   S )Nz	bad valueé   )ÚERROR_VALUEÚ
ValueError)ÚaÚ	user_datas     ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/_lib/tests/test_ccallback.pyÚcallback_pythonr      s.   € ØŒKÒÜ˜Ó%Ð%àÐØ�1‰uˆà�9‰}Ðó    c                 óè   — t         st        j                  d«       t        j                  | t        j
                  «      }|j                  }t        j                  «       }|j	                  ||«      }|S )Núcffi not installed)	Ú	HAVE_CFFIÚpytestÚskipÚctypesÚcastÚc_void_pÚvalueÚcffiÚFFI)ÚbaseÚ	signatureÚvoidpÚaddressÚffiÚfuncs         r   Ú_get_cffi_funcr$      sS   € ÝÜ�‰Ð(Ô)ô �K‰K˜œfŸo™oÓ.€EØ�k‰k€Gô �(‰(‹*€CØ�8‰8�I˜wÓ'€DØ€Kr   c                  óš   — t        j                  d«      } t        j                  t        j                  | «      t         j                  «      S ©Nr	   )r   Úc_doubler   ÚpointerÚc_voidp)r   s    r   Ú_get_ctypes_datar*   -   s.   € Ü�O‰O˜CÓ €EÜ�;‰;”v—~‘~ eÓ,¬f¯n©nÓ=Ð=r   c                  ó„   — t         st        j                  d«       t        j                  «       } | j                  dd«      S )Nr   zdouble *r	   )r   r   r   r   r   Únew)r"   s    r   Ú_get_cffi_datar-   2   s.   € ÝÜ�‰Ð(Ô)Ü
�(‰(‹*€CØ�7‰7�:˜sÓ#Ð#r   )ÚsimpleÚnodataÚnonlocalÚcythonc                  ó   — t         S ©N)r   © r   r   ú<lambda>r5   B   s   € ”o€ r   c                  ó*   — t        j                  «       S r3   )r   Útest_get_plus1_capsuler4   r   r   r5   r5   C   s   € ”×=Ñ=Ó?€ r   c                  ó6   — t        j                  t        d«      S )NÚplus1_cython©r   Úfrom_cythonÚ_test_ccallback_cythonr4   r   r   r5   r5   D   s   € Ô&×2Ñ2Ô3IØ3AóC€ r   c                  ó"   — t         j                  S r3   )r<   Úplus1_ctypesr4   r   r   r5   r5   F   s   € Ô,×9Ñ9€ r   c                  ó6   — t        t        j                  d«      S )Nz!double (*)(double, int *, void *))r$   r<   r>   r4   r   r   r5   r5   G   s   € ”NÔ#9×#FÑ#FØ#FóH€ r   c                  ó*   — t        j                  «       S r3   )r   Útest_get_plus1b_capsuler4   r   r   r5   r5   I   s   € œ×@Ñ@ÓB€ r   c                  ó6   — t        j                  t        d«      S )NÚplus1b_cythonr:   r4   r   r   r5   r5   J   s   € Ô(×4Ñ4Ô5KØ5DóF€ r   c                  ó"   — t         j                  S r3   )r<   Úplus1b_ctypesr4   r   r   r5   r5   L   s   € Ô.×<Ñ<€ r   c                  ó6   — t        t        j                  d«      S )Nz)double (*)(double, double, int *, void *))r$   r<   rE   r4   r   r   r5   r5   M   s   € ”nÔ%;×%IÑ%IØ%PóR€ r   )	ÚpythonÚcapsuler1   r   r   Ú	capsule_bÚcython_bÚctypes_bÚcffi_bc                  ó*   — t        j                  «       S r3   )r   Útest_get_plus1bc_capsuler4   r   r   r5   r5   S   s   € œ/×BÑBÓD€ r   c                  ó6   — t        j                  t        d«      S )NÚplus1bc_cythonr:   r4   r   r   r5   r5   T   s   € Ô)×5Ñ5Ô6LØ6FóH€ r   c                  ó"   — t         j                  S r3   )r<   Úplus1bc_ctypesr4   r   r   r5   r5   V   s   € Ô/×>Ñ>€ r   c                  ó6   — t        t        j                  d«      S )Nz1double (*)(double, double, double, int *, void *))r$   r<   rR   r4   r   r   r5   r5   W   s   € ”~Ü×-Ñ-Ø;ó€ r   )Ú
capsule_bcÚ	cython_bcÚ	ctypes_bcÚcffi_bc)r   r   rH   c                  óê   — d„ } t        t        j                  «       «      D ]P  }t        t        j                  «       «      D ].  }t        t        j                  «       «      D ]  } | |||«       Œ Œ0 ŒR y )Nc                 ó  ‡— t         |    } t        ‰   «       Št        |   «       }‰t        u rˆfd„}nt	        ‰|«      }t	        ‰«      Št         | ‰d«      d«       t        t        | ‰t        «       t         | |d«      d«       y )Nc                 ó   •—  ‰| d«      S r&   r4   ©Úxr#   s    €r   Úfunc2z,test_callbacks.<locals>.check.<locals>.func2k   ó   ø€ Ù˜A˜s“|Ð#r   ç      ð?r	   g      @)	ÚCALLERSÚFUNCSÚ
USER_DATASr   r   r   Úassert_raisesr   r   )Úcallerr#   r   r]   s    `  r   Úcheckztest_callbacks.<locals>.checke   s   ø€ Ü˜‘ˆÜ�T‰{‹}ˆÜ˜yÑ)Ó+ˆ	à”?Ñ"õ$ô % T¨9Ó5ˆEÜ# DÓ)ˆDô 	‘V˜D #Ó&¨Ô,ô 	”j &¨$´Ô<ô 	‘V˜E 3Ó'¨Õ-r   )Úsortedr`   Úkeysra   rb   ©re   rd   r#   r   s       r   Útest_callbacksri   d   sd   € ò.ô* œŸ™›Ó(ò /ˆÜœ5Ÿ:™:›<Ó(ò 	/ˆDÜ#¤J§O¡OÓ$5Ó6ò /�	Ù�f˜d IÕ.ñ/ñ	/ñ/r   c                  óê   — d„ } t        t        j                  «       «      D ]P  }t        t        j                  «       «      D ].  }t        t        j                  «       «      D ]  } | |||«       Œ Œ0 ŒR y )Nc                 ó¨  ‡— t         |    } t        |   «       }t        ‰   «       Š‰t        u rˆfd„}nt	        ‰|«      }t	        ‰«      Št        t        | t	        ‰«      d«       t        t        | |d«       t	        ‰«      }	  | |d«       y # t        $ r;}t        |«      }t        |j                  |v |«       t        d|v |«       Y d }~y d }~ww xY w)Nc                 ó   •—  ‰| d«      S r&   r4   r[   s    €r   r]   z0test_bad_callbacks.<locals>.check.<locals>.func2‡   r^   r   r_   z&double (double, double, int *, void *))
r`   rb   Ú	BAD_FUNCSr   r   rc   r   Ústrr   r   )rd   r#   r   r]   ÚllfuncÚerrÚmsgs    `     r   re   z!test_bad_callbacks.<locals>.check�   sÏ   ø€ Ü˜‘ˆÜ˜yÑ)Ó+ˆ	Ü˜‰Ó ˆà”?Ñ"õ$ô % T¨9Ó5ˆEÜ# DÓ)ˆDô 	”j &Ô*:¸4Ó*@À#ÔFô 	”j &¨%°Ô5ô " $Ó'ˆð	JÙ�6˜3ÕøÜò 	JÜ�c“(ˆCÜ�F×$Ñ$¨Ð+¨SÔ1ÜÐ<ÀÐCÀS×IÑIûð	Jús   Â	B Â	CÂ1CÃC)rf   r`   rg   rm   rb   rh   s       r   Útest_bad_callbacksrr   €   sf   € òJô6 œŸ™›Ó(ò /ˆÜœ9Ÿ>™>Ó+Ó,ò 	/ˆDÜ#¤J§O¡OÓ$5Ó6ò /�	Ù�f˜d IÕ.ñ/ñ	/ñ/r   c                  ó"  — t         j                  } t        j                  «       }t        |d¬«      }t	        |j
                  d«       t        t        | |d«       t        |d¬«      }t	        |j
                  d«       t	         | |d«      d«       y )Nzbad signature)r   é   zdouble (double, int *, void *)é   )r   Útest_call_simpler7   r   r   r   rc   r   )rd   r#   Ú
llcallables      r   Útest_signature_overriderx   ¢   st   € Ü×-Ñ-€FÜ×1Ñ1Ó3€Dä! $°/ÔB€JÜ�×%Ñ% Ô7Ü”*˜f j°!Ô4ä! $Ð2RÔS€JÜ�×%Ñ%Ð'GÔHÜ‘˜
 AÓ&¨Õ*r   c                  ó\   ‡— ˆfd„Šˆfd„} t         j                  «       D ]
  } | |«       Œ y )Nc                 ó<   •‡— | dk  ry ‰ˆˆfd„| dz
  «      }d|z  S )Nr   r   c                 ó   •—  ‰| ‰«      S r3   r4   ©r\   Úcallbackrd   s    €€r   r5   z5test_threadsafety.<locals>.callback.<locals>.<lambda>´   s   ø€ ¡8¨A¨vÓ#6€ r   é   r4   )r   rd   Úresr}   s    ` €r   r}   z#test_threadsafety.<locals>.callback°   s'   ù€ Ø�Š6ØáÔ6¸¸A¹Ó>ˆCØ�S‘5ˆLr   c                 ó,  •‡ ‡‡— t         ‰    Š g ŠdŠˆˆ ˆˆfd„}t        d«      D �cg c]  }t        j                  |¬«      ‘Œ }}|D ]  }|j	                  «        Œ |D ]  }|j                  «        Œ t        ‰d‰z  gt        |«      z  «       y c c}w )Né
   c                  ól   •— t        j                  d«        ‰ˆˆfd„‰«      } ‰j                  | «       y )Ng{®Gáz„?c                 ó   •—  ‰| ‰«      S r3   r4   r|   s    €€r   r5   z?test_threadsafety.<locals>.check.<locals>.run.<locals>.<lambda>À   s   ø€ ¡¨!¨VÓ!4€ r   )ÚtimeÚsleepÚappend)Úrr}   rd   ÚcountÚresultss    €€€€r   Úrunz-test_threadsafety.<locals>.check.<locals>.run¾   s(   ø€ Ü�J‰J�tÔÙÔ4°eÓ<ˆAØ�N‰N˜1Õr   é   )Útargetr	   )r`   ÚrangeÚ	threadingÚThreadÚstartÚjoinr   Úlen)rd   rŠ   ÚjÚthreadsÚthreadrˆ   r‰   r}   s   `    @@€r   re   z test_threadsafety.<locals>.check·   s�   û€ Ü˜‘ˆàˆàˆ÷	ô
 :?¸r»ÖC°A”9×#Ñ#¨3Ö/ÐCˆÐCØò 	ˆFØ�L‰L�Nð	àò 	ˆFØ�K‰K�Mð	ô 	�W˜s E™z˜l¬3¨w«<Ñ7Õ8ùò Ds   §B)r`   rg   )re   rd   r}   s     @r   Útest_threadsafetyr–   ¯   s+   ø€ ôô9ô( —,‘,“.ò ˆÙˆf�ñr   r3   )$Únumpy.testingr   r   r   r   rc   r„   r   rŽ   Ú
scipy._libr   r<   r   Úscipy._lib._ccallbackr   r   r   ÚImportErrorr   r   r$   r*   r-   rv   Útest_call_nodataÚtest_call_nonlocalÚtest_call_cythonr`   ra   rm   Útest_get_data_capsulerb   ri   rr   rx   r–   r4   r   r   ú<module>rŸ      s  ðß /Ý *ã Û Û Û Ý =Ý &Ý 2ðÛØ€Ið
 €óòò>ò
$ð ×.Ñ.Ø×.Ñ.Ø×2Ñ2Ø$×5Ñ5ñ	€ñ &Ù?ñCá9ñHáBñFá<ñRñ	€ñ$ EñHá>ññ	€	ð ØØ×4Ñ4ñ€
ò/ò8/òD
+óøðA ò Ø‚Iðús   ²B3 Â3B=Â<B=