σ 2ΔΘ[c@`s›ddlmZmZmZddlZddlZddlZddlZddlZ ddl m Z m Z ddl mZdejfd„ƒYZdS(i(tdivisiontabsolute_importtprint_functionN(tassert_t assert_equali(tutiltTestF77CallbackcB`s•eZdZejjd„ƒZejjd„ƒZd„Zejj e j dkddƒd„ƒZ ejj e j dkddƒd„ƒZ RS( s• subroutine t(fun,a) integer a cf2py intent(out) a external fun call fun(a) end subroutine func(a) cf2py intent(in,out) a integer a a = a + 11 end subroutine func0(a) cf2py intent(out) a integer a a = 11 end subroutine t2(a) cf2py intent(callback) fun integer a cf2py intent(out) a external fun call fun(a) end subroutine string_callback(callback, a) external callback double precision callback double precision a character*1 r cf2py intent(out) a r = 'r' a = callback(r) end subroutine string_callback_array(callback, cu, lencu, a) external callback integer callback integer lencu character*8 cu(lencu) integer a cf2py intent(out) a a = callback(cu, lencu) end cC`s+x$djdƒD]}|j|ƒqWdS(Nst,t2t,(tsplittcheck_function(tselftname((s=/tmp/pip-build-fiC0ax/numpy/numpy/f2py/tests/test_callback.pyttest_all@scC`s/d}t|jjjtj|ƒjƒƒdS(NsΔ 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 (Rtmodulettt__doc__ttextwraptdedenttlstrip(R texpected((s=/tmp/pip-build-fiC0ax/numpy/numpy/f2py/tests/test_callback.pyttest_docstringEscC`s&t|j|ƒ}|d„ƒ}t|dkt|ƒƒ|d„ddƒ}t|dkt|ƒƒ|d„ddƒ}t|dkt|ƒƒ|d„ddƒ}t|d kt|ƒƒ|d „dtjfƒ}t|d kt|ƒƒ|tjdtjfƒ}t|d kt|ƒƒ||jjddƒ}t|d kt|ƒƒ||jjƒ}t|dkt|ƒƒ||jjj ƒ}t|dkt|ƒƒdt fd„ƒY}|ƒ}||ƒ}t|d kt|ƒƒ||j ƒ}t|dkt|ƒƒdS(NcS`sdS(Ni((((s=/tmp/pip-build-fiC0ax/numpy/numpy/f2py/tests/test_callback.pytesicS`sdS(Ni((ta((s=/tmp/pip-build-fiC0ax/numpy/numpy/f2py/tests/test_callback.pyRgstfun_extra_argsiicS`s|S(N((R((s=/tmp/pip-build-fiC0ax/numpy/numpy/f2py/tests/test_callback.pyRiscS`sd|S(Ni((R((s=/tmp/pip-build-fiC0ax/numpy/numpy/f2py/tests/test_callback.pyRksii cS`s tj|ƒS(N(tmathtdegrees(R((s=/tmp/pip-build-fiC0ax/numpy/numpy/f2py/tests/test_callback.pyRmsi΄ii tAcB`seZd„Zd„ZRS(cS`sdS(Ni((R ((s=/tmp/pip-build-fiC0ax/numpy/numpy/f2py/tests/test_callback.pyt__call__{scS`sdS(Ni ((R ((s=/tmp/pip-build-fiC0ax/numpy/numpy/f2py/tests/test_callback.pytmth~s(t__name__t __module__RR(((s=/tmp/pip-build-fiC0ax/numpy/numpy/f2py/tests/test_callback.pyRys i (i(i(i(i( tgetattrR RtreprRtpiRtfunctfunc0t _cpointertobjectR(R R RtrRR((s=/tmp/pip-build-fiC0ax/numpy/numpy/f2py/tests/test_callback.pyR cs2  twin32treasons)Fails with MinGW64 Gfortran (Issue #9673)cC`sDd„}t|jdƒ}||ƒ}t|dkt|ƒƒdS(NcS`s|dkrdSdSdS(NR&ii((tcode((s=/tmp/pip-build-fiC0ax/numpy/numpy/f2py/tests/test_callback.pytcallbackŠs tstring_callbacki(RR RR (R R*tfR&((s=/tmp/pip-build-fiC0ax/numpy/numpy/f2py/tests/test_callback.pyttest_string_callback†s  cC`sbtjddƒ}d„}t|jdƒ}|||t|ƒƒ}t|dkt|ƒƒdS(NiitS1cS`sI|j|dfkrdS|jdkr,dStj|dkƒsEdSdS(NiiR.itii(tshapetdtypetnptall(tcutlencu((s=/tmp/pip-build-fiC0ax/numpy/numpy/f2py/tests/test_callback.pyR*šststring_callback_arrayi(ii(R2tzerosRR tlenRR (R R4R*R,tres((s=/tmp/pip-build-fiC0ax/numpy/numpy/f2py/tests/test_callback.pyttest_string_callback_array”s  (RRR)tpytesttmarktslowR RR tskipiftsystplatformR-R:(((s=/tmp/pip-build-fiC0ax/numpy/numpy/f2py/tests/test_callback.pyR s1 # (t __future__RRRRRR?R;tnumpyR2t numpy.testingRRR/RtF2PyTestR(((s=/tmp/pip-build-fiC0ax/numpy/numpy/f2py/tests/test_callback.pyts