Ë
    0Ò^j˜  ã            
       óX  — 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Zd!d„Zd	„ Zd
„ Zd„ Zej(                  ej*                  ej,                  ej.                  dœZd„ d„ d„ d„ d„ d„ d„ d„ d„ dœ	Zd„ d„ d„ d„ dœZeeej6                  dœZd„ Zd„ Zd„ Zd „ Z y)"é    )Úassert_equalÚassert_)ÚraisesN)Ú_ccallback_c)Ú_test_ccallback)ÚLowLevelCallableç       @c                 óB   — | t         k(  rt        d«      ‚|€| dz   S | |z   S )Nz	bad valueé   )ÚERROR_VALUEÚ
ValueError)ÚaÚ	user_datas     új/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/scipy/_lib/tests/test_ccallback.pyÚcallback_pythonr      s.   € ØŒKÒÜ˜Ó%Ð%àÐØ�1‰uˆà�9‰}Ðó    c                 óÔ   — t        j                  d«      }t        j                  | t        j                  «      }|j
                  }|j                  «       }|j                  ||«      }|S )NÚcffi)ÚpytestÚimportorskipÚctypesÚcastÚc_void_pÚvalueÚFFI)ÚbaseÚ	signaturer   ÚvoidpÚaddressÚffiÚfuncs          r   Ú_get_cffi_funcr"      sS   € Ü×Ñ˜vÓ&€Dô �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                  óp   — t        j                  d«      } | j                  «       }|j                  dd«      S )Nr   zdouble *r	   )r   r   r   Únew)r   r    s     r   Ú_get_cffi_datar+   +   s.   € Ü×Ñ˜vÓ&€DØ
�(‰(‹*€CØ�7‰7�:˜sÓ#Ð#r   )ÚsimpleÚnodataÚnonlocalÚcythonc                  ó   — t         S ©N)r   © r   r   ú<lambda>r3   :   s   € ”o€ r   c                  ó*   — t        j                  «       S r1   )r   Útest_get_plus1_capsuler2   r   r   r3   r3   ;   s   € ”×=Ñ=Ó?€ r   c                  ó6   — t        j                  t        d«      S )NÚplus1_cython©r   Úfrom_cythonÚ_test_ccallback_cythonr2   r   r   r3   r3   <   s   € Ô&×2Ñ2Ô3IØ3AóC€ r   c                  ó"   — t         j                  S r1   )r:   Úplus1_ctypesr2   r   r   r3   r3   >   s   € Ô,×9Ñ9€ r   c                  ó6   — t        t        j                  d«      S )Nz!double (*)(double, int *, void *))r"   r:   r<   r2   r   r   r3   r3   ?   s   € ”NÔ#9×#FÑ#FØ#FóH€ r   c                  ó*   — t        j                  «       S r1   )r   Útest_get_plus1b_capsuler2   r   r   r3   r3   A   s   € œ×@Ñ@ÓB€ r   c                  ó6   — t        j                  t        d«      S )NÚplus1b_cythonr8   r2   r   r   r3   r3   B   s   € Ô(×4Ñ4Ô5KØ5DóF€ r   c                  ó"   — t         j                  S r1   )r:   Úplus1b_ctypesr2   r   r   r3   r3   D   s   € Ô.×<Ñ<€ r   c                  ó6   — t        t        j                  d«      S )Nz)double (*)(double, double, int *, void *))r"   r:   rC   r2   r   r   r3   r3   E   s   € ”nÔ%;×%IÑ%IØ%PóR€ r   )	ÚpythonÚcapsuler/   r   r   Ú	capsule_bÚcython_bÚctypes_bÚcffi_bc                  ó*   — t        j                  «       S r1   )r   Útest_get_plus1bc_capsuler2   r   r   r3   r3   K   s   € œ/×BÑBÓD€ r   c                  ó6   — t        j                  t        d«      S )NÚplus1bc_cythonr8   r2   r   r   r3   r3   L   s   € Ô)×5Ñ5Ô6LØ6FóH€ r   c                  ó"   — t         j                  S r1   )r:   Úplus1bc_ctypesr2   r   r   r3   r3   N   s   € Ô/×>Ñ>€ r   c                  ó6   — t        t        j                  d«      S )Nz1double (*)(double, double, double, int *, void *))r"   r:   rP   r2   r   r   r3   r3   O   s   € ”~Ü×-Ñ-Ø;ó€ r   )Ú
capsule_bcÚ	cython_bcÚ	ctypes_bcÚcffi_bc)r   r   rF   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$   r2   ©Úxr!   s    €r   Úfunc2z,test_callbacks.<locals>.check.<locals>.func2c   ó   ø€ Ù˜A˜s“|Ð#r   ç      ð?r	   g      @)	ÚCALLERSÚFUNCSÚ
USER_DATASr   r   r   Úassert_raisesr   r   )Úcallerr!   r   r[   s    `  r   Úcheckztest_callbacks.<locals>.check]   s   ø€ Ü˜‘ˆÜ�T‰{‹}ˆÜ˜yÑ)Ó+ˆ	à”?Ñ"õ$ô % T¨9Ó5ˆEÜ# DÓ)ˆDô 	‘V˜D #Ó&¨Ô,ô 	”j &¨$´Ô<ô 	‘V˜E 3Ó'¨Õ-r   )Úsortedr^   Úkeysr_   r`   ©rc   rb   r!   r   s       r   Útest_callbacksrg   \   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$   r2   rY   s    €r   r[   z0test_bad_callbacks.<locals>.check.<locals>.func2   r\   r   r]   z&double (double, double, int *, void *))
r^   r`   Ú	BAD_FUNCSr   r   ra   r   Ústrr   r   )rb   r!   r   r[   ÚllfuncÚerrÚmsgs    `     r   rc   z!test_bad_callbacks.<locals>.checky   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)rd   r^   re   rk   r`   rf   s       r   Útest_bad_callbacksrp   x   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_simpler5   r   r   r   ra   r   )rb   r!   Ú
llcallables      r   Útest_signature_overriderv   š   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 r1   r2   ©rZ   Úcallbackrb   s    €€r   r3   z5test_threadsafety.<locals>.callback.<locals>.<lambda>¬   s   ø€ ¡8¨A¨vÓ#6€ r   é   r2   )r   rb   Ú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 r1   r2   rz   s    €€r   r3   z?test_threadsafety.<locals>.check.<locals>.run.<locals>.<lambda>¸   s   ø€ ¡¨!¨VÓ!4€ r   )ÚtimeÚsleepÚappend)Úrr{   rb   Ú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)rb   rˆ   ÚjÚthreadsÚthreadr†   r‡   r{   s   `    @@€r   rc   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^   re   )rc   rb   r{   s     @r   Útest_threadsafetyr”   §   s+   ø€ ôô9ô( —,‘,“.ò ˆÙˆf�ñr   r1   )!Únumpy.testingr   r   r   r   ra   r‚   r   rŒ   Ú
scipy._libr   r:   r   Úscipy._lib._ccallbackr   r   r   r"   r(   r+   rt   Útest_call_nodataÚtest_call_nonlocalÚtest_call_cythonr^   r_   rk   Útest_get_data_capsuler`   rg   rp   rv   r”   r2   r   r   ú<module>rœ      sà   ðß /Ý *ã Û Û Û Ý =Ý &Ý 2ð €óò
ò>ò
$ð ×.Ñ.Ø×.Ñ.Ø×2Ñ2Ø$×5Ñ5ñ	€ñ &Ù?ñCá9ñHáBñFá<ñRñ	€ñ$ EñHá>ññ	€	ð ØØ×4Ñ4ñ€
ò/ò8/òD
+ór   