Ë
    nwj»  ã                   ó   — 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dg«      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ÚnameÚtÚt2c                 ó&   — | j                  |«       y ©N)Úcheck_function)Úselfr   s     úc/var/www/html/newmanjeet/manjet/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Úmoduler   Ú__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 ‚ |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>:   s   € �ar   r   c                  ó   — y©Né   r    ©Úas    r   r!   z0TestF77Callback.check_function.<locals>.<lambda><   s   € ˜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__O   ó   € Ør   c                  ó   — y)Né	   r    r3   s    r   Úmthz-TestF77Callback.check_function.<locals>.A.mthR   r5   r   N)Ú__name__Ú
__module__Ú__qualname__r4   r8   r    r   r   ÚAr1   N   s   „ òór   r<   r+   r7   )	Úgetattrr   ÚmathÚdegreesÚpiÚfuncÚfunc0Ú	_cpointerr8   )r   r   r   Úrr<   r&   s         r   r   zTestF77Callback.check_function8   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)c                 óT   — d„ }| j                   j                  } ||«      }|dk(  sJ ‚y )Nc                 ó   — | dk(  ryy)NrD   r   r   r    )Úcodes    r   r
   z6TestF77Callback.test_string_callback.<locals>.callback^   s   € Ø�sŠ{Øàr   r   )r   Ústring_callback)r   r
   ÚfrD   s       r   Útest_string_callbackz$TestF77Callback.test_string_callback[   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>.callbackp   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_arrayh   sy   € ô �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>‰   s   €  cr   rg   é*   )ÚtimeÚsleepr   r   )rD   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   ÚjrD   rk   Úerrorsr   s      €€€r   Úrunnerz1TestF77Callback.test_threadsafety.<locals>.runnerŽ   sg   ø€ ð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 qô ×Ñ F°#°Ö9Ø,5ð :Ø"ð 	ñ 
ó
 ˆ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ª5r   r$   )r   )r   Úhidden_callbackro   ÚstrÚ
startswithÚhidden_callback2Úglobal_f)r   ÚmsgrD   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)r9   r:   r;   r   ÚgetpathÚsourcesÚpytestÚmarkÚparametrizeÚslowr   Úxfailr   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ð"ð ‡[�[×Ñ�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)r9   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 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¡   ÚyrD   s       r   Útest_gh17797zTestF90Callback.test_gh17797Ô   sA   € ò	ô �H‰H’Y¤b§h¡hÔ/ˆØ�K‰K×Ñ  aÓ(ˆØ�OÒ#Ð#Ñ#r   N)
r9   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«   rD   s      r   Útest_gh18335zTestGH18335.test_gh18335æ   s)   € ò	ð �K‰K×Ñ Ó$ˆØ�GŠ|Ð‰|r   N)r9   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‘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)r9   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  sR   € Ü�]‰]œ:¨XÕ6¸#Ø%)§[¡[×%6Ñ%6×%?Ñ%?ˆD�K‰KÔ"Ø�K‰K×Ñ×*Ñ*¨8Ô4÷ 7×6Ñ6ús   œAA:Á:BN)r9   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   ry   ri   rq   r’   ÚnumpyrV   Únumpy.testingr   rP   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   