idddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z Gdde j ZGddeZGd d e j ZGd d e j ZdS) N)IS_PYPY)utilceZdZejddddgZejdd ddZ ej e d d Z d Zejejd kd dZejejd kd dZdZdZdS)TestF77Callbacktestssrccallbackzfoo.fnamezt,t2,c0||dSN)check_function)selfr s S/opt/cloudlinux/venv/lib/python3.11/site-packages/numpy/f2py/tests/test_callback.pytest_allzTestF77Callback.test_alls D!!!!!z,PyPy cannot modify tp_doc after PyType_Ready)reasonc\tjd}|jjj|ksJdS)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 )textwrapdedentmodulet__doc__)rexpecteds rtest_docstringzTestF77Callback.test_docstrings:?$   4{}$000000rct|j|}|d}|dksJ|dd}|dksJ|dd}|dksJ|d d }|d ksJ|d tjf}|d ksJ|tjtjf}|d ksJ||jjd}|dksJ||jj}|dksJ||jjj}|dksJGdd}|}||}|dksJ||j}|dksJdS)NcdS)Nr rrz0TestF77Callback.check_function..6sarrcdSNr as rr!z0TestF77Callback.check_function..8r))fun_extra_argsr$c|Srr r%s rr!z0TestF77Callback.check_function..:r'rr(c d|zSr#r r%s rr!z0TestF77Callback.check_function..<s Ar) c*tj|Sr)mathdegreesr%s rr!z0TestF77Callback.check_function..>s Qr ceZdZdZdZdS))TestF77Callback.check_function..AcdS)Nr,r rs r__call__z2TestF77Callback.check_function..A.__call__KqrcdS)N r r7s rmthz-TestF77Callback.check_function..A.mthNr9rN)__name__ __module__ __qualname__r8r<r rrAr5Js2        rr@r,r;) getattrrr/pir0funcfunc0 _cpointerr<)rr rrr@r&s rrzTestF77Callback.check_function4s DK & & AiiLLAvvvv Akk% 0 0 0Avvvv Akk% 0 0 0Avvvv Aooe 4 4 4Bwwww A'' D D DCxxxx AdlDG; 7 7 7Cxxxx Adku 5 5 5Bwwww Adk Bwwww Adk) * *Bwwww         ACC AaDDAvvvv AaeHHAvvvvvvrwin32z)Fails with MinGW64 Gfortran (Issue #9673)c\d}t|jd}||}|dksJdS)Nc|dkrdSdS)NrFrrr )codes rr z6TestF77Callback.test_string_callback..callbackZss{{qqrstring_callbackr)rAr)rr frFs rtest_string_callbackz$TestF77Callback.test_string_callbackWsC    DK!2 3 3 AhKKAvvvvvvrctjdd}tjdd}tjdgd}d}t|jd}|||fD]}||||j}|dksJdS) N)rS8)rccp|j|fkrdS|jdkrdStj|dksdSdS)NrrOrr)shapedtypenpall)culencus rr z.callbacklsHxE8##qx4q6")$$ q1rstring_callback_arrayr)rXzerosarrayrArsize)rcu1cu2cu3r rLrZress rtest_string_callback_arrayz*TestF77Callback.test_string_callback_arraydshud##hvs##htT""    DK!8 9 9S/  B!Hb"'**C!88888  rcgfdfdfddD}|D]}||D]}|drtdS)Ncvtjdjd}|dksJdS)NgMbP?cdSN{r r rrr!z?TestF77Callback.test_threadsafety..cb..scrri*)timesleeprr)rFrs rcbz-TestF77Callback.test_threadsafety..cbs> Jt    kk**A88882rc  tdD]9}j}|dksJ|:dS#t$r*t jYdSwxYw)N2rj)rangerrr Exceptionappend traceback format_exc)r jrFrmerrorsrs rrunnerz1TestF77Callback.test_threadsafety..runners 6r..A b))A7777''----.. 6 6 6 i244555555 6sA A0BBcbg|]+}tdD]}tj|f,S))targetargs)rp threadingThread).0argnrws r z5TestF77Callback.test_threadsafety..sU   E"II  '(  F# 9 9 9    r)rt2z )startjoinAssertionError)rthreadsrrmrvrws` @@@rtest_threadsafetyz!TestF77Callback.test_threadsafetyzs      6 6 6 6 6 6 6    "      A GGIIII  A FFHHHHV$$  ) (( ( ) )rc~ |jdn;#t$r.}t|dsJYd}~nd}~wwxYw |jdn;#t$r.}t|dsJYd}~nd}~wwxYwd|j_|jd}|dksJd|j_|jd}|dksJ|j` |jdn;#t$r.}t|dsJYd}~nd}~wwxYwd d |j_|jd}|d ksJ|jd}|dksJdS) NrTzCallback global_f not definedz!cb: Callback global_f not definedc |dzS)Nrr xs rr!z6TestF77Callback.test_hidden_callback.. QrrUc |dzS)NrTr rs rr!z6TestF77Callback.test_hidden_callback..rrrrc |dzS)NrUr rs rr!z6TestF77Callback.test_hidden_callback..s 1q5rr$)r)rhidden_callbackrqstr startswithhidden_callback2global_f)rmsgrFs rtest_hidden_callbackz$TestF77Callback.test_hidden_callbacks H K ' ' * * * * H H Hs88&&'FGG G G G G G G G G H L K ( ( + + + + L L Ls88&&'JKK K K K K K K K K L /  K ' ' * *Avvvv.  K ' ' * *Avvvv K  H K ' ' * * * * H H Hs88&&'FGG G G G G G G G G H 100  K ' ' * *Avvvv K ( ( + +AvvvvvvsD A$AAA44 B,>$B''B,D00 E(:$E##E(N)r=r>r?rgetpathsourcespytestmark parametrizesplitrxfailrrrskipifsysplatformrMrdrrr rrrrs]t|GUJ@@AG [VV\\#%6%677""87" [wLNN11NN1:!!!F [ /JLL  LL  [ /JLLLL(&)&)&)PrrceZdZdZdgZdS)TestF77CallbackPythonTLSz[ Callback tests using Python thread-local storage instead of compiler-provided z-DF2PY_USE_PYTHON_TLSN)r=r>r?roptionsr rrrrs" ''GGGrrc<eZdZejddddgZdZdS)TestF90Callbackrr r z gh17797.f90cd}tjgdtj}|j||}|dksJdS)Nc |dzSrhr rs rincrz*TestF90Callback.test_gh17797..incrs s7Nr)rrTrU)rW)rXr^int64rgh17797)rryrFs r test_gh17797zTestF90Callback.test_gh17797s[    HYYYbh / / / K  a ( (O######rN)r=r>r?rrrrr rrrrs=t|GUJ FFGG$$$$$rrc@eZdZdZejddddgZdZdS) 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! rr r z gh18335.f90cPd}|j|}|dksJdS)Nc&|dxxdz cc<dS)Nrrr rs rfooz%TestGH18335.test_gh18335..foos aDDDAIDDDDDr|)rgh18335)rrrFs r test_gh18335zTestGH18335.test_gh18335s9    K   $ $G||||||rN)r=r>r?rrrrrr rrrrsI t|GUJ FFGGrr)r/rrrr|rsrknumpyrX numpy.testingrrRrF2PyTestrrrrr rrrs;   !!!!!!sssssdmsssl(((((((( $ $ $ $ $dm $ $ $     $-     r