Comments (10)
type
is a reserved word in Python, hence the remapping to type_bn
(bn stands for "bad name"), which is the same transformation that the standard f2py
would apply. It appears that this is not being done completely consistently, however. I'll look into it.
from f90wrap.
I fully agree that using type as a name while it is already used for something else even in fortran is a poor choice. I guess that most of the problems f90wrap will encounter with the code i try to use will come from non-rigorous subroutines. To see this on the bright side, it will give you leads to achieve a more robust wrapper ;)
Yann
Le 4 nov. 2015 à 16:07, James Kermode [email protected] a écrit :
type is a reserved word in Python, hence the remapping to type_bn (bn stands for "bad name"), which is the same transformation that the standard f2py would apply. It appears that this is not being done completely consistently, however. I'll look into it.
—
Reply to this email directly or view it on GitHub #30 (comment).
from f90wrap.
Should now be fixed. Let me know if you have further problems.
from f90wrap.
It seems to work and I thank you for your responsiveness.
I am now faced with another issue : the fortran code I try to use is
full of "pointer" variables like this :
real,dimension(:,:),pointer :: x
From what i read about f2py, pointer data is not supported. Could your
wrapper do something about that, or at least is there any way around
this "pointer" property of the variable ?
For now, subroutines with pointer variables are ignored without warning
and the module class ends up with only "pass" in the user-friendly .py
generated file.
Thanks again for your time an dedication to your project : )
Yann
Le mar. 17 nov. 2015 à 16:01, James Kermode [email protected]
a écrit :
Should now be fixed. Let me know if you have further problems.
—
Reply to this email directly or view it on GitHub.
from f90wrap.
I don't remember where the limitation on pointer arugments comes wrong. I will try to have a look at a simple example soon- I'm reopening this issue to keep track.
from f90wrap.
Here is a minimal example producing an empty python wrapper and an f2py3 error at the Building Modules step:
module module_calcul
contains
subroutine evaluer_valeur(x)
real,dimension(:,:),pointer :: x
x = 2
return
end subroutine evaluer_valeur
end module module_calcul
from f90wrap.
I'm sorry to re-open this case but it seems that the fix for "type" as a member name inside a type is not 100% working. With the minimal example provided at the beginning of this issue, the python commands
import maxwell
a = maxwell.module_structure.Face()
results in : AttributeError: module '_maxwell' has no attribute 'f90wrap_face_initialise'.
from f90wrap.
Got it.
I propose you to replace line 714 of file f90wrapgen.py
if localvar in getattr(el, "uses", []) or localvar in extra_uses:
by
if localvar in getattr(el, "uses", []) or localvar in extra_uses or localvar == "type":
I know you have a list of bad names, so of course it would be better to modify with something like
... localvar not in bad_names_list
and this should do the trick.
from f90wrap.
Hi : )
Rather than checking for uses, bad names, or who knows what we are forgetting this time, I think it is easier to just append "_f90wrap" to all type members. I updated my pull request accordingly.
(and proposed a bug fix on another subject as well)
from f90wrap.
Agreed - I merged your updated pull request, thanks.
Since there is already an F90WrapperGenerator.prefix
attribute, so I removed the hard-coded "_f90wrap" suffix and switched it to use a prefix instead (commit 140dc916665a7
). Let me know of any further problems.
from f90wrap.
Related Issues (20)
- multidimensional arrays in derived types broken if compiled with long integers as default HOT 1
- Python 3.11 support HOT 8
- Pre-build f90wrap wheels for windows HOT 3
- Derived types containing allocatable character arrays
- `integer, value, intent(in)`/`integer, value` arguments converted to/wrapped as `real`
- Wrong module class name in a call to `f90wrap.runtime.FortranDerivedTypeArray` HOT 2
- numpy > 1.23 support HOT 2
- Switch to pyproject.toml based build system HOT 7
- duplicate symbol in formal argument list HOT 2
- Issues on Mac OS X - for f90wrap 0.2.12 HOT 1
- BUG: Routines including procedure arguments (callbacks) are excluded HOT 1
- Can `f90wrap`parse FORD docstrings?
- unexpected removal of procedures associated with derived types HOT 1
- install fails on macos 14 HOT 4
- Binary Wheels for Mac HOT 1
- example with fortran to python callback function fails with as of f90wrap v0.2.13: "bad argument to internal function" HOT 1
- Parser fails on asterisk in subroutine argument list HOT 2
- Fix Windows wheels HOT 1
- Suggestions on wrapping a code HOT 4
- Handle collision in array wrapper (that breaks CI intermittently)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from f90wrap.