From c620acddd34a07edd6f33baad0adfad6e8cf1bd5 Mon Sep 17 00:00:00 2001 From: Pearu Peterson Date: Wed, 4 Oct 2006 09:49:54 +0000 Subject: F2PY G3: exposed wrappers via f2py script. A working example: wrap F90 module containing derived type with scalar components. --- numpy/f2py/lib/main.py | 272 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 231 insertions(+), 41 deletions(-) (limited to 'numpy/f2py/lib/main.py') diff --git a/numpy/f2py/lib/main.py b/numpy/f2py/lib/main.py index 64b9447f5..c5b40cf35 100644 --- a/numpy/f2py/lib/main.py +++ b/numpy/f2py/lib/main.py @@ -12,7 +12,9 @@ Created: Oct 2006 """ import os +import re import sys +import tempfile try: from numpy import __version__ as numpy_version @@ -44,53 +46,92 @@ Options """ -from parser.api import parse, PythonModule, EndStatement +import re +import shutil +from parser.api import parse, PythonModule, EndStatement, Module, Subroutine, Function -def dump_signature(): - """ Read Fortran files and dump the signatures to file or stdout. +def get_values(sys_argv, prefix='', suffix='', strip_prefix=False, strip_suffix=False): """ - # get signature output - i = sys.argv.index('-h') - if len(sys.argv)-1==i: - signature_output = 'stdout' - else: - signature_output = sys.argv[i+1] - del sys.argv[i+1] - del sys.argv[i] + Return a list of values with pattern + . + The corresponding items will be removed from sys_argv. + """ + match = re.compile(prefix + r'.*' + suffix + '\Z').match + ret = [item for item in sys_argv if match(item)] + [sys_argv.remove(item) for item in ret] + if strip_prefix and prefix: + i = len(prefix) + ret = [item[i:] for item in ret] + if strip_suffix and suffix: + i = len(suffix) + ret = [item[:-i] for item in ret] + return ret - # get module name +def get_option(sys_argv, option, default_return = None): + """ + Return True if sys_argv has