[Numpy-discussion] f2py and callbacks with variables

Pearu Peterson pearu.peterson at gmail.com
Thu Aug 13 15:50:55 EDT 2015


Hi Casey,

On Wed, Aug 12, 2015 at 11:46 PM, Casey Deen <deen at mpia.de> wrote:

> Hi Pearu-
>
>    Thanks so much!  This works!  Can you point me to a reference for the
> format of the .pyf files?  My ~day of searching found a few pages on the
> scipy website, but nothing which went into this amount of detail.
>
>
Try this:

  https://sysbio.ioc.ee/projects/f2py2e/usersguide/index.html#signature-file


> I also asked Stackoverflow, and unless you object, I'd like to add your
> explanation and mark it as SOLVED for future poor souls wrestling with
> this problem.  I'll also update the github repository with before and
> after versions of the .pyf file.
>
>
Go ahead with stackoverflow.

Best regards,
Pearu

Cheers,
> Casey
>
> On 08/12/2015 09:34 PM, Pearu Peterson wrote:
> > Hi Casey,
> >
> > What you observe, is not a f2py bug. When f2py sees a code like
> >
> > subroutine foo
> >   call bar
> > end subroutine foo
> >
> > then it will not make an attempt to analyze bar because of implicit
> > assumption that all statements that has no references to foo arguments
> > are irrelevant for wrapper function generation.
> > For your example, f2py needs some help. Try the following signature in
> > .pyf file:
> >
> >         subroutine barney ! in :flintstone:nocallback.f
> >             use test__user__routines, fred=>fred, bambam=>bambam
> >             intent(callback, hide) fred
> >             external fred
> >             intent(callback,hide) bambam
> >             external bambam
> >         end subroutine barney
> >
> > Btw, instead of
> >
> >   f2py -c -m flintstone flintstone.pyf callback.f nocallback.f
> >
> > use
> >
> >   f2py -c flintstone.pyf callback.f nocallback.f
> >
> > because module name comes from the .pyf file.
> >
> > HTH,
> > Pearu
> >
> > On Wed, Aug 12, 2015 at 7:12 PM, Casey Deen <deen at mpia.de
> > <mailto:deen at mpia.de>> wrote:
> >
> >     Hi all-
> >
> >        I've run into what I think might be a bug in f2py and callbacks to
> >     python.  Or, maybe I'm not using things correctly.  I have created a
> >     very minimal example which illustrates my problem at:
> >
> >     https://github.com/soylentdeen/fluffy-kumquat
> >
> >     The issue seems to affect call backs with variables, but only when
> they
> >     are called indirectly (i.e. from other fortran routines).  For
> example,
> >     if I have a python function
> >
> >     def show_number(n):
> >         print("%d" % n)
> >
> >     and I setup a callback in a fortran routine:
> >
> >           subroutine cb
> >     cf2py intent(callback, hide) blah
> >           external blah
> >           call blah(5)
> >           end
> >
> >     and connect it to the python routine
> >     fortranObject.blah = show_number
> >
> >     I can successfully call the cb routine from python:
> >
> >     >fortranObject.cb
> >     5
> >
> >     However, if I call the cb routine from within another fortran
> routine,
> >     it seems to lose its marbles
> >
> >           subroutine no_cb
> >           call cb
> >           end
> >
> >     capi_return is NULL
> >     Call-back cb_blah_in_cb__user__routines failed.
> >
> >     For more information, please have a look at the github repository.
> I've
> >     reproduced the behavior on both linux and mac.  I'm not sure if this
> is
> >     an error in the way I'm using the code, or if it is an actual bug.
> Any
> >     and all help would be very much appreciated.
> >
> >     Cheers,
> >     Casey
> >
> >
> >     --
> >     Dr. Casey Deen
> >     Post-doctoral Researcher
> >     deen at mpia.de <mailto:deen at mpia.de>
> >      +49-6221-528-375 <tel:%2B49-6221-528-375>
> >     Max Planck Institut für Astronomie (MPIA)
> >     Königstuhl 17  D-69117 Heidelberg, Germany
> >     _______________________________________________
> >     NumPy-Discussion mailing list
> >     NumPy-Discussion at scipy.org <mailto:NumPy-Discussion at scipy.org>
> >     http://mail.scipy.org/mailman/listinfo/numpy-discussion
> >
> >
> >
> >
> > _______________________________________________
> > NumPy-Discussion mailing list
> > NumPy-Discussion at scipy.org
> > http://mail.scipy.org/mailman/listinfo/numpy-discussion
> >
>
> --
> Dr. Casey Deen
> Post-doctoral Researcher
> deen at mpia.de                       +49-6221-528-375
> Max Planck Institut für Astronomie (MPIA)
> Königstuhl 17  D-69117 Heidelberg, Germany
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20150813/9cd5262f/attachment.html>


More information about the NumPy-Discussion mailing list