
    CEjC                        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     l/var/www/html/eeg-assistent/strom-signal/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   DKK&iLAvvk%0Avvk%0Avvoe4BwwdllDGG;7CxxdllDGG;7Cxxdkku5Bwwdkk Bwwdkk))*Bww	 	 CaDAvvaeeHAv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,    	 KK''hKAv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    xxE8#xx466")$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~     hhud#hhvs#hhtT"	 KK--S/ 	BHb"''*C!8O8	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)NgMbP?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     JJt k*A8O8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)N2   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7N7''-.  6i22456s   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GGI	  	AFFH	 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
    1q5 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KK''*	LKK((+  /KK''*Avv.KK''*AvvKK 	HKK''*  1KK''*Avv KK((+Avv9  	Hs8&&'FGGG	H
  	Ls8&&'JKKK	L  	Hs8&&'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||GUJ@AG[[Vc4[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    s7Nr   )r   rR   rS   )rU      )rV   r[   int64r   gh17797)r   r   yrC   s       r   test_gh17797zTestF90Callback.test_gh17797   sA    	 HHYbhh/KKa(O###r   N)r8   r9   r:   r   r   r   r   r   r   r   r   r      s     t||GUJFGG$r   r   c                   B    e Zd ZdZ ej
                  dddd      gZd Zy)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                 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    aDAIDr   |   )r   gh18335)r   r   rC   s      r   test_gh18335zTestGH18335.test_gh18335   s)    	 KK$G||r   N)r8   r9   r:   r   r   r   r   r   r   r   r   r   r      s'    
 t||GUJFGG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    q5Lr   n   )r   r   )r   r   ra   s      r   test_gh25211zTestGH25211.test_gh25211   s'    	 kkooc"czzr   N)r8   r9   r:   r   r   r   module_namer   r   r   r   r   r      s<    t||GUJDt||GUJ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%?%?DKK"KK**84	5 	5 	5s   AA::BN)r8   r9   r:   r   r   r   r   r   r   r   r   r   r      s)    
 t||GUJFGGkG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dmm q qh ( ( ( 	$dmm 	$ 	$ $--    
$-- 
 
 ohoo/5578CF  H5 5H 5r   