Ë
    Bü´jC  ã                   óî  — 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 ej                  j                   G d„ dej                  «      «       Zej                  j                   G d„ de«      «       Zej                  j                   G d„ d	ej                  «      «       Zej                  j                   G d
„ dej                  «      «       Zej                  j                   G d„ dej                  «      «       Zej                  j                  ej                  j)                   ej*                  «       j-                  «       dk(  dd¬«       G d„ dej                  «      «       «       Zy)é    Né   )Úutilc                   óX  — e Zd Z ej                  dddd«      gZej                  j                  dddg«      d„ «       Z	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ÚnameÚtÚt2c                 ó&   — | j                  |«       y ©N)Úcheck_function)Úselfr
   s     ú\/root/workspace/ytshorts/venv/lib/python3.12/site-packages/numpy/f2py/tests/test_callback.pyÚtest_allzTestF77Callback.test_all   s   € à×Ñ˜DÕ!ó    c                 ó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Úmoduler   Ú__doc__)r   Úexpecteds     r   Útest_docstringzTestF77Callback.test_docstring   s3   € Ü—?‘?ð $ó ˆð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 ‚ |t        j                  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>7   ó   � r   r   c                  ó   — y©Né   r   ©Úas    r   r   z0TestF77Callback.check_function.<locals>.<lambda>9   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                   ó   — 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__L   ó   € Ør   c                  ó   — y)Né	   r   r2   s    r   Úmthz-TestF77Callback.check_function.<locals>.A.mthO   r4   r   N)Ú__name__Ú
__module__Ú__qualname__r3   r7   r   r   r   ÚAr0   K   s   „ òór   r;   r*   r6   )	Úgetattrr   ÚmathÚdegreesÚpiÚfuncÚfunc0Ú	_cpointerr7   )r   r
   r   Úrr;   r%   s         r   r   zTestF77Callback.check_function5   sQ  € Ü�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�l‰l¬D¯G©G¨;Ô7ˆØ�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))Úreasonc                 óT   — d„ }| j                   j                  } ||«      }|dk(  sJ ‚y )Nc                 ó   — | dk(  ryy)NrC   r   r   r   )Úcodes    r   r	   z6TestF77Callback.test_string_callback.<locals>.callback[   s   € Ø�sŠ{Øàr   r   )r   Ústring_callback)r   r	   ÚfrC   s       r   Útest_string_callbackz$TestF77Callback.test_string_callbackX   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   rM   é   r   é   r   )ÚshapeÚdtypeÚnpÚall)ÚcuÚlencus     r   r	   z<TestF77Callback.test_string_callback_array.<locals>.callbackm   s8   € Ø�x‰x˜E˜8Ò#ØØ�x‰x˜4ÒØÜ—6‘6˜" ™)Ô$ØØr   r   )rV   ÚzerosÚarrayr   Ústring_callback_arrayÚsize)r   Úcu1Úcu2Úcu3r	   rJ   rX   Úress           r   Útest_string_callback_arrayz*TestF77Callback.test_string_callback_arraye   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   rg   é*   )ÚtimeÚsleepr   r   )rC   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   rh   )Úranger   r   r   Ú	ExceptionÚappendÚ	tracebackÚ
format_exc)r
   ÚjrC   rk   Ú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   r   é   )ÚtargetÚargsz

)rn   Ú	threadingÚThreadÚstartÚjoinÚAssertionError)r   ru   ÚargÚnÚthreadsr   rk   rt   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)NrR   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   rS   c                 ó   — | dz   S )NrR   r   r„   s    r   r   z6TestF77Callback.test_hidden_callback.<locals>.<lambda>²   r†   r   r   c                 ó   — | dz   S )NrS   r   r„   s    r   r   z6TestF77Callback.test_hidden_callback.<locals>.<lambda>¼   s
   € ¨1¨q©5€ r   r#   )r   )r   Úhidden_callbackro   ÚstrÚ
startswithÚhidden_callback2Úglobal_f)r   ÚmsgrC   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)r8   r9   r:   r   ÚgetpathÚsourcesÚpytestÚmarkÚparametrizer   r   r   ÚskipifÚsysÚplatformrK   rb   r�   r�   r   r   r   r   r      sÈ   „ àˆt�|‰|˜G U¨J¸Ó@ÐA€Gà‡[�[×Ñ˜V c¨4 [Ó1ñ"ó 2ð"ò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)r8   r9   r:   r   Úoptionsr   r   r   r™   r™   Å   s   „ ñð
 'Ð'�Gr   r™   c                   ó>   — e Zd Z ej                  dddd«      gZ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 rf   r   r„   s    r   Úincrz*TestF90Callback.test_gh17797.<locals>.incrÔ   s   € Ø�s‘7ˆNr   )r   rR   rS   )rU   é�   )rV   r[   Úint64r   Úgh17797)r   rŸ   ÚyrC   s       r   Útest_gh17797zTestF90Callback.test_gh17797Ó   sA   € ò	ô �H‰H’Y¤b§h¡hÔ/ˆØ�K‰K×Ñ  aÓ(ˆØ�OÒ#Ð#Ñ#r   N)r8   r9   r:   r   r�   r‘   r¤   r   r   r   rœ   rœ   Ï   s    „ àˆt�|‰|˜G U¨J¸ÓFÐG€Gó$r   rœ   c                   óB   — e Zd ZdZ ej
                  dddd«      gZ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©   rC   s      r   Útest_gh18335zTestGH18335.test_gh18335å   s)   € ò	ð �K‰K×Ñ Ó$ˆØ�GŠ|Ð‰|r   N)r8   r9   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‘5ˆLr   én   )r   r©   )r   r²   ra   s      r   Útest_gh25211zTestGH25211.test_gh25211ó   s'   € ò	ð �k‰k�o‰o˜cÓ"ˆØ�cŠzÐ‰zr   N)r8   r9   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ÚrunrE   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)r8   r9   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   ry   ri   rq   r’   ÚnumpyrV   rP   r   r“   ÚslowÚF2PyTestr   r™   rœ   r¦   r®   ÚxfailÚsystemÚlowerrº   r   r   r   ú<module>rÌ      sV  ðÛ Û Û 
Û Û Û Û ã ã å ð ‡�×Ñôq�d—m‘mó qó ðqðh ‡�×Ñô(˜ó (ó ð(ð ‡�×Ñô	$�d—m‘mó 	$ó ð	$ð ‡�×Ñô�$—-‘-ó ó ðð  ‡�×Ñô
�$—-‘-ó 
ó ð
ð ‡�×ÑØ‡�×Ñ˜o˜hŸo™oÓ/×5Ñ5Ó7¸8ÑCØØFð ó Hô5 §¡ó 5óHó ñ5r   