§
    ÈÁ³gÊ  ã                   óð  — 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                              ej        ¦   «                              ¦   «         dk    dd¬¦  «         G d„ dej        ¦  «        ¦   «         ¦   «         ZdS )é    N)ÚIS_PYPYé   )Úutilc                   óÜ  — e Zd Z ej        dddd¦  «        gZej                             dd 	                    d¦  «        ¦  «        ej        j
        d„ ¦   «         ¦   «         Zej                             ed	¬
¦  «        d„ ¦   «         Zd„ Zej                             ej        dk    d¬
¦  «        d„ ¦   «         Zej                             ej        dk    d¬
¦  «        d„ ¦   «         Zd„ Zd„ ZdS )ÚTestF77CallbackÚtestsÚsrcÚcallbackzfoo.fÚnamezt,t2ú,c                 ó0   — |                       |¦  «         d S ©N)Úcheck_function)Úselfr   s     ú\/var/www/html/mpstechhub/venv/lib/python3.11/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                 ó\   — t          j        d¦  «        }| j        j        j        |k    sJ ‚d S )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   s:   € õ ”?ð $ñ ô ˆð4 Œ{Œ}Ô$¨Ò0Ð0Ð0Ð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 ‚d S )Nc                  ó   — dS )Né   © r    r   r   ú<lambda>z0TestF77Callback.check_function.<locals>.<lambda>8   s   € �a€ r   r   c                 ó   — dS ©Né   r    ©Úas    r   r!   z0TestF77Callback.check_function.<locals>.<lambda>:   ó   € ˜€ r   )é   )Úfun_extra_argsr$   c                 ó   — | S r   r    r%   s    r   r!   z0TestF77Callback.check_function.<locals>.<lambda><   r'   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dS )ú)TestF77Callback.check_function.<locals>.Ac                 ó   — dS )Nr,   r    ©r   s    r   Ú__call__z2TestF77Callback.check_function.<locals>.A.__call__M   ó   € Ø�qr   c                 ó   — dS )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   s2   € € € € € ðð ð ðð ð ð ð r   r@   r,   r;   )	Úgetattrr   r/   Úpir0   ÚfuncÚfunc0Ú	_cpointerr<   )r   r   r   Úrr@   r&   s         r   r   zTestF77Callback.check_function6   sÂ  € Ý�D”K Ñ&Ô&ˆØˆAˆiˆi‰LŒLˆØ�AŠvˆvˆvˆvØˆAˆkˆk¨%Ð0Ñ0Ô0ˆØ�AŠvˆvˆvˆvØˆAˆkˆk¨%Ð0Ñ0Ô0ˆØ�AŠvˆvˆvˆvØˆAˆoˆo¨eÐ4Ñ4Ô4ˆØ�BŠwˆwˆwˆwØˆAÐ'Ð'½¼¸ÐDÑDÔDˆØ�CŠxˆxˆxˆxØˆA�dŒl­D¬G¨;Ð7Ñ7Ô7ˆØ�CŠxˆxˆxˆxàˆAˆdŒkÔ¨uÐ5Ñ5Ô5ˆØ�BŠwˆwˆwˆwØˆAˆdŒkÔÑ Ô ˆØ�BŠwˆwˆwˆwØˆAˆdŒkÔÔ)Ñ*Ô*ˆØ�BŠwˆwˆwˆwð	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð ˆA‰CŒCˆØˆAˆa‰DŒDˆØ�AŠvˆvˆvˆvØˆAˆaŒe‰HŒHˆØ�AŠvˆvˆvˆvˆvˆvr   Úwin32z)Fails with MinGW64 Gfortran (Issue #9673)c                 óJ   — d„ }| j         j        } ||¦  «        }|dk    sJ ‚d S )Nc                 ó   — | dk    rdS dS )NrF   r   r   r    )Úcodes    r   r
   z6TestF77Callback.test_string_callback.<locals>.callback\   s   € Ø�sŠ{ˆ{Ø�qà�qr   r   )r   Ústring_callback)r   r
   ÚfrF   s       r   Útest_string_callbackz$TestF77Callback.test_string_callbackY   s;   € ð	ð 	ð 	ð ŒKÔ'ˆØˆAˆh‰KŒKˆØ�AŠvˆvˆvˆvˆvˆvr   c                 óè   — t          j        dd¦  «        }t          j        dd¦  «        }t          j        dgd¦  «        }d„ }| j        j        }|||fD ]} ||||j        ¦  «        }|dk    sJ ‚Œd S )N)r   ÚS8)r   é   ÚcÚ c                 óp   — | j         |fk    rdS | j        dk    rdS t          j        | dk    ¦  «        sdS dS )Nr   rO   é   r   é   r   )ÚshapeÚdtypeÚnpÚall)ÚcuÚlencus     r   r
   z<TestF77Callback.test_string_callback_array.<locals>.callbackn   sH   € ØŒx˜E˜8Ò#Ð#Ø�qØŒx˜4ÒÐØ�qÝ”6˜" š)Ñ$Ô$ð Ø�qØ�1r   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�u˜dÑ#Ô#ˆÝŒh�v˜sÑ#Ô#ˆÝŒh˜�t˜TÑ"Ô"ˆð	ð 	ð 	ð ŒKÔ-ˆØ˜˜S�/ð 	ð 	ˆBØ�!�H˜b "¤'Ñ*Ô*ˆCØ˜!’8�8�8�8�8ð	ð 	r   c                 óö   ‡ ‡‡‡— g Šˆ fd„Šˆˆˆ fd„Šˆfd„dD ¦   «         }|D ]}|                      ¦   «          Œ|D ]}|                     ¦   «          Œd                     ‰¦  «        Š‰rt          ‰¦  «        ‚d S )Nc                  óv   •— t          j        d¦  «         ‰j                             d„ ¦  «        } | dk    sJ ‚dS )Ngü©ñÒMbP?c                  ó   — dS ©Né{   r    r    r   r   r!   z?TestF77Callback.test_threadsafety.<locals>.cb.<locals>.<lambda>‡   s   €  c€ r   ri   é*   )ÚtimeÚsleepr   r   )rF   r   s    €r   Úcbz-TestF77Callback.test_threadsafety.<locals>.cb�   s>   ø€ õ ŒJ�tÑÔÐð ”—’˜k˜kÑ*Ô*ˆAØ˜’8�8�8�8à�2r   c                 ó
  •— 	 t          d¦  «        D ]9}‰j                             ‰¦  «        }|dk    sJ ‚‰                     | ¦  «         Œ:d S # t          $ r* ‰                     t          j        ¦   «         ¦  «         Y d S 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Œ   sŸ   ø€ ð6Ý˜r™œð .ð .�AØœŸš bÑ)Ô)�AØ š7˜7˜7˜7Ø×'Ò'¨Ñ-Ô-Ð-Ð-ð.ð .øõ ð 6ð 6ð 6Ø—’�iÔ2Ñ4Ô4Ñ5Ô5Ð5Ð5Ð5Ð5ð6øøøs   ƒA	A Á0BÂBc                 ób   •— g | ]+}t          d ¦  «        D ]}t          j        ‰|f¬¦  «        ‘ŒŒ,S )é   )ÚtargetÚargs)rp   Ú	threadingÚThread)Ú.0ÚargÚnrw   s      €r   ú
<listcomp>z5TestF77Callback.test_threadsafety.<locals>.<listcomp>•   sU   ø€ ð 
ð 
ð 
à­E°"©I¬Ið
ð 
à'(õ Ô F°#°Ð9Ñ9Ô9ð
ð 
ð 
ð 
r   )r   Út2z

)ÚstartÚjoinÚAssertionError)r   Úthreadsr   rm   rv   rw   s   `  @@@r   Útest_threadsafetyz!TestF77Callback.test_threadsafety|   sà   øøøø€ ð ˆð		ð 		ð 		ð 		ð 		ð	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð
ð 
ð 
ð 
à"ð
ñ 
ô 
ˆð
 ð 	ð 	ˆAØ�GŠG‰IŒIˆIˆIàð 	ð 	ˆAØ�FŠF‰HŒHˆHˆHà—’˜VÑ$Ô$ˆØð 	)Ý  Ñ(Ô(Ð(ð	)ð 	)r   c                 ó~  — 	 | j                              d¦  «         n;# t          $ r.}t          |¦  «                             d¦  «        sJ ‚Y d }~nd }~ww xY w	 | j                              d¦  «         n;# t          $ r.}t          |¦  «                             d¦  «        sJ ‚Y d }~nd }~ww xY wd„ | j         _        | j                              d¦  «        }|dk    sJ ‚d„ | j         _        | j                              d¦  «        }|dk    sJ ‚| j         `	 | j                              d¦  «         n;# t          $ r.}t          |¦  «                             d¦  «        sJ ‚Y d }~nd }~ww xY wdd	„| j         _        | j                              d¦  «        }|d
k    sJ ‚| j                              d¦  «        }|dk    sJ ‚d S )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   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×'Ò'¨Ñ*Ô*Ð*Ð*øÝð 	Hð 	Hð 	HÝ�s‘8”8×&Ò&Ð'FÑGÔGÐGÐGÐGÐGÐGÐGÐGÐGøøøøð	Høøøð	LØŒK×(Ò(¨Ñ+Ô+Ð+Ð+øÝð 	Lð 	Lð 	LÝ�s‘8”8×&Ò&Ð'JÑKÔKÐKÐKÐKÐKÐKÐKÐKÐKøøøøð	Løøøð  /˜ˆŒÔØŒK×'Ò'¨Ñ*Ô*ˆØ�AŠvˆvˆvˆvà.˜ˆŒÔØŒK×'Ò'¨Ñ*Ô*ˆØ�AŠvˆvˆvˆvàŒKÐ ð	HØŒK×'Ò'¨Ñ*Ô*Ð*Ð*øÝð 	Hð 	Hð 	HÝ�s‘8”8×&Ò&Ð'FÑGÔGÐGÐGÐGÐGÐGÐGÐGÐGøøøøð	Høøøð  1Ð0Ð0ˆŒÔØŒK×'Ò'¨Ñ*Ô*ˆØ�AŠvˆvˆvˆvð ŒK×(Ò(¨Ñ+Ô+ˆØ�AŠvˆvˆvˆvˆvˆvsD   ‚ �
A§$AÁAÁA4 Á4
B,Á>$B'Â'B,ÄD0 Ä0
E(Ä:$E#Å#E(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      sm  € € € € € ØˆtŒ|˜G U¨J¸Ñ@Ô@ÐA€Gà„[×Ò˜V V§\¢\°#Ñ%6Ô%6Ñ7Ô7Ø„[Ôð"ð "ñ Ôñ 8Ô7ð"ð „[×Ò�wØLð ñ Nô Nð1ð 1ñNô Nð1ð:!ð !ð !ðF „[×Ò˜œ¨Ò/ØJð ñ Lô Lð	ð 	ñLô Lð	ð „[×Ò˜œ¨Ò/ØJð ñ Lô Lðð ñLô Lðð(&)ð &)ð &)ðPð ð ð ð r   r   c                   ó   — e Zd ZdZdgZdS )Ú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"   € € € € € ðð ð
 'Ð'€G€G€Gr   r¢   c                   ó`   — e Zd Z ej        dddd¦  «        gZej        j        d„ ¦   «         Z	dS )ÚTestF90Callbackr   r	   r
   zgh17797.f90c                 ó–   — d„ }t          j        g d¢t           j        ¬¦  «        }| j                             ||¦  «        }|dk    sJ ‚d S )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Ò   s[   € ð	ð 	ð 	õ ŒH�Y�Y�Y¥b¤hÐ/Ñ/Ô/ˆØŒK×Ò  aÑ(Ô(ˆØ�OÒ#Ð#Ð#Ð#Ð#Ð#r   N)
r=   r>   r?   r   r–   r—   r˜   r™   rœ   r­   r    r   r   r¥   r¥   Ï   sM   € € € € € ØˆtŒ|˜G U¨J¸ÑFÔFÐG€Gà„[Ôð$ð $ñ Ôð$ð $ð $r   r¥   c                   ód   — e Zd ZdZ ej        dddd¦  «        gZej        j	        d„ ¦   «         Z
dS )Ú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                 óP   — d„ }| j                              |¦  «        }|dk    sJ ‚d S )Nc                 ó&   — | dxx         dz  cc<   d S )Nr   r   r    rŠ   s    r   Úfooz%TestGH18335.test_gh18335.<locals>.fooæ   s   € ØˆaˆDˆDŒD�A‰IˆDˆD‰DˆDˆDr   é|   )r   Úgh18335)r   r²   rF   s      r   Útest_gh18335zTestGH18335.test_gh18335ä   s9   € ð	ð 	ð 	ð ŒK×Ò Ñ$Ô$ˆØ�GŠ|ˆ|ˆ|ˆ|ˆ|ˆ|r   N)r=   r>   r?   r   r   r–   r—   r˜   r™   rœ   rµ   r    r   r   r¯   r¯   Ü   sY   € € € € € ðð ð
 ˆtŒ|˜G U¨J¸ÑFÔFÐG€Gà„[Ôðð ñ Ôðð ð r   r¯   c                   ód   — e Zd Z ej        dddd¦  «         ej        dddd¦  «        gZdZd„ ZdS )	ÚTestGH25211r   r	   r
   z	gh25211.fzgh25211.pyfÚ	callback2c                 óP   — d„ }| j                              |¦  «        }|dk    sJ ‚d S )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ò   s7   € ð	ð 	ð 	ð Œk�oŠo˜cÑ"Ô"ˆØ�cŠzˆzˆzˆzˆzˆzr   N)r=   r>   r?   r   r–   r—   Úmodule_namer½   r    r   r   r·   r·   í   sZ   € € € € € ØˆtŒ|˜G U¨J¸ÑDÔDØˆtŒ|˜G U¨J¸ÑFÔFðH€Gà€Kðð ð ð ð r   r·   ÚdarwinFz*Callback aborts cause CI failures on macOS)Ú	conditionÚrunr   c                   óB   — e Zd Z ej        dddd¦  «        gZdgZd„ ZdS )ÚTestCBFortranCallstatementr   r	   r
   zgh26681.f90z--lowerc                 óâ   — t          j        t          d¬¦  «        5 }| j        j        j        | j        _        | j        j                             d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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Ñ6Ô6ð 	5¸#Ø%)¤[Ô%6Ô%?ˆDŒKÔ"ØŒKÔ×*Ò*¨8Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5s   œ;A$Á$A(Á+A(N)r=   r>   r?   r   r–   r—   r£   rÎ   r    r   r   rÃ   rÃ   ú   sF   € € € € € ð
 ˆtŒ|˜G U¨J¸ÑFÔFÐG€GØˆk€Gð5ð 5ð 5ð 5ð 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ð tð tð tð t�d”mñ tô tð tðn(ð (ð (ð (ð (˜ñ (ô (ð (ð
$ð 
$ð 
$ð 
$ð 
$�d”mñ 
$ô 
$ð 
$ðð ð ð ð �$”-ñ ô ð ð"
ð 
ð 
ð 
ð 
�$”-ñ 
ô 
ð 
ð „ÔØ„×Ò˜o˜hœoÑ/Ô/×5Ò5Ñ7Ô7¸8ÒCØØFð ñ Hô Hð5ð 5ð 5ð 5ð 5 ¤ñ 5ô 5ñHô Hñ Ôð5ð 5ð 5r   