+
    ei  c                   s   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt	^ RI
Ht ^RIHt  ! R R]P                  4      t ! R R]4      t ! R R	]P                  4      t ! R
 R]P                  4      t ! R R]P                  4      t]P(                  P*                  ]P(                  P-                  ]P.                  ! 4       P1                  4       R8H  RRR7       ! R R]P                  4      4       4       tR# )    N)IS_PYPY)utilc                   s  a  ] tR t^t o ]P
                  ! RRRR4      .t]P                  P                  RRR.4      ]P                  P                  R 4       4       t]P                  P                  ]R	R
7      R 4       tR t]P                  P!                  ]P$                  R8H  RR
7      R 4       t]P                  P!                  ]P$                  R8H  RR
7      R 4       tR tR tRtV tR# )TestF77Callbacktestssrccallbackzfoo.fnamett2c                s(    V P                  V4       R # N)check_function)selfr      &&E/usr/lib64/python3.14/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                s2    \         P                  ! R 4      pR# )a          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
        N)textwrapZdedent)r   Zexpected   & r   test_docstringZTestF77Callback.test_docstring   s     ?? $ r   c                s8   \        V P                  V4      pV! R  4      pV! R RR7      pV! R RR7      pV! R R	R7      pV! \        P                  \        P                  3R7      pV! \        P                  \        P                  3R7      pV! V P                  P
                  RR7      pV! V P                  P                  4      pV! V P                  P                  P                  4      p ! R R4      pV! 4       pV! V4      pV! VP                  4      pR# )
c                  s    ^# )i    r   r   r   <lambda>0TestF77Callback.check_function.<locals>.<lambda>:   s    ar   c                 s    ^# i   r   a   &r   r   r   <       r   )Zfun_extra_argsc                 s    V # r
   r   r   r   r   r   r   >   r   r   c                 s    ^V ,           # r   r   r   r   r   r   r   @   s    Ar   c                   s,   a  ] tR t^Nt o R tR tRtV tR# ))TestF77Callback.check_function.<locals>.Ac                s    ^# i   r   r   r   r   __call__Z2TestF77Callback.check_function.<locals>.A.__call__O       r   c                s    ^	# )i	   r   r   r   r   mthZ-TestF77Callback.check_function.<locals>.A.mthR   r!   r   r   N)__name__
__module____qualname____firstlineno__r    r"   __static_attributes____classdictcell__Z__classdict__   @r   Ar   N   s      r   r+   N)i   r   )	ZgetattrmodulemathZdegreesZpiZfuncZfunc0Z	_cpointerr"   )r   r   r   rr+   r   s   &&    r   r   ZTestF77Callback.check_function8   s    DKK&iLk%0k%0oe4dllDGG;7dllDGG;7 dkku5dkk dkk))*	 	 CaDaeeHr   Zwin32z)Fails with MinGW64 Gfortran (Issue #9673)c                sH    R  pV P                   P                  pV! V4      pR# )c                 s    V R 8X  d   ^ # ^# )r.   r   )Zcoder   r   r   Z6TestF77Callback.test_string_callback.<locals>.callback^   s    s{r   N)r,   Zstring_callback)r   r   fr.      &   r   test_string_callbackZ$TestF77Callback.test_string_callback[   s!    	 KK''hKr   c                s    \         P                  ! RR4      p\         P                  ! RR4      p\         P                  ! R.R4      pR pV P                  P                  pWV3 F  pV! WFVP
                  4      pK  	  R# )   S8Zc c                 s    V P                   V38w  d   ^# V P                  R8w  d   ^# \        P                  ! V R8H  4      '       g   ^# ^ # )r2   r3   r   )ZshapedtypenpZall)cuZlencur   r   r   Z<TestF77Callback.test_string_callback_array.<locals>.callbackp   s;    xxE8#xx466")$$r   Nr2   )r2   i   )r6   Zzerosarrayr,   Zstring_callback_arrayZsize)r   Zcu1Zcu2Zcu3r   r/   r7   ress   &       r   test_string_callback_arrayZ*TestF77Callback.test_string_callback_arrayh   sj     hhud#hhvs#hhtT"	 KK--S/BH"''*C "r   c           
     sZ  a aa . oV 3R  loVVV 3R lpR UUu. uF-  p\        ^4       F  p\        P                  ! W3R7      NK  	  K/  	  pppV F  pVP                  4        K  	  V F  pVP	                  4        K  	  RP	                  S4      oS'       d   \        S4      hR# u uppi )c                  sl   < \         P                  ! R 4       SP                  P                  R 4      p ^*# )gMbP?c                  s    ^{# i{   r   r   r   r   r   Z?TestF77Callback.test_threadsafety.<locals>.cb.<locals>.<lambda>   s    cr   )timeZsleepr,   r   )r.   r   s    r   cbZ-TestF77Callback.test_threadsafety.<locals>.cb   s*     JJt k*A r   c                 s   <  \        ^24       F/  pSP                  P                  S4      pSP                  V 4       K1  	  R#   \         d)    SP                  \        P                  ! 4       4        R# i ; i)i2   N)ranger,   r   r   	ExceptionZappend	tracebackZ
format_exc)r   Zjr.   r>   errorsr   s   &  r   runnerZ1TestF77Callback.test_threadsafety.<locals>.runner   s\    6rAb)A''- #  6i22456s   >A /A65A6)ZtargetZargsz

N)r   r	   )r?   	threadingZThreadZstartZjoinZAssertionError)r   rC   ZargZnZthreadsr   r>   rB   s   f     @@r   test_threadsafetyZ!TestF77Callback.test_threadsafety~   s     			6 #
"E"Iq F9,5 :" 	 

 AGGI  AFFH  V$ (( 
s   3B'c                s    V P                   P                  ^4        V P                   P                  ^4       R V P                   n        V P                   P                  ^4      pR V P                   n        V P                   P                  ^4      pV P                   = V P                   P                  ^4       RR lV P                   n        V P                   P                  ^4      pV P                   P                  ^4      pR#   \         d   p Rp?LRp?ii ; i  \         d   p Rp?LRp?ii ; i  \         d   p Rp?LRp?ii ; i)   Nc                 s    V ^,           # r8   r   Zxr   r   r   6TestF77Callback.test_hidden_callback.<locals>.<lambda>       Qr   c                 s    V ^,           # )rF   r   rG   r   r   r   rH      rI   r   c                 s    V ^,           # )   r   rG   r   r   r   rH      s    1q5r   )r    )r,   Zhidden_callbackr@   Zhidden_callback2Zglobal_f)r   Zmsgr.      &  r   test_hidden_callbackZ$TestF77Callback.test_hidden_callback   s   	HKK''*	LKK((+  /KK''*  /KK''* KK 	HKK''*  1KK''* KK((+7  	H 	H 	H
  	L 	L 	L  	H 	H 	Hs4   D D  D7 DDD4/D47EEr   N)r#   r$   r%   r&   r   getpathsourcespytestmarkZparametrizeslowr   xfailr   r   r   Zskipifsysplatformr1   r;   rE   rL   r'   r(   r)   r*   r   r   r      s
    ||GUJ@AG[[Vc4[1[["  2" [[wL  N1N1:!F [[/J  L	L	 [[/J  LL(&)P r   r   c                   s     ] tR t^tRtR.tRtR# )TestF77CallbackPythonTLSzO
Callback tests using Python thread-local storage instead of
compiler-provided
z-DF2PY_USE_PYTHON_TLSr   N)r#   r$   r%   r&   __doc__optionsr'   r   r   r   rU   rU      s    
 ''Gr   rU   c                   s   a  ] tR t^t o ]P
                  ! RRRR4      .t]P                  P                  R 4       t
RtV tR# )TestF90Callbackr   r   r   zgh17797.f90c                s    R  p\         P                  ! . RO\         P                  R7      pV P                  P	                  W4      pR# )c                 s    V ^{,           # r<   r   rG   r   r   incrZ*TestF90Callback.test_gh17797.<locals>.incr   s    s7Nr   )r5   N)r2   rF   rJ   )r6   r9   Zint64r,   Zgh17797)r   rY   Zyr.   r0   r   test_gh17797ZTestF90Callback.test_gh17797   s1    	 HHYbhh/KK(r   r   N)r#   r$   r%   r&   r   rM   rN   rO   rP   rQ   rZ   r'   r(   r)   r*   r   rX   rX      s8     ||GUJFGG[[$ $r   rX   c                   s   a  ] tR t^t o Rt]P                  ! RRRR4      .t]P                  P                  R 4       tRtV tR# )	TestGH18335zThe 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                B    R  pV P                   P                  V4      pR# )c                 s0    V ^ ;;,          ^,          uu&   R# )r    Nr   rG   r   r   fooZ%TestGH18335.test_gh18335.<locals>.foo   s    aDAIDr   N)r,   Zgh18335)r   r]   r.   rK   r   test_gh18335ZTestGH18335.test_gh18335   s    	 KK$r   r   N)r#   r$   r%   r&   rV   r   rM   rN   rO   rP   rQ   r^   r'   r(   r)   r*   r   r[   r[      s?     
 ||GUJFGG[[ r   r[   c                   s~   a  ] tR t^t o ]P
                  ! RRRR4      ]P
                  ! RRRR4      .tRtR tRt	V t
R	# )
TestGH25211r   r   r   z	gh25211.fzgh25211.pyfZ	callback2c                r\   )c                 s    W ,          # r
   r   rG   r   r   barZ%TestGH25211.test_gh25211.<locals>.bar   s	    5Lr   N)r,   r]   )r   r`   r:   rK   r   test_gh25211ZTestGH25211.test_gh25211   s    	 kkooc"r   r   N)r#   r$   r%   r&   r   rM   rN   Zmodule_namera   r'   r(   r)   r*   r   r_   r_      s@     ||GUJD||GUJFHGK r   r_   ZdarwinFz*Callback aborts cause CI failures on macOS)Z	conditionZrunr   c                   sX   a  ] tR t^t o ]P
                  ! RRRR4      .tR.tR tRt	V t
R# )	TestCBFortranCallstatementr   r   r   zgh26681.f90z--lowerc                s0   \         P                  ! \        R R7      ;_uu_ 4       pV P                  P                  P
                  V P                  n        V P                  P                  P                  R 4       RRR4       R#   + '       g   i     R# ; i)Zhelpme)ZmatchN)rO   ZraisesZ
ValueErrorr,   ZutilsZmy_abortZ
mypy_abortZdo_something)r   Zexcr   r   test_callstatement_fortranZ5TestCBFortranCallstatement.test_callstatement_fortran  sX    ]]:X66#%)[[%6%6%?%?DKK"KK**84 7666s   ABB	r   N)r#   r$   r%   r&   r   rM   rN   rW   rc   r'   r(   r)   r*   r   rb   rb      s/     
 ||GUJFGGkG5 5r   rb   )r-   rT   rS   r   rD   r=   rA   rO   Znumpyr6   Znumpy.testingr   r4   r   ZF2PyTestr   rU   rX   r[   r_   rP   rQ   rR   ZsystemZlowerrb   r   r   r   <module>rd      s      
       ! tdmm tn( (
$dmm 
$$-- "
$-- 
 hoo/5578CF  H5 5H 5r   