Ë
    ¡ehÊ  ã                   ó   — d dl Z d dlZd dlZd dlZd dl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  G d„ dej                  «      Z G d„ de«      Z G d	„ d
ej                  «      Z G d„ dej                  «      Z G d„ dej                  «      Zej(                  j*                  ej(                  j-                   ej.                  «       j1                  «       dk(  dd¬«       G d„ dej                  «      «       «       Zy)é    N)ÚIS_PYPYé   )Úutilc                   óä  — e Zd Z ej                  dddd«      gZej                  j                  ddj                  d«      «      ej                  j                  d„ «       «       Zej                  j                  ed	¬
«      d„ «       Zd„ Zej                  j!                  ej$                  dk(  d¬
«      d„ «       Zej                  j!                  ej$                  dk(  d¬
«      d„ «       Zd„ Zd„ Zy)ÚTestF77CallbackÚtestsÚsrcÚcallbackzfoo.fÚnamezt,t2ú,c                 ó&   — | j                  |«       y ©N)Úcheck_function)Úselfr   s     ú\/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/numpy/f2py/tests/test_callback.pyÚtest_allzTestF77Callback.test_all   s   € ð 	×Ñ˜DÕ!ó    z,PyPy cannot modify tp_doc after PyType_Ready)Úreasonc                 óx   — t        j                  d«      }| j                  j                  j                  |k(  sJ ‚y )NaË          a = t(fun,[fun_extra_args])

        Wrapper for ``t``.

        Parameters
        ----------
        fun : call-back function

        Other Parameters
        ----------------
        fun_extra_args : input tuple, optional
            Default: ()

        Returns
        -------
        a : int

        Notes
        -----
        Call-back functions::

            def fun(): return a
            Return objects:
                a : int
        )ÚtextwrapÚdedentÚmoduleÚtÚ__doc__)r   Úexpecteds     r   Útest_docstringzTestF77Callback.test_docstring   s5   € ô —?‘?ð $ó ˆð4 �{‰{�}‰}×$Ñ$¨Ò0Ð0Ñ0r   c                 ó¶  — t        | j                  |«      } |d„ «      }|dk(  sJ ‚ |d„ d¬«      }|dk(  sJ ‚ |d„ d¬«      }|dk(  sJ ‚ |d	„ d
¬«      }|dk(  sJ ‚ |d„ t        j                  f¬«      }|dk(  sJ ‚ |t        j                  t        j                  f¬«      }|dk(  sJ ‚ || j                  j
                  d¬«      }|dk(  sJ ‚ || j                  j                  «      }|dk(  sJ ‚ || j                  j                  j                  «      }|dk(  sJ ‚ G d„ d«      } |«       } ||«      }|dk(  sJ ‚ ||j                  «      }|dk(  sJ ‚y )Nc                   ó   — y)Né   © r    r   r   ú<lambda>z0TestF77Callback.check_function.<locals>.<lambda>8   ó   � r   r   c                  ó   — y©Né   r    ©Úas    r   r!   z0TestF77Callback.check_function.<locals>.<lambda>:   r"   r   )é   )Úfun_extra_argsr%   c                 ó   — | S r   r    r&   s    r   r!   z0TestF77Callback.check_function.<locals>.<lambda><   s   € ˜€ r   r(   c                 ó   — d| z   S r$   r    r&   s    r   r!   z0TestF77Callback.check_function.<locals>.<lambda>>   s
   € ˜˜A™€ r   )é   é   c                 ó,   — t        j                  | «      S r   )ÚmathÚdegreesr&   s    r   r!   z0TestF77Callback.check_function.<locals>.<lambda>@   s   € œŸ™ Q›€ r   é´   é   é   c                   ó   — e Zd Zd„ Zd„ Zy)ú)TestF77Callback.check_function.<locals>.Ac                  ó   — y)Nr,   r    ©r   s    r   Ú__call__z2TestF77Callback.check_function.<locals>.A.__call__M   ó   € Ør   c                  ó   — y)Né	   r    r7   s    r   Úmthz-TestF77Callback.check_function.<locals>.A.mthP   r9   r   N)Ú__name__Ú
__module__Ú__qualname__r8   r<   r    r   r   ÚAr5   L   s   „ òór   r@   r,   r;   )	Úgetattrr   r/   Úpir0   ÚfuncÚfunc0Ú	_cpointerr<   )r   r   r   Úrr@   r'   s         r   r   zTestF77Callback.check_function6   sN  € Ü�D—K‘K Ó&ˆÙ‰i‹LˆØ�AŠvˆˆvÙ‰k¨%Ô0ˆØ�AŠvˆˆvÙ‰k¨%Ô0ˆØ�AŠvˆˆvÙ‰o¨eÔ4ˆØ�BŠwˆˆwÙÑ'¼¿¹¸ÔDˆØ�CŠxˆˆxÙŒd�l‰l¬D¯G©G¨;Ô7ˆØ�CŠxˆˆxáˆd�k‰k×Ñ¨uÔ5ˆØ�BŠwˆˆwÙˆd�k‰k×ÑÓ ˆØ�BŠwˆˆwÙˆd�k‰k×Ñ×)Ñ)Ó*ˆØ�BŠwˆˆw÷	ñ 	ñ ‹CˆÙˆa‹DˆØ�AŠvˆˆvÙˆa�e‰e‹HˆØ�AŠvˆ‰vr   Úwin32z)Fails with MinGW64 Gfortran (Issue #9673)c                 óT   — d„ }| j                   j                  } ||«      }|dk(  sJ ‚y )Nc                 ó   — | dk(  ryy)NrF   r   r   r    )Úcodes    r   r
   z6TestF77Callback.test_string_callback.<locals>.callback\   s   € Ø�sŠ{Øàr   r   )r   Ústring_callback)r   r
   ÚfrF   s       r   Útest_string_callbackz$TestF77Callback.test_string_callbackY   s,   € ò	ð �K‰K×'Ñ'ˆÙˆh‹KˆØ�AŠvˆ‰vr   c                 ó  — t        j                  dd«      }t        j                  dd«      }t        j                  dgd«      }d„ }| j                  j                  }|||fD ]  } ||||j
                  «      }|dk(  rŒJ ‚ y )N)r   ÚS8)r   é   ÚcÚ c                 óx   — | j                   |fk7  ry| j                  dk7  ryt        j                  | dk(  «      syy)Nr   rO   é   r   é   r   )ÚshapeÚdtypeÚnpÚall)ÚcuÚlencus     r   r
   z<TestF77Callback.test_string_callback_array.<locals>.callbackn   s8   € Ø�x‰x˜E˜8Ò#ØØ�x‰x˜4ÒØÜ—6‘6˜" ™)Ô$ØØr   r   )rX   ÚzerosÚarrayr   Ústring_callback_arrayÚsize)r   Úcu1Úcu2Úcu3r
   rL   rZ   Úress           r   Útest_string_callback_arrayz*TestF77Callback.test_string_callback_arrayf   s~   € ô �h‰h�u˜dÓ#ˆÜ�h‰h�v˜sÓ#ˆÜ�h‰h˜�t˜TÓ"ˆò	ð �K‰K×-Ñ-ˆØ˜˜S�/ò 	ˆBÙ�H˜b "§'¡'Ó*ˆCØ˜!“8ˆO�8ñ	r   c           	      ó8  ‡ ‡‡— g Šˆ fd„Šˆˆˆ fd„}dD ��cg c]*  }t        d«      D ]  }t        j                  ||f¬«      ‘Œ Œ, }}}|D ]  }|j                  «        Œ |D ]  }|j	                  «        Œ dj	                  ‰«      Š‰rt        ‰«      ‚y c c}}w )Nc                  óv   •— t        j                  d«       ‰j                  j                  d„ «      } | dk(  sJ ‚y)Ngü©ñÒMbP?c                   ó   — y©Né{   r    r    r   r   r!   z?TestF77Callback.test_threadsafety.<locals>.cb.<locals>.<lambda>‡   r"   r   ri   é*   )ÚtimeÚsleepr   r   )rF   r   s    €r   Úcbz-TestF77Callback.test_threadsafety.<locals>.cb�   s3   ø€ ô �J‰J�tÔð —‘—‘™kÓ*ˆAØ˜’8ˆO�8àr   c                 óò   •— 	 t        d«      D ]5  }‰j                  j                  ‰«      }|dk(  sJ ‚‰j                  | «       Œ7 y # t        $ r& ‰j                  t        j                  «       «       Y y w xY w)Né2   rj   )Úranger   r   r   Ú	ExceptionÚappendÚ	tracebackÚ
format_exc)r   ÚjrF   rm   Úerrorsr   s      €€€r   Úrunnerz1TestF77Callback.test_threadsafety.<locals>.runnerŒ   sl   ø€ ð6Ü˜r›ò .�AØŸ™Ÿ™ bÓ)�AØ š7�N˜7Ø×'Ñ'¨Õ-ñ.øô ò 6Ø—‘œi×2Ñ2Ó4Ö5ð6ús   ƒAA Á,A6Á5A6)r   Út2é   )ÚtargetÚargsz

)rp   Ú	threadingÚThreadÚstartÚjoinÚAssertionError)r   rw   ÚargÚnÚthreadsr   rm   rv   s   `     @@r   Útest_threadsafetyz!TestF77Callback.test_threadsafety|   s´   ú€ ð ˆô		ö	6ð #÷
à¬E°"«Iò
à'(ô ×Ñ F°#°Ö9ð
Ø9ð
ˆñ 
ð
 ò 	ˆAØ�G‰G�Ið	ð ò 	ˆAØ�F‰F�Hð	ð —‘˜VÓ$ˆÙÜ  Ó(Ð(ð ùó
s   —/Bc                 ór  — 	 | j                   j                  d«       	 | j                   j                  d«       d„ | j                   _        | j                   j                  d«      }|dk(  sJ ‚d„ | j                   _        | j                   j                  d«      }|dk(  sJ ‚| j                   `	 | j                   j                  d«       d
d„| j                   _        | j                   j                  d«      }|d	k(  sJ ‚| j                   j                  d«      }|dk(  sJ ‚y # t        $ r'}t        |«      j	                  d«      sJ ‚Y d }~�Œ/d }~ww xY w# t        $ r'}t        |«      j	                  d«      sJ ‚Y d }~�ŒFd }~ww xY w# t        $ r&}t        |«      j	                  d«      sJ ‚Y d }~Œèd }~ww xY w)NrT   zCallback global_f not definedz!cb: Callback global_f not definedc                 ó   — | dz   S )Nr   r    ©Úxs    r   r!   z6TestF77Callback.test_hidden_callback.<locals>.<lambda>¯   ó
   € ¨¨Q©€ r   rU   c                 ó   — | dz   S )NrT   r    r‡   s    r   r!   z6TestF77Callback.test_hidden_callback.<locals>.<lambda>³   r‰   r   r   c                 ó   — | dz   S )NrU   r    r‡   s    r   r!   z6TestF77Callback.test_hidden_callback.<locals>.<lambda>½   s
   € ¨1¨q©5€ r   r%   )r   )r   Úhidden_callbackrq   ÚstrÚ
startswithÚhidden_callback2Úglobal_f)r   ÚmsgrF   s      r   Útest_hidden_callbackz$TestF77Callback.test_hidden_callback¤   s  € ð	HØ�K‰K×'Ñ'¨Ô*ð	LØ�K‰K×(Ñ(¨Ô+ñ  /ˆ�‰ÔØ�K‰K×'Ñ'¨Ó*ˆØ�AŠvˆˆvá.ˆ�‰ÔØ�K‰K×'Ñ'¨Ó*ˆØ�AŠvˆˆvà�K‰KÐ ð	HØ�K‰K×'Ñ'¨Ô*ò  1ˆ�‰ÔØ�K‰K×'Ñ'¨Ó*ˆØ�AŠvˆˆvð �K‰K×(Ñ(¨Ó+ˆØ�AŠvˆ‰vøô9 ò 	HÜ�s“8×&Ñ&Ð'FÔGÐGÖGûð	Hûô
 ò 	LÜ�s“8×&Ñ&Ð'JÔKÐKÖKûð	Lûô ò 	HÜ�s“8×&Ñ&Ð'FÔGÐGÕGûð	HúsF   ‚D! žE Â.F Ä!	EÄ*EÅEÅ	FÅE?Å?FÆ	F6ÆF1Æ1F6N)r=   r>   r?   r   ÚgetpathÚsourcesÚpytestÚmarkÚparametrizeÚsplitÚslowr   Úxfailr   r   r   ÚskipifÚsysÚplatformrM   rd   r„   r’   r    r   r   r   r      s	  „ Øˆt�|‰|˜G U¨J¸Ó@ÐA€Gà‡[�[×Ñ˜V V§\¡\°#Ó%6Ó7Ø‡[�[×Ññ"ó ó 8ð"ð ‡[�[×Ñ�wØLð ó Nñ1óNð1ò:!ðF ‡[�[×Ñ˜Ÿ™¨Ñ/ØJð ó Lñ	óLð	ð ‡[�[×Ñ˜Ÿ™¨Ñ/ØJð ó LñóLðò(&)óPr   r   c                   ó   — e Zd ZdZdgZy)ÚTestF77CallbackPythonTLSz[
    Callback tests using Python thread-local storage instead of
    compiler-provided
    z-DF2PY_USE_PYTHON_TLSN)r=   r>   r?   r   Úoptionsr    r   r   rŸ   rŸ   Æ   s   „ ñð
 'Ð'�Gr   rŸ   c                   óp   — e Zd Z ej                  dddd«      gZej                  j                  d„ «       Z	y)ÚTestF90Callbackr   r	   r
   zgh17797.f90c                 óž   — d„ }t        j                  g d¢t         j                  ¬«      }| j                  j	                  ||«      }|dk(  sJ ‚y )Nc                 ó   — | dz   S rh   r    r‡   s    r   Úincrz*TestF90Callback.test_gh17797.<locals>.incrÔ   s   € Ø�s‘7ˆNr   )r   rT   rU   )rW   é�   )rX   r]   Úint64r   Úgh17797)r   r¥   ÚyrF   s       r   Útest_gh17797zTestF90Callback.test_gh17797Ò   sA   € ò	ô �H‰H’Y¤b§h¡hÔ/ˆØ�K‰K×Ñ  aÓ(ˆØ�OÒ#Ð#Ñ#r   N)
r=   r>   r?   r   r“   r”   r•   r–   r™   rª   r    r   r   r¢   r¢   Ï   s7   „ Øˆt�|‰|˜G U¨J¸ÓFÐG€Gà‡[�[×Ññ$ó ñ$r   r¢   c                   ót   — e Zd ZdZ ej
                  dddd«      gZej                  j                  d„ «       Z
y)ÚTestGH18335zäThe reproduction of the reported issue requires specific input that
    extensions may break the issue conditions, so the reproducer is
    implemented as a separate test class. Do not extend this test with
    other tests!
    r   r	   r
   zgh18335.f90c                 óN   — d„ }| j                   j                  |«      }|dk(  sJ ‚y )Nc                 ó   — | dxx   dz  cc<   y )Nr   r   r    r‡   s    r   Úfooz%TestGH18335.test_gh18335.<locals>.fooæ   s   € Øˆa‹D�A‰IŒDr   é|   )r   Úgh18335)r   r¯   rF   s      r   Útest_gh18335zTestGH18335.test_gh18335ä   s)   € ò	ð �K‰K×Ñ Ó$ˆØ�GŠ|Ð‰|r   N)r=   r>   r?   r   r   r“   r”   r•   r–   r™   r²   r    r   r   r¬   r¬   Ü   s>   „ ñð
 ˆt�|‰|˜G U¨J¸ÓFÐG€Gà‡[�[×Ññó ñr   r¬   c                   ój   — e Zd Z ej                  dddd«       ej                  dddd«      gZdZd„ Zy)	ÚTestGH25211r   r	   r
   z	gh25211.fzgh25211.pyfÚ	callback2c                 óN   — d„ }| j                   j                  |«      }|dk(  sJ ‚y )Nc                 ó   — | | z  S r   r    r‡   s    r   Úbarz%TestGH25211.test_gh25211.<locals>.baró   s   € Ø�Q‘3ˆJr   én   )r   r¯   )r   r¸   rc   s      r   Útest_gh25211zTestGH25211.test_gh25211ò   s'   € ò	ð �k‰k�o‰o˜cÓ"ˆØ�cŠzÐ‰zr   N)r=   r>   r?   r   r“   r”   Úmodule_namerº   r    r   r   r´   r´   í   s<   „ Øˆt�|‰|˜G U¨J¸ÓDØˆt�|‰|˜G U¨J¸ÓFðH€Gà€Kór   r´   ÚdarwinFz*Callback aborts cause CI failures on macOS)Ú	conditionÚrunr   c                   óD   — e Zd Z ej                  dddd«      gZdgZd„ Zy)ÚTestCBFortranCallstatementr   r	   r
   zgh26681.f90z--lowerc                 ó  — t        j                  t        d¬«      5 }| j                  j                  j
                  | j                  _        | j                  j                  j                  d«       d d d «       y # 1 sw Y   y xY w)NÚhelpme)Úmatch)r•   ÚraisesÚ
ValueErrorr   ÚutilsÚmy_abortÚ
mypy_abortÚdo_something)r   Úexcs     r   Útest_callstatement_fortranz5TestCBFortranCallstatement.test_callstatement_fortran  s[   € Ü�]‰]œ:¨XÔ6ð 	5¸#Ø%)§[¡[×%6Ñ%6×%?Ñ%?ˆD�K‰KÔ"Ø�K‰K×Ñ×*Ñ*¨8Ô4÷	5÷ 	5ñ 	5ús   œAA:Á:BN)r=   r>   r?   r   r“   r”   r    rË   r    r   r   rÀ   rÀ   ú   s)   „ ð
 ˆt�|‰|˜G U¨J¸ÓFÐG€GØˆk€Gó5r   rÀ   )r/   r   rœ   r•   r|   rs   rk   r�   ÚnumpyrX   Únumpy.testingr   rR   r   ÚF2PyTestr   rŸ   r¢   r¬   r´   r–   r™   rš   ÚsystemÚlowerrÀ   r    r   r   ú<module>rÑ      sÛ   ðÛ Û Û 
Û Û Û Û Û ã Ý !Ý ôt�d—m‘mô tôn(˜ô (ô
$�d—m‘mô 
$ô�$—-‘-ô ô"
�$—-‘-ô 
ð ‡�×ÑØ‡�×Ñ˜o˜hŸo™oÓ/×5Ñ5Ó7¸8ÑCØØFð ó Hô5 §¡ó 5óHó ñ5r   