summaryrefslogtreecommitdiff
path: root/numpy/f2py
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/f2py')
-rw-r--r--numpy/f2py/__init__.py10
-rw-r--r--numpy/f2py/auxfuncs.py136
-rw-r--r--numpy/f2py/capi_maps.py314
-rw-r--r--numpy/f2py/cb_rules.py204
-rw-r--r--numpy/f2py/cfuncs.py64
-rw-r--r--numpy/f2py/common_rules.py46
-rwxr-xr-xnumpy/f2py/crackfortran.py800
-rw-r--r--numpy/f2py/diagnose.py24
-rwxr-xr-xnumpy/f2py/doc/collectinput.py8
-rw-r--r--numpy/f2py/docs/pytest.py4
-rw-r--r--numpy/f2py/docs/usersguide/setup_example.py4
-rwxr-xr-xnumpy/f2py/f2py2e.py84
-rw-r--r--numpy/f2py/f2py_testing.py12
-rw-r--r--numpy/f2py/f90mod_rules.py72
-rw-r--r--numpy/f2py/func2subr.py76
-rw-r--r--numpy/f2py/rules.py568
-rw-r--r--numpy/f2py/setup.py10
-rw-r--r--numpy/f2py/tests/test_array_from_pyobj.py282
-rw-r--r--numpy/f2py/tests/test_assumed_shape.py22
-rw-r--r--numpy/f2py/tests/test_callback.py32
-rw-r--r--numpy/f2py/tests/test_kind.py4
-rw-r--r--numpy/f2py/tests/test_return_character.py18
-rw-r--r--numpy/f2py/tests/test_return_complex.py24
-rw-r--r--numpy/f2py/tests/test_return_integer.py18
-rw-r--r--numpy/f2py/tests/test_return_logical.py22
-rw-r--r--numpy/f2py/tests/test_return_real.py20
-rw-r--r--numpy/f2py/tests/test_size.py28
-rw-r--r--numpy/f2py/use_rules.py30
28 files changed, 1468 insertions, 1468 deletions
diff --git a/numpy/f2py/__init__.py b/numpy/f2py/__init__.py
index 26a63daa8..ccdbd4e0b 100644
--- a/numpy/f2py/__init__.py
+++ b/numpy/f2py/__init__.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python
from __future__ import division, absolute_import, print_function
-__all__ = ['run_main','compile','f2py_testing']
+__all__ = ['run_main', 'compile', 'f2py_testing']
import os
import sys
@@ -32,13 +32,13 @@ def compile(source,
else:
fname = source_fn
- f = open(fname,'w')
+ f = open(fname, 'w')
f.write(source)
f.close()
- args = ' -c -m %s %s %s'%(modulename,fname,extra_args)
- c = '%s -c "import numpy.f2py as f2py2e;f2py2e.main()" %s' %(sys.executable,args)
- s,o = exec_command(c)
+ args = ' -c -m %s %s %s'%(modulename, fname, extra_args)
+ c = '%s -c "import numpy.f2py as f2py2e;f2py2e.main()" %s' %(sys.executable, args)
+ s, o = exec_command(c)
if source_fn is None:
try: os.remove(fname)
except OSError: pass
diff --git a/numpy/f2py/auxfuncs.py b/numpy/f2py/auxfuncs.py
index e835090f7..2e016e186 100644
--- a/numpy/f2py/auxfuncs.py
+++ b/numpy/f2py/auxfuncs.py
@@ -37,7 +37,7 @@ wrapfuncs = 1
def outmess(t):
- if options.get('verbose',1):
+ if options.get('verbose', 1):
sys.stdout.write(t)
def debugcapi(var):
@@ -68,7 +68,7 @@ def isscalar(var):
return not (isarray(var) or isstring(var) or isexternal(var))
def iscomplex(var):
- return isscalar(var) and var.get('typespec') in ['complex','double complex']
+ return isscalar(var) and var.get('typespec') in ['complex', 'double complex']
def islogical(var):
return isscalar(var) and var.get('typespec')=='logical'
@@ -91,7 +91,7 @@ def get_kind(var):
def islong_long(var):
if not isscalar(var):
return 0
- if var.get('typespec') not in ['integer','logical']:
+ if var.get('typespec') not in ['integer', 'logical']:
return 0
return get_kind(var)=='8'
@@ -143,7 +143,7 @@ def islong_complex(var):
return get_kind(var)=='32'
def iscomplexarray(var):
- return isarray(var) and var.get('typespec') in ['complex','double complex']
+ return isarray(var) and var.get('typespec') in ['complex', 'double complex']
def isint1array(var):
return isarray(var) and var.get('typespec')=='integer' \
@@ -216,7 +216,7 @@ def hasassumedshape(rout):
if rout.get('hasassumedshape'):
return True
for a in rout['args']:
- for d in rout['vars'].get(a,{}).get('dimension',[]):
+ for d in rout['vars'].get(a, {}).get('dimension', []):
if d==':':
rout['hasassumedshape'] = True
return True
@@ -332,53 +332,53 @@ def isintent_inout(var):
return 'intent' in var and ('inout' in var['intent'] or 'outin' in var['intent']) and 'in' not in var['intent'] and 'hide' not in var['intent'] and 'inplace' not in var['intent']
def isintent_out(var):
- return 'out' in var.get('intent',[])
+ return 'out' in var.get('intent', [])
def isintent_hide(var):
- return ('intent' in var and ('hide' in var['intent'] or ('out' in var['intent'] and 'in' not in var['intent'] and (not l_or(isintent_inout,isintent_inplace)(var)))))
+ return ('intent' in var and ('hide' in var['intent'] or ('out' in var['intent'] and 'in' not in var['intent'] and (not l_or(isintent_inout, isintent_inplace)(var)))))
def isintent_nothide(var):
return not isintent_hide(var)
def isintent_c(var):
- return 'c' in var.get('intent',[])
+ return 'c' in var.get('intent', [])
# def isintent_f(var):
# return not isintent_c(var)
def isintent_cache(var):
- return 'cache' in var.get('intent',[])
+ return 'cache' in var.get('intent', [])
def isintent_copy(var):
- return 'copy' in var.get('intent',[])
+ return 'copy' in var.get('intent', [])
def isintent_overwrite(var):
- return 'overwrite' in var.get('intent',[])
+ return 'overwrite' in var.get('intent', [])
def isintent_callback(var):
- return 'callback' in var.get('intent',[])
+ return 'callback' in var.get('intent', [])
def isintent_inplace(var):
- return 'inplace' in var.get('intent',[])
+ return 'inplace' in var.get('intent', [])
def isintent_aux(var):
- return 'aux' in var.get('intent',[])
+ return 'aux' in var.get('intent', [])
def isintent_aligned4(var):
- return 'aligned4' in var.get('intent',[])
+ return 'aligned4' in var.get('intent', [])
def isintent_aligned8(var):
- return 'aligned8' in var.get('intent',[])
+ return 'aligned8' in var.get('intent', [])
def isintent_aligned16(var):
- return 'aligned16' in var.get('intent',[])
-
-isintent_dict = {isintent_in:'INTENT_IN',isintent_inout:'INTENT_INOUT',
- isintent_out:'INTENT_OUT',isintent_hide:'INTENT_HIDE',
- isintent_cache:'INTENT_CACHE',
- isintent_c:'INTENT_C',isoptional:'OPTIONAL',
- isintent_inplace:'INTENT_INPLACE',
- isintent_aligned4:'INTENT_ALIGNED4',
- isintent_aligned8:'INTENT_ALIGNED8',
- isintent_aligned16:'INTENT_ALIGNED16',
+ return 'aligned16' in var.get('intent', [])
+
+isintent_dict = {isintent_in: 'INTENT_IN', isintent_inout: 'INTENT_INOUT',
+ isintent_out: 'INTENT_OUT', isintent_hide: 'INTENT_HIDE',
+ isintent_cache: 'INTENT_CACHE',
+ isintent_c: 'INTENT_C', isoptional: 'OPTIONAL',
+ isintent_inplace: 'INTENT_INPLACE',
+ isintent_aligned4: 'INTENT_ALIGNED4',
+ isintent_aligned8: 'INTENT_ALIGNED8',
+ isintent_aligned16: 'INTENT_ALIGNED16',
}
def isprivate(var):
@@ -390,7 +390,7 @@ def hasinitvalue(var):
def hasinitvalueasstring(var):
if not hasinitvalue(var):
return 0
- return var['='][0] in ['"',"'"]
+ return var['='][0] in ['"', "'"]
def hasnote(var):
return 'note' in var
@@ -444,25 +444,25 @@ class F2PYError(Exception):
pass
class throw_error:
- def __init__(self,mess):
+ def __init__(self, mess):
self.mess = mess
- def __call__(self,var):
- mess = '\n\n var = %s\n Message: %s\n' % (var,self.mess)
+ def __call__(self, var):
+ mess = '\n\n var = %s\n Message: %s\n' % (var, self.mess)
raise F2PYError(mess)
def l_and(*f):
- l,l2='lambda v',[]
+ l, l2='lambda v', []
for i in range(len(f)):
- l='%s,f%d=f[%d]'%(l,i,i)
+ l='%s,f%d=f[%d]'%(l, i, i)
l2.append('f%d(v)'%(i))
- return eval('%s:%s'%(l,' and '.join(l2)))
+ return eval('%s:%s'%(l, ' and '.join(l2)))
def l_or(*f):
- l,l2='lambda v',[]
+ l, l2='lambda v', []
for i in range(len(f)):
- l='%s,f%d=f[%d]'%(l,i,i)
+ l='%s,f%d=f[%d]'%(l, i, i)
l2.append('f%d(v)'%(i))
- return eval('%s:%s'%(l,' or '.join(l2)))
+ return eval('%s:%s'%(l, ' or '.join(l2)))
def l_not(f):
return eval('lambda v,f=f:not f(v)')
@@ -508,22 +508,22 @@ def getmultilineblock(rout,blockname,comment=1,counter=0):
r = r[:-3]
else:
errmess("%s multiline block should end with `'''`: %s\n" \
- % (blockname,repr(r)))
+ % (blockname, repr(r)))
return r
def getcallstatement(rout):
- return getmultilineblock(rout,'callstatement')
+ return getmultilineblock(rout, 'callstatement')
def getcallprotoargument(rout,cb_map={}):
- r = getmultilineblock(rout,'callprotoargument',comment=0)
+ r = getmultilineblock(rout, 'callprotoargument', comment=0)
if r: return r
if hascallstatement(rout):
outmess('warning: callstatement is defined without callprotoargument\n')
return
from .capi_maps import getctype
- arg_types,arg_types2 = [],[]
- if l_and(isstringfunction,l_not(isfunction_wrap))(rout):
- arg_types.extend(['char*','size_t'])
+ arg_types, arg_types2 = [], []
+ if l_and(isstringfunction, l_not(isfunction_wrap))(rout):
+ arg_types.extend(['char*', 'size_t'])
for n in rout['args']:
var = rout['vars'][n]
if isintent_callback(var):
@@ -532,7 +532,7 @@ def getcallprotoargument(rout,cb_map={}):
ctype = cb_map[n]+'_typedef'
else:
ctype = getctype(var)
- if l_and(isintent_c,l_or(isscalar,iscomplex))(var):
+ if l_and(isintent_c, l_or(isscalar, iscomplex))(var):
pass
elif isstring(var):
pass
@@ -550,16 +550,16 @@ def getcallprotoargument(rout,cb_map={}):
return proto_args
def getusercode(rout):
- return getmultilineblock(rout,'usercode')
+ return getmultilineblock(rout, 'usercode')
def getusercode1(rout):
- return getmultilineblock(rout,'usercode',counter=1)
+ return getmultilineblock(rout, 'usercode', counter=1)
def getpymethoddef(rout):
- return getmultilineblock(rout,'pymethoddef')
+ return getmultilineblock(rout, 'pymethoddef')
def getargs(rout):
- sortargs,args=[],[]
+ sortargs, args=[], []
if 'args' in rout:
args=rout['args']
if 'sortvars' in rout:
@@ -569,10 +569,10 @@ def getargs(rout):
if a not in sortargs:
sortargs.append(a)
else: sortargs=rout['args']
- return args,sortargs
+ return args, sortargs
def getargs2(rout):
- sortargs,args=[],rout.get('args',[])
+ sortargs, args=[], rout.get('args', [])
auxvars = [a for a in rout['vars'].keys() if isintent_aux(rout['vars'][a])\
and a not in args]
args = auxvars + args
@@ -583,23 +583,23 @@ def getargs2(rout):
if a not in sortargs:
sortargs.append(a)
else: sortargs=auxvars + rout['args']
- return args,sortargs
+ return args, sortargs
def getrestdoc(rout):
if 'f2pymultilines' not in rout:
return None
k = None
if rout['block']=='python module':
- k = rout['block'],rout['name']
- return rout['f2pymultilines'].get(k,None)
+ k = rout['block'], rout['name']
+ return rout['f2pymultilines'].get(k, None)
def gentitle(name):
l=(80-len(name)-6)//2
- return '/*%s %s %s*/'%(l*'*',name,l*'*')
+ return '/*%s %s %s*/'%(l*'*', name, l*'*')
def flatlist(l):
if isinstance(l, list):
- return reduce(lambda x,y,f=flatlist:x+f(y),l,[])
+ return reduce(lambda x,y,f=flatlist:x+f(y), l, [])
return [l]
def stripcomma(s):
@@ -619,15 +619,15 @@ def replace(str,d,defaultsep=''):
else:
sep=defaultsep
if isinstance(d[k], list):
- str=str.replace('#%s#'%(k),sep.join(flatlist(d[k])))
+ str=str.replace('#%s#'%(k), sep.join(flatlist(d[k])))
else:
- str=str.replace('#%s#'%(k),d[k])
+ str=str.replace('#%s#'%(k), d[k])
return str
-def dictappend(rd,ar):
+def dictappend(rd, ar):
if isinstance(ar, list):
for a in ar:
- rd=dictappend(rd,a)
+ rd=dictappend(rd, a)
return rd
for k in ar.keys():
if k[0]=='_':
@@ -647,7 +647,7 @@ def dictappend(rd,ar):
if k1 not in rd[k]:
rd[k][k1]=ar[k][k1]
else:
- rd[k]=dictappend(rd[k],ar[k])
+ rd[k]=dictappend(rd[k], ar[k])
else:
rd[k]=ar[k]
return rd
@@ -656,15 +656,15 @@ def applyrules(rules,d,var={}):
ret={}
if isinstance(rules, list):
for r in rules:
- rr=applyrules(r,d,var)
- ret=dictappend(ret,rr)
+ rr=applyrules(r, d, var)
+ ret=dictappend(ret, rr)
if '_break' in rr:
break
return ret
if '_check' in rules and (not rules['_check'](var)):
return ret
if 'need' in rules:
- res = applyrules({'needs':rules['need']},d,var)
+ res = applyrules({'needs':rules['need']}, d, var)
if 'needs' in res:
cfuncs.append_needs(res['needs'])
@@ -672,11 +672,11 @@ def applyrules(rules,d,var={}):
if k=='separatorsfor':
ret[k]=rules[k]; continue
if isinstance(rules[k], str):
- ret[k]=replace(rules[k],d)
+ ret[k]=replace(rules[k], d)
elif isinstance(rules[k], list):
ret[k]=[]
for i in rules[k]:
- ar=applyrules({k:i},d,var)
+ ar=applyrules({k:i}, d, var)
if k in ar:
ret[k].append(ar[k])
elif k[0]=='_':
@@ -688,19 +688,19 @@ def applyrules(rules,d,var={}):
if isinstance(rules[k][k1], list):
for i in rules[k][k1]:
if isinstance(i, dict):
- res=applyrules({'supertext':i},d,var)
+ res=applyrules({'supertext':i}, d, var)
if 'supertext' in res:
i=res['supertext']
else: i=''
- ret[k].append(replace(i,d))
+ ret[k].append(replace(i, d))
else:
i=rules[k][k1]
if isinstance(i, dict):
- res=applyrules({'supertext':i},d)
+ res=applyrules({'supertext':i}, d)
if 'supertext' in res:
i=res['supertext']
else: i=''
- ret[k].append(replace(i,d))
+ ret[k].append(replace(i, d))
else:
errmess('applyrules: ignoring rule %s.\n'%repr(rules[k]))
if isinstance(ret[k], list):
diff --git a/numpy/f2py/capi_maps.py b/numpy/f2py/capi_maps.py
index 41bca45d2..536a576dd 100644
--- a/numpy/f2py/capi_maps.py
+++ b/numpy/f2py/capi_maps.py
@@ -34,22 +34,22 @@ lcb_map={}
lcb2_map={}
# forced casting: mainly caused by the fact that Python or Numeric
# C/APIs do not support the corresponding C types.
-c2py_map={'double':'float',
- 'float':'float', # forced casting
- 'long_double':'float', # forced casting
- 'char':'int', # forced casting
- 'signed_char':'int', # forced casting
- 'unsigned_char':'int', # forced casting
- 'short':'int', # forced casting
- 'unsigned_short':'int', # forced casting
- 'int':'int', # (forced casting)
- 'long':'int',
- 'long_long':'long',
- 'unsigned':'int', # forced casting
- 'complex_float':'complex', # forced casting
- 'complex_double':'complex',
- 'complex_long_double':'complex', # forced casting
- 'string':'string',
+c2py_map={'double': 'float',
+ 'float': 'float', # forced casting
+ 'long_double': 'float', # forced casting
+ 'char': 'int', # forced casting
+ 'signed_char': 'int', # forced casting
+ 'unsigned_char': 'int', # forced casting
+ 'short': 'int', # forced casting
+ 'unsigned_short': 'int', # forced casting
+ 'int': 'int', # (forced casting)
+ 'long': 'int',
+ 'long_long': 'long',
+ 'unsigned': 'int', # forced casting
+ 'complex_float': 'complex', # forced casting
+ 'complex_double': 'complex',
+ 'complex_long_double': 'complex', # forced casting
+ 'string': 'string',
}
c2capi_map={'double':'NPY_DOUBLE',
'float':'NPY_FLOAT',
@@ -71,24 +71,24 @@ c2capi_map={'double':'NPY_DOUBLE',
#These new maps aren't used anyhere yet, but should be by default
# unless building numeric or numarray extensions.
if using_newcore:
- c2capi_map={'double':'NPY_DOUBLE',
- 'float':'NPY_FLOAT',
- 'long_double':'NPY_LONGDOUBLE',
- 'char':'NPY_BYTE',
- 'unsigned_char':'NPY_UBYTE',
- 'signed_char':'NPY_BYTE',
- 'short':'NPY_SHORT',
- 'unsigned_short':'NPY_USHORT',
- 'int':'NPY_INT',
- 'unsigned':'NPY_UINT',
- 'long':'NPY_LONG',
- 'unsigned_long':'NPY_ULONG',
- 'long_long':'NPY_LONGLONG',
- 'unsigned_long_long':'NPY_ULONGLONG',
- 'complex_float':'NPY_CFLOAT',
- 'complex_double':'NPY_CDOUBLE',
- 'complex_long_double':'NPY_CDOUBLE',
- 'string':'NPY_CHAR', # f2py 2e is not ready for NPY_STRING (must set itemisize etc)
+ c2capi_map={'double': 'NPY_DOUBLE',
+ 'float': 'NPY_FLOAT',
+ 'long_double': 'NPY_LONGDOUBLE',
+ 'char': 'NPY_BYTE',
+ 'unsigned_char': 'NPY_UBYTE',
+ 'signed_char': 'NPY_BYTE',
+ 'short': 'NPY_SHORT',
+ 'unsigned_short': 'NPY_USHORT',
+ 'int': 'NPY_INT',
+ 'unsigned': 'NPY_UINT',
+ 'long': 'NPY_LONG',
+ 'unsigned_long': 'NPY_ULONG',
+ 'long_long': 'NPY_LONGLONG',
+ 'unsigned_long_long': 'NPY_ULONGLONG',
+ 'complex_float': 'NPY_CFLOAT',
+ 'complex_double': 'NPY_CDOUBLE',
+ 'complex_long_double': 'NPY_CDOUBLE',
+ 'string': 'NPY_CHAR', # f2py 2e is not ready for NPY_STRING (must set itemisize etc)
#'string':'NPY_STRING'
}
@@ -175,10 +175,10 @@ if os.path.isfile('.f2py_f2cmap'):
# in type specifications.
try:
outmess('Reading .f2py_f2cmap ...\n')
- f = open('.f2py_f2cmap','r')
- d = eval(f.read(),{},{})
+ f = open('.f2py_f2cmap', 'r')
+ d = eval(f.read(), {}, {})
f.close()
- for k,d1 in d.items():
+ for k, d1 in d.items():
for k1 in d1.keys():
d1[k1.lower()] = d1[k1]
d[k.lower()] = d[k]
@@ -188,31 +188,31 @@ if os.path.isfile('.f2py_f2cmap'):
for k1 in d[k].keys():
if d[k][k1] in c2py_map:
if k1 in f2cmap_all[k]:
- outmess("\tWarning: redefinition of {'%s':{'%s':'%s'->'%s'}}\n"%(k,k1,f2cmap_all[k][k1],d[k][k1]))
+ outmess("\tWarning: redefinition of {'%s':{'%s':'%s'->'%s'}}\n"%(k, k1, f2cmap_all[k][k1], d[k][k1]))
f2cmap_all[k][k1] = d[k][k1]
- outmess('\tMapping "%s(kind=%s)" to "%s"\n' % (k,k1,d[k][k1]))
+ outmess('\tMapping "%s(kind=%s)" to "%s"\n' % (k, k1, d[k][k1]))
else:
- errmess("\tIgnoring map {'%s':{'%s':'%s'}}: '%s' must be in %s\n"%(k,k1,d[k][k1],d[k][k1],list(c2py_map.keys())))
+ errmess("\tIgnoring map {'%s':{'%s':'%s'}}: '%s' must be in %s\n"%(k, k1, d[k][k1], d[k][k1], list(c2py_map.keys())))
outmess('Succesfully applied user defined changes from .f2py_f2cmap\n')
except Exception as msg:
errmess('Failed to apply user defined changes from .f2py_f2cmap: %s. Skipping.\n' % (msg))
-cformat_map={'double':'%g',
- 'float':'%g',
- 'long_double':'%Lg',
- 'char':'%d',
- 'signed_char':'%d',
- 'unsigned_char':'%hhu',
- 'short':'%hd',
- 'unsigned_short':'%hu',
- 'int':'%d',
- 'unsigned':'%u',
- 'long':'%ld',
- 'unsigned_long':'%lu',
- 'long_long':'%ld',
- 'complex_float':'(%g,%g)',
- 'complex_double':'(%g,%g)',
- 'complex_long_double':'(%Lg,%Lg)',
- 'string':'%s',
+cformat_map={'double': '%g',
+ 'float': '%g',
+ 'long_double': '%Lg',
+ 'char': '%d',
+ 'signed_char': '%d',
+ 'unsigned_char': '%hhu',
+ 'short': '%hd',
+ 'unsigned_short': '%hu',
+ 'int': '%d',
+ 'unsigned': '%u',
+ 'long': '%ld',
+ 'unsigned_long': '%lu',
+ 'long_long': '%ld',
+ 'complex_float': '(%g,%g)',
+ 'complex_double': '(%g,%g)',
+ 'complex_long_double': '(%Lg,%Lg)',
+ 'string': '%s',
}
############### Auxiliary functions
@@ -241,7 +241,7 @@ def getctype(var):
try:
ctype=f2cmap[var['kindselector']['*']]
except KeyError:
- errmess('getctype: "%s %s %s" not supported.\n'%(var['typespec'],'*',var['kindselector']['*']))
+ errmess('getctype: "%s %s %s" not supported.\n'%(var['typespec'], '*', var['kindselector']['*']))
elif 'kind' in var['kindselector']:
if typespec+'kind' in f2cmap_all:
f2cmap=f2cmap_all[typespec+'kind']
@@ -254,8 +254,8 @@ def getctype(var):
ctype=f2cmap[str(var['kindselector']['kind'])]
except KeyError:
errmess('getctype: "%s(kind=%s)" is mapped to C "%s" (to override define dict(%s = dict(%s="<C typespec>")) in %s/.f2py_f2cmap file).\n'\
- %(typespec,var['kindselector']['kind'], ctype,
- typespec,var['kindselector']['kind'], os.getcwd()))
+ %(typespec, var['kindselector']['kind'], ctype,
+ typespec, var['kindselector']['kind'], os.getcwd()))
else:
if not isexternal(var):
@@ -281,7 +281,7 @@ def getstrlength(var):
len=a['*']
elif 'len' in a:
len=a['len']
- if re.match(r'\(\s*([*]|[:])\s*\)',len) or re.match(r'([*]|[:])',len):
+ if re.match(r'\(\s*([*]|[:])\s*\)', len) or re.match(r'([*]|[:])', len):
#if len in ['(*)','*','(:)',':']:
if isintent_hide(var):
errmess('getstrlength:intent(hide): expected a string with defined length but got: %s\n'%(repr(var)))
@@ -314,35 +314,35 @@ def getarrdims(a,var,verbose=0):
if dim[i] in depargs: v=[dim[i]]
else:
for va in depargs:
- if re.match(r'.*?\b%s\b.*'%va,dim[i]):
+ if re.match(r'.*?\b%s\b.*'%va, dim[i]):
v.append(va)
for va in v:
if depargs.index(va)>depargs.index(a):
dim[i]='*'
break
- ret['setdims'],i='',-1
+ ret['setdims'], i='', -1
for d in dim:
i=i+1
- if d not in ['*',':','(*)','(:)']:
- ret['setdims']='%s#varname#_Dims[%d]=%s,'%(ret['setdims'],i,d)
+ if d not in ['*', ':', '(*)', '(:)']:
+ ret['setdims']='%s#varname#_Dims[%d]=%s,'%(ret['setdims'], i, d)
if ret['setdims']: ret['setdims']=ret['setdims'][:-1]
- ret['cbsetdims'],i='',-1
+ ret['cbsetdims'], i='', -1
for d in var['dimension']:
i=i+1
- if d not in ['*',':','(*)','(:)']:
- ret['cbsetdims']='%s#varname#_Dims[%d]=%s,'%(ret['cbsetdims'],i,d)
+ if d not in ['*', ':', '(*)', '(:)']:
+ ret['cbsetdims']='%s#varname#_Dims[%d]=%s,'%(ret['cbsetdims'], i, d)
elif isintent_in(var):
outmess('getarrdims:warning: assumed shape array, using 0 instead of %r\n' \
% (d))
- ret['cbsetdims']='%s#varname#_Dims[%d]=%s,'%(ret['cbsetdims'],i,0)
+ ret['cbsetdims']='%s#varname#_Dims[%d]=%s,'%(ret['cbsetdims'], i, 0)
elif verbose :
- errmess('getarrdims: If in call-back function: array argument %s must have bounded dimensions: got %s\n'%(repr(a),repr(d)))
+ errmess('getarrdims: If in call-back function: array argument %s must have bounded dimensions: got %s\n'%(repr(a), repr(d)))
if ret['cbsetdims']: ret['cbsetdims']=ret['cbsetdims'][:-1]
# if not isintent_c(var):
# var['dimension'].reverse()
return ret
-def getpydocsign(a,var):
+def getpydocsign(a, var):
global lcb_map
if isfunction(var):
if 'result' in var:
@@ -350,11 +350,11 @@ def getpydocsign(a,var):
else:
af=var['name']
if af in var['vars']:
- return getpydocsign(af,var['vars'][af])
+ return getpydocsign(af, var['vars'][af])
else:
errmess('getctype: function %s has no return value?!\n'%af)
- return '',''
- sig,sigout=a,a
+ return '', ''
+ sig, sigout=a, a
opt=''
if isintent_in(var): opt='input'
elif isintent_inout(var): opt='in/output'
@@ -368,63 +368,63 @@ def getpydocsign(a,var):
ctype=getctype(var)
if hasinitvalue(var):
- init,showinit=getinit(a,var)
+ init, showinit=getinit(a, var)
init = ', optional\\n Default: %s' % showinit
if isscalar(var):
if isintent_inout(var):
- sig='%s : %s rank-0 array(%s,\'%s\')%s'%(a,opt,c2py_map[ctype],
+ sig='%s : %s rank-0 array(%s,\'%s\')%s'%(a, opt, c2py_map[ctype],
c2pycode_map[ctype], init)
else:
- sig='%s : %s %s%s'%(a,opt,c2py_map[ctype],init)
- sigout='%s : %s'%(out_a,c2py_map[ctype])
+ sig='%s : %s %s%s'%(a, opt, c2py_map[ctype], init)
+ sigout='%s : %s'%(out_a, c2py_map[ctype])
elif isstring(var):
if isintent_inout(var):
- sig='%s : %s rank-0 array(string(len=%s),\'c\')%s'%(a,opt,getstrlength(var),init)
+ sig='%s : %s rank-0 array(string(len=%s),\'c\')%s'%(a, opt, getstrlength(var), init)
else:
- sig='%s : %s string(len=%s)%s'%(a,opt,getstrlength(var),init)
- sigout='%s : string(len=%s)'%(out_a,getstrlength(var))
+ sig='%s : %s string(len=%s)%s'%(a, opt, getstrlength(var), init)
+ sigout='%s : string(len=%s)'%(out_a, getstrlength(var))
elif isarray(var):
dim=var['dimension']
rank=repr(len(dim))
- sig='%s : %s rank-%s array(\'%s\') with bounds (%s)%s'%(a,opt,rank,
+ sig='%s : %s rank-%s array(\'%s\') with bounds (%s)%s'%(a, opt, rank,
c2pycode_map[ctype],
','.join(dim), init)
if a==out_a:
sigout='%s : rank-%s array(\'%s\') with bounds (%s)'\
- %(a,rank,c2pycode_map[ctype],','.join(dim))
+ %(a, rank, c2pycode_map[ctype], ','.join(dim))
else:
sigout='%s : rank-%s array(\'%s\') with bounds (%s) and %s storage'\
- %(out_a,rank,c2pycode_map[ctype],','.join(dim),a)
+ %(out_a, rank, c2pycode_map[ctype], ','.join(dim), a)
elif isexternal(var):
ua=''
if a in lcb_map and lcb_map[a] in lcb2_map and 'argname' in lcb2_map[lcb_map[a]]:
ua=lcb2_map[lcb_map[a]]['argname']
if not ua==a: ua=' => %s'%ua
else: ua=''
- sig='%s : call-back function%s'%(a,ua)
+ sig='%s : call-back function%s'%(a, ua)
sigout=sig
else:
errmess('getpydocsign: Could not resolve docsignature for "%s".\\n'%a)
- return sig,sigout
+ return sig, sigout
-def getarrdocsign(a,var):
+def getarrdocsign(a, var):
ctype=getctype(var)
if isstring(var) and (not isarray(var)):
- sig='%s : rank-0 array(string(len=%s),\'c\')'%(a,getstrlength(var))
+ sig='%s : rank-0 array(string(len=%s),\'c\')'%(a, getstrlength(var))
elif isscalar(var):
- sig='%s : rank-0 array(%s,\'%s\')'%(a,c2py_map[ctype],
+ sig='%s : rank-0 array(%s,\'%s\')'%(a, c2py_map[ctype],
c2pycode_map[ctype],)
elif isarray(var):
dim=var['dimension']
rank=repr(len(dim))
- sig='%s : rank-%s array(\'%s\') with bounds (%s)'%(a,rank,
+ sig='%s : rank-%s array(\'%s\') with bounds (%s)'%(a, rank,
c2pycode_map[ctype],
','.join(dim))
return sig
-def getinit(a,var):
- if isstring(var): init,showinit='""',"''"
- else: init,showinit='',''
+def getinit(a, var):
+ if isstring(var): init, showinit='""', "''"
+ else: init, showinit='', ''
if hasinitvalue(var):
init=var['=']
showinit=init
@@ -434,22 +434,22 @@ def getinit(a,var):
try:
v = var["="]
if ',' in v:
- ret['init.r'],ret['init.i']=markoutercomma(v[1:-1]).split('@,@')
+ ret['init.r'], ret['init.i']=markoutercomma(v[1:-1]).split('@,@')
else:
- v = eval(v,{},{})
- ret['init.r'],ret['init.i']=str(v.real),str(v.imag)
+ v = eval(v, {}, {})
+ ret['init.r'], ret['init.i']=str(v.real), str(v.imag)
except:
raise ValueError('getinit: expected complex number `(r,i)\' but got `%s\' as initial value of %r.' % (init, a))
if isarray(var):
- init='(capi_c.r=%s,capi_c.i=%s,capi_c)'%(ret['init.r'],ret['init.i'])
+ init='(capi_c.r=%s,capi_c.i=%s,capi_c)'%(ret['init.r'], ret['init.i'])
elif isstring(var):
- if not init: init,showinit='""',"''"
+ if not init: init, showinit='""', "''"
if init[0]=="'":
- init='"%s"'%(init[1:-1].replace('"','\\"'))
+ init='"%s"'%(init[1:-1].replace('"', '\\"'))
if init[0]=='"': showinit="'%s'"%(init[1:-1])
- return init,showinit
+ return init, showinit
-def sign2map(a,var):
+def sign2map(a, var):
"""
varname,ctype,atype
init,init.r,init.i,pytype
@@ -457,7 +457,7 @@ def sign2map(a,var):
varrfromat
intent
"""
- global lcb_map,cb_map
+ global lcb_map, cb_map
out_a = a
if isintent_out(var):
for k in var['intent']:
@@ -467,7 +467,7 @@ def sign2map(a,var):
ret={'varname':a,'outvarname':out_a}
ret['ctype']=getctype(var)
intent_flags = []
- for f,s in isintent_dict.items():
+ for f, s in isintent_dict.items():
if f(var): intent_flags.append('F2PY_%s'%s)
if intent_flags:
#XXX: Evaluate intent_flags here.
@@ -478,9 +478,9 @@ def sign2map(a,var):
elif ret['ctype'] in c2buildvalue_map:
ret['varrformat']=c2buildvalue_map[ret['ctype']]
else: ret['varrformat']='O'
- ret['init'],ret['showinit']=getinit(a,var)
+ ret['init'], ret['showinit']=getinit(a, var)
if hasinitvalue(var) and iscomplex(var) and not isarray(var):
- ret['init.r'],ret['init.i'] = markoutercomma(ret['init'][1:-1]).split('@,@')
+ ret['init.r'], ret['init.i'] = markoutercomma(ret['init'][1:-1]).split('@,@')
if isexternal(var):
ret['cbnamekey']=a
if a in lcb_map:
@@ -491,59 +491,59 @@ def sign2map(a,var):
ret['cblatexdocstr']=lcb2_map[lcb_map[a]]['latexdocstr']
else:
ret['cbname']=a
- errmess('sign2map: Confused: external %s is not in lcb_map%s.\n'%(a,list(lcb_map.keys())))
+ errmess('sign2map: Confused: external %s is not in lcb_map%s.\n'%(a, list(lcb_map.keys())))
if isstring(var):
ret['length']=getstrlength(var)
if isarray(var):
- ret=dictappend(ret,getarrdims(a,var))
+ ret=dictappend(ret, getarrdims(a, var))
dim=copy.copy(var['dimension'])
if ret['ctype'] in c2capi_map:
ret['atype']=c2capi_map[ret['ctype']]
# Debug info
if debugcapi(var):
- il=[isintent_in,'input',isintent_out,'output',
- isintent_inout,'inoutput',isrequired,'required',
- isoptional,'optional',isintent_hide,'hidden',
- iscomplex,'complex scalar',
- l_and(isscalar,l_not(iscomplex)),'scalar',
- isstring,'string',isarray,'array',
- iscomplexarray,'complex array',isstringarray,'string array',
- iscomplexfunction,'complex function',
- l_and(isfunction,l_not(iscomplexfunction)),'function',
- isexternal,'callback',
- isintent_callback,'callback',
- isintent_aux,'auxiliary',
+ il=[isintent_in, 'input', isintent_out, 'output',
+ isintent_inout, 'inoutput', isrequired, 'required',
+ isoptional, 'optional', isintent_hide, 'hidden',
+ iscomplex, 'complex scalar',
+ l_and(isscalar, l_not(iscomplex)), 'scalar',
+ isstring, 'string', isarray, 'array',
+ iscomplexarray, 'complex array', isstringarray, 'string array',
+ iscomplexfunction, 'complex function',
+ l_and(isfunction, l_not(iscomplexfunction)), 'function',
+ isexternal, 'callback',
+ isintent_callback, 'callback',
+ isintent_aux, 'auxiliary',
#ismutable,'mutable',l_not(ismutable),'immutable',
]
rl=[]
- for i in range(0,len(il),2):
+ for i in range(0, len(il), 2):
if il[i](var): rl.append(il[i+1])
if isstring(var):
- rl.append('slen(%s)=%s'%(a,ret['length']))
+ rl.append('slen(%s)=%s'%(a, ret['length']))
if isarray(var):
# if not isintent_c(var):
# var['dimension'].reverse()
- ddim=','.join(map(lambda x,y:'%s|%s'%(x,y),var['dimension'],dim))
+ ddim=','.join(map(lambda x, y:'%s|%s'%(x, y), var['dimension'], dim))
rl.append('dims(%s)'%ddim)
# if not isintent_c(var):
# var['dimension'].reverse()
if isexternal(var):
- ret['vardebuginfo']='debug-capi:%s=>%s:%s'%(a,ret['cbname'],','.join(rl))
+ ret['vardebuginfo']='debug-capi:%s=>%s:%s'%(a, ret['cbname'], ','.join(rl))
else:
- ret['vardebuginfo']='debug-capi:%s %s=%s:%s'%(ret['ctype'],a,ret['showinit'],','.join(rl))
+ ret['vardebuginfo']='debug-capi:%s %s=%s:%s'%(ret['ctype'], a, ret['showinit'], ','.join(rl))
if isscalar(var):
if ret['ctype'] in cformat_map:
- ret['vardebugshowvalue']='debug-capi:%s=%s'%(a,cformat_map[ret['ctype']])
+ ret['vardebugshowvalue']='debug-capi:%s=%s'%(a, cformat_map[ret['ctype']])
if isstring(var):
- ret['vardebugshowvalue']='debug-capi:slen(%s)=%%d %s=\\"%%s\\"'%(a,a)
+ ret['vardebugshowvalue']='debug-capi:slen(%s)=%%d %s=\\"%%s\\"'%(a, a)
if isexternal(var):
ret['vardebugshowvalue']='debug-capi:%s=%%p'%(a)
if ret['ctype'] in cformat_map:
- ret['varshowvalue']='#name#:%s=%s'%(a,cformat_map[ret['ctype']])
+ ret['varshowvalue']='#name#:%s=%s'%(a, cformat_map[ret['ctype']])
ret['showvalueformat']='%s'%(cformat_map[ret['ctype']])
if isstring(var):
- ret['varshowvalue']='#name#:slen(%s)=%%d %s=\\"%%s\\"'%(a,a)
- ret['pydocsign'],ret['pydocsignout']=getpydocsign(a,var)
+ ret['varshowvalue']='#name#:slen(%s)=%%d %s=\\"%%s\\"'%(a, a)
+ ret['pydocsign'], ret['pydocsignout']=getpydocsign(a, var)
if hasnote(var):
ret['note']=var['note']
return ret
@@ -557,17 +557,17 @@ def routsign2map(rout):
global lcb_map
name = rout['name']
fname = getfortranname(rout)
- ret={'name':name,
- 'texname':name.replace('_','\\_'),
- 'name_lower':name.lower(),
- 'NAME':name.upper(),
- 'begintitle':gentitle(name),
- 'endtitle':gentitle('end of %s'%name),
- 'fortranname':fname,
- 'FORTRANNAME':fname.upper(),
- 'callstatement':getcallstatement(rout) or '',
- 'usercode':getusercode(rout) or '',
- 'usercode1':getusercode1(rout) or '',
+ ret={'name': name,
+ 'texname': name.replace('_', '\\_'),
+ 'name_lower': name.lower(),
+ 'NAME': name.upper(),
+ 'begintitle': gentitle(name),
+ 'endtitle': gentitle('end of %s'%name),
+ 'fortranname': fname,
+ 'FORTRANNAME': fname.upper(),
+ 'callstatement': getcallstatement(rout) or '',
+ 'usercode': getusercode(rout) or '',
+ 'usercode1': getusercode1(rout) or '',
}
if '_' in fname:
ret['F_FUNC'] = 'F_FUNC_US'
@@ -590,15 +590,15 @@ def routsign2map(rout):
#else:
# errmess('routsign2map: cb_map does not contain module "%s" used in "use" statement.\n'%(u))
elif 'externals' in rout and rout['externals']:
- errmess('routsign2map: Confused: function %s has externals %s but no "use" statement.\n'%(ret['name'],repr(rout['externals'])))
- ret['callprotoargument'] = getcallprotoargument(rout,lcb_map) or ''
+ errmess('routsign2map: Confused: function %s has externals %s but no "use" statement.\n'%(ret['name'], repr(rout['externals'])))
+ ret['callprotoargument'] = getcallprotoargument(rout, lcb_map) or ''
if isfunction(rout):
if 'result' in rout:
a=rout['result']
else:
a=rout['name']
ret['rname']=a
- ret['pydocsign'],ret['pydocsignout']=getpydocsign(a,rout)
+ ret['pydocsign'], ret['pydocsignout']=getpydocsign(a, rout)
ret['ctype']=getctype(rout['vars'][a])
if hasresultnote(rout):
ret['resultnote']=rout['vars'][a]['note']
@@ -610,9 +610,9 @@ def routsign2map(rout):
errmess('routsign2map: no c2buildvalue key for type %s\n'%(repr(ret['ctype'])))
if debugcapi(rout):
if ret['ctype'] in cformat_map:
- ret['routdebugshowvalue']='debug-capi:%s=%s'%(a,cformat_map[ret['ctype']])
+ ret['routdebugshowvalue']='debug-capi:%s=%s'%(a, cformat_map[ret['ctype']])
if isstringfunction(rout):
- ret['routdebugshowvalue']='debug-capi:slen(%s)=%%d %s=\\"%%s\\"'%(a,a)
+ ret['routdebugshowvalue']='debug-capi:slen(%s)=%%d %s=\\"%%s\\"'%(a, a)
if isstringfunction(rout):
ret['rlength']=getstrlength(rout['vars'][a])
if ret['rlength']=='-1':
@@ -630,11 +630,11 @@ def modsign2map(m):
if ismodule(m):
ret={'f90modulename':m['name'],
'F90MODULENAME':m['name'].upper(),
- 'texf90modulename':m['name'].replace('_','\\_')}
+ 'texf90modulename':m['name'].replace('_', '\\_')}
else:
ret={'modulename':m['name'],
'MODULENAME':m['name'].upper(),
- 'texmodulename':m['name'].replace('_','\\_')}
+ 'texmodulename':m['name'].replace('_', '\\_')}
ret['restdoc'] = getrestdoc(m) or []
if hasnote(m):
ret['note']=m['note']
@@ -664,19 +664,19 @@ def cb_sign2map(a,var,index=None):
if ret['ctype'] in cformat_map:
ret['showvalueformat']='%s'%(cformat_map[ret['ctype']])
if isarray(var):
- ret=dictappend(ret,getarrdims(a,var))
- ret['pydocsign'],ret['pydocsignout']=getpydocsign(a,var)
+ ret=dictappend(ret, getarrdims(a, var))
+ ret['pydocsign'], ret['pydocsignout']=getpydocsign(a, var)
if hasnote(var):
ret['note']=var['note']
var['note']=['See elsewhere.']
return ret
-def cb_routsign2map(rout,um):
+def cb_routsign2map(rout, um):
"""
name,begintitle,endtitle,argname
ctype,rctype,maxnofargs,nofoptargs,returncptr
"""
- ret={'name':'cb_%s_in_%s'%(rout['name'],um),
+ ret={'name':'cb_%s_in_%s'%(rout['name'], um),
'returncptr':''}
if isintent_callback(rout):
if '_' in rout['name']:
@@ -722,7 +722,7 @@ return_value=
ret['note']=rout['vars'][a]['note']
rout['vars'][a]['note']=['See elsewhere.']
ret['rname']=a
- ret['pydocsign'],ret['pydocsignout']=getpydocsign(a,rout)
+ ret['pydocsign'], ret['pydocsignout']=getpydocsign(a, rout)
if iscomplexfunction(rout):
ret['rctype']="""
#ifdef F2PY_CB_RETURNCOMPLEX
@@ -740,7 +740,7 @@ void
if 'args' in rout and 'vars' in rout:
for a in rout['args']:
var=rout['vars'][a]
- if l_or(isintent_in,isintent_inout)(var):
+ if l_or(isintent_in, isintent_inout)(var):
nofargs=nofargs+1
if isoptional(var):
nofoptargs=nofoptargs+1
@@ -751,7 +751,7 @@ void
rout['note']=['See elsewhere.']
return ret
-def common_sign2map(a,var): # obsolute
+def common_sign2map(a, var): # obsolute
ret={'varname':a}
ret['ctype']=getctype(var)
if isstringarray(var):
@@ -761,13 +761,13 @@ def common_sign2map(a,var): # obsolute
if ret['ctype'] in cformat_map:
ret['showvalueformat']='%s'%(cformat_map[ret['ctype']])
if isarray(var):
- ret=dictappend(ret,getarrdims(a,var))
+ ret=dictappend(ret, getarrdims(a, var))
elif isstring(var):
ret['size']=getstrlength(var)
ret['rank']='1'
- ret['pydocsign'],ret['pydocsignout']=getpydocsign(a,var)
+ ret['pydocsign'], ret['pydocsignout']=getpydocsign(a, var)
if hasnote(var):
ret['note']=var['note']
var['note']=['See elsewhere.']
- ret['arrdocstr']=getarrdocsign(a,var) # for strings this returns 0-rank but actually is 1-rank
+ ret['arrdocstr']=getarrdocsign(a, var) # for strings this returns 0-rank but actually is 1-rank
return ret
diff --git a/numpy/f2py/cb_rules.py b/numpy/f2py/cb_rules.py
index f80ab06f0..f3bf848a7 100644
--- a/numpy/f2py/cb_rules.py
+++ b/numpy/f2py/cb_rules.py
@@ -127,7 +127,7 @@ capi_return_pt:
}
#endtitle#
""",
- 'need':['setjmp.h','CFUNCSMESS'],
+ 'need':['setjmp.h', 'CFUNCSMESS'],
'maxnofargs':'#maxnofargs#',
'nofoptargs':'#nofoptargs#',
'docstr':"""\
@@ -142,42 +142,42 @@ capi_return_pt:
}
cb_rout_rules=[
{# Init
- 'separatorsfor':{'decl':'\n',
- 'args':',','optargs':'','pyobjfrom':'\n','freemem':'\n',
- 'args_td':',','optargs_td':'',
- 'args_nm':',','optargs_nm':'',
- 'frompyobj':'\n','setdims':'\n',
- 'docstrsigns':'\\n"\n"',
- 'latexdocstrsigns':'\n',
- 'latexdocstrreq':'\n','latexdocstropt':'\n',
- 'latexdocstrout':'\n','latexdocstrcbs':'\n',
+ 'separatorsfor': {'decl': '\n',
+ 'args': ',', 'optargs': '', 'pyobjfrom': '\n', 'freemem': '\n',
+ 'args_td': ',', 'optargs_td': '',
+ 'args_nm': ',', 'optargs_nm': '',
+ 'frompyobj': '\n', 'setdims': '\n',
+ 'docstrsigns': '\\n"\n"',
+ 'latexdocstrsigns': '\n',
+ 'latexdocstrreq': '\n', 'latexdocstropt': '\n',
+ 'latexdocstrout': '\n', 'latexdocstrcbs': '\n',
},
- 'decl':'/*decl*/','pyobjfrom':'/*pyobjfrom*/','frompyobj':'/*frompyobj*/',
- 'args':[],'optargs':'','return':'','strarglens':'','freemem':'/*freemem*/',
- 'args_td':[],'optargs_td':'','strarglens_td':'',
- 'args_nm':[],'optargs_nm':'','strarglens_nm':'',
- 'noargs':'',
- 'setdims':'/*setdims*/',
- 'docstrsigns':'','latexdocstrsigns':'',
- 'docstrreq':'\tRequired arguments:',
- 'docstropt':'\tOptional arguments:',
- 'docstrout':'\tReturn objects:',
- 'docstrcbs':'\tCall-back functions:',
- 'docreturn':'','docsign':'','docsignopt':'',
- 'latexdocstrreq':'\\noindent Required arguments:',
- 'latexdocstropt':'\\noindent Optional arguments:',
- 'latexdocstrout':'\\noindent Return objects:',
- 'latexdocstrcbs':'\\noindent Call-back functions:',
- 'routnote':{hasnote:'--- #note#',l_not(hasnote):''},
- },{ # Function
+ 'decl': '/*decl*/', 'pyobjfrom': '/*pyobjfrom*/', 'frompyobj': '/*frompyobj*/',
+ 'args': [], 'optargs': '', 'return': '', 'strarglens': '', 'freemem': '/*freemem*/',
+ 'args_td': [], 'optargs_td': '', 'strarglens_td': '',
+ 'args_nm': [], 'optargs_nm': '', 'strarglens_nm': '',
+ 'noargs': '',
+ 'setdims': '/*setdims*/',
+ 'docstrsigns': '', 'latexdocstrsigns': '',
+ 'docstrreq': '\tRequired arguments:',
+ 'docstropt': '\tOptional arguments:',
+ 'docstrout': '\tReturn objects:',
+ 'docstrcbs': '\tCall-back functions:',
+ 'docreturn': '', 'docsign': '', 'docsignopt': '',
+ 'latexdocstrreq': '\\noindent Required arguments:',
+ 'latexdocstropt': '\\noindent Optional arguments:',
+ 'latexdocstrout': '\\noindent Return objects:',
+ 'latexdocstrcbs': '\\noindent Call-back functions:',
+ 'routnote': {hasnote:'--- #note#',l_not(hasnote):''},
+ }, { # Function
'decl':'\t#ctype# return_value;',
'frompyobj':[{debugcapi:'\tCFUNCSMESS("cb:Getting return_value->");'},
'\tif (capi_j>capi_i)\n\t\tGETSCALARFROMPYTUPLE(capi_return,capi_i++,&return_value,#ctype#,"#ctype#_from_pyobj failed in converting return_value of call-back function #name# to C #ctype#\\n");',
{debugcapi:'\tfprintf(stderr,"#showvalueformat#.\\n",return_value);'}
],
- 'need':['#ctype#_from_pyobj',{debugcapi:'CFUNCSMESS'},'GETSCALARFROMPYTUPLE'],
+ 'need':['#ctype#_from_pyobj', {debugcapi:'CFUNCSMESS'}, 'GETSCALARFROMPYTUPLE'],
'return':'\treturn return_value;',
- '_check':l_and(isfunction,l_not(isstringfunction),l_not(iscomplexfunction))
+ '_check':l_and(isfunction, l_not(isstringfunction), l_not(iscomplexfunction))
},
{# String function
'pyobjfrom':{debugcapi:'\tfprintf(stderr,"debug-capi:cb:#name#:%d:\\n",return_value_len);'},
@@ -189,8 +189,8 @@ cb_rout_rules=[
\t\tGETSTRFROMPYTUPLE(capi_return,capi_i++,return_value,return_value_len);""",
{debugcapi:'\tfprintf(stderr,"#showvalueformat#\\".\\n",return_value);'}
],
- 'need':['#ctype#_from_pyobj',{debugcapi:'CFUNCSMESS'},
- 'string.h','GETSTRFROMPYTUPLE'],
+ 'need':['#ctype#_from_pyobj', {debugcapi:'CFUNCSMESS'},
+ 'string.h', 'GETSTRFROMPYTUPLE'],
'return':'return;',
'_check':isstringfunction
},
@@ -240,8 +240,8 @@ return_value
\treturn;
#endif
""",
- 'need':['#ctype#_from_pyobj',{debugcapi:'CFUNCSMESS'},
- 'string.h','GETSCALARFROMPYTUPLE','#ctype#'],
+ 'need':['#ctype#_from_pyobj', {debugcapi:'CFUNCSMESS'},
+ 'string.h', 'GETSCALARFROMPYTUPLE', '#ctype#'],
'_check':iscomplexfunction
},
{'docstrout':'\t\t#pydocsignout#',
@@ -254,59 +254,59 @@ return_value
cb_arg_rules=[
{ # Doc
- 'docstropt':{l_and(isoptional,isintent_nothide):'\t\t#pydocsign#'},
- 'docstrreq':{l_and(isrequired,isintent_nothide):'\t\t#pydocsign#'},
+ 'docstropt':{l_and(isoptional, isintent_nothide):'\t\t#pydocsign#'},
+ 'docstrreq':{l_and(isrequired, isintent_nothide):'\t\t#pydocsign#'},
'docstrout':{isintent_out:'\t\t#pydocsignout#'},
- 'latexdocstropt':{l_and(isoptional,isintent_nothide):['\\item[]{{}\\verb@#pydocsign#@{}}',
+ 'latexdocstropt':{l_and(isoptional, isintent_nothide):['\\item[]{{}\\verb@#pydocsign#@{}}',
{hasnote:'--- #note#'}]},
- 'latexdocstrreq':{l_and(isrequired,isintent_nothide):['\\item[]{{}\\verb@#pydocsign#@{}}',
+ 'latexdocstrreq':{l_and(isrequired, isintent_nothide):['\\item[]{{}\\verb@#pydocsign#@{}}',
{hasnote:'--- #note#'}]},
'latexdocstrout':{isintent_out:['\\item[]{{}\\verb@#pydocsignout#@{}}',
- {l_and(hasnote,isintent_hide):'--- #note#',
- l_and(hasnote,isintent_nothide):'--- See above.'}]},
- 'docsign':{l_and(isrequired,isintent_nothide):'#varname#,'},
- 'docsignopt':{l_and(isoptional,isintent_nothide):'#varname#,'},
+ {l_and(hasnote, isintent_hide):'--- #note#',
+ l_and(hasnote, isintent_nothide):'--- See above.'}]},
+ 'docsign':{l_and(isrequired, isintent_nothide):'#varname#,'},
+ 'docsignopt':{l_and(isoptional, isintent_nothide):'#varname#,'},
'depend':''
},
{
- 'args':{
- l_and (isscalar,isintent_c):'#ctype# #varname_i#',
- l_and (isscalar,l_not(isintent_c)):'#ctype# *#varname_i#_cb_capi',
+ 'args': {
+ l_and (isscalar, isintent_c):'#ctype# #varname_i#',
+ l_and (isscalar, l_not(isintent_c)):'#ctype# *#varname_i#_cb_capi',
isarray:'#ctype# *#varname_i#',
isstring:'#ctype# #varname_i#'
},
- 'args_nm':{
- l_and (isscalar,isintent_c):'#varname_i#',
- l_and (isscalar,l_not(isintent_c)):'#varname_i#_cb_capi',
+ 'args_nm': {
+ l_and (isscalar, isintent_c):'#varname_i#',
+ l_and (isscalar, l_not(isintent_c)):'#varname_i#_cb_capi',
isarray:'#varname_i#',
isstring:'#varname_i#'
},
- 'args_td':{
- l_and (isscalar,isintent_c):'#ctype#',
- l_and (isscalar,l_not(isintent_c)):'#ctype# *',
+ 'args_td': {
+ l_and (isscalar, isintent_c):'#ctype#',
+ l_and (isscalar, l_not(isintent_c)):'#ctype# *',
isarray:'#ctype# *',
isstring:'#ctype#'
},
- 'strarglens':{isstring:',int #varname_i#_cb_len'}, # untested with multiple args
- 'strarglens_td':{isstring:',int'}, # untested with multiple args
- 'strarglens_nm':{isstring:',#varname_i#_cb_len'}, # untested with multiple args
+ 'strarglens': {isstring:',int #varname_i#_cb_len'}, # untested with multiple args
+ 'strarglens_td': {isstring:',int'}, # untested with multiple args
+ 'strarglens_nm': {isstring:',#varname_i#_cb_len'}, # untested with multiple args
},
{ # Scalars
'decl':{l_not(isintent_c):'\t#ctype# #varname_i#=(*#varname_i#_cb_capi);'},
- 'error': {l_and(isintent_c,isintent_out,
+ 'error': {l_and(isintent_c, isintent_out,
throw_error('intent(c,out) is forbidden for callback scalar arguments')):\
''},
'frompyobj':[{debugcapi:'\tCFUNCSMESS("cb:Getting #varname#->");'},
{isintent_out:'\tif (capi_j>capi_i)\n\t\tGETSCALARFROMPYTUPLE(capi_return,capi_i++,#varname_i#_cb_capi,#ctype#,"#ctype#_from_pyobj failed in converting argument #varname# of call-back function #name# to C #ctype#\\n");'},
- {l_and(debugcapi,l_and(l_not(iscomplex),isintent_c)):'\tfprintf(stderr,"#showvalueformat#.\\n",#varname_i#);'},
- {l_and(debugcapi,l_and(l_not(iscomplex),l_not(isintent_c))):'\tfprintf(stderr,"#showvalueformat#.\\n",*#varname_i#_cb_capi);'},
- {l_and(debugcapi,l_and(iscomplex,isintent_c)):'\tfprintf(stderr,"#showvalueformat#.\\n",(#varname_i#).r,(#varname_i#).i);'},
- {l_and(debugcapi,l_and(iscomplex,l_not(isintent_c))):'\tfprintf(stderr,"#showvalueformat#.\\n",(*#varname_i#_cb_capi).r,(*#varname_i#_cb_capi).i);'},
+ {l_and(debugcapi, l_and(l_not(iscomplex), isintent_c)):'\tfprintf(stderr,"#showvalueformat#.\\n",#varname_i#);'},
+ {l_and(debugcapi, l_and(l_not(iscomplex), l_not(isintent_c))):'\tfprintf(stderr,"#showvalueformat#.\\n",*#varname_i#_cb_capi);'},
+ {l_and(debugcapi, l_and(iscomplex, isintent_c)):'\tfprintf(stderr,"#showvalueformat#.\\n",(#varname_i#).r,(#varname_i#).i);'},
+ {l_and(debugcapi, l_and(iscomplex, l_not(isintent_c))):'\tfprintf(stderr,"#showvalueformat#.\\n",(*#varname_i#_cb_capi).r,(*#varname_i#_cb_capi).i);'},
],
- 'need':[{isintent_out:['#ctype#_from_pyobj','GETSCALARFROMPYTUPLE']},
+ 'need':[{isintent_out:['#ctype#_from_pyobj', 'GETSCALARFROMPYTUPLE']},
{debugcapi:'CFUNCSMESS'}],
'_check':isscalar
- },{
+ }, {
'pyobjfrom':[{isintent_in:"""\
\tif (#name#_nofargs>capi_i)
\t\tif (PyTuple_SetItem((PyObject *)capi_arglist,capi_i++,pyobj_from_#ctype#1(#varname_i#)))
@@ -318,18 +318,18 @@ cb_arg_rules=[
'need':[{isintent_in:'pyobj_from_#ctype#1'},
{isintent_inout:'pyarr_from_p_#ctype#1'},
{iscomplex:'#ctype#'}],
- '_check':l_and(isscalar,isintent_nothide),
+ '_check':l_and(isscalar, isintent_nothide),
'_optional':''
- },{# String
+ }, {# String
'frompyobj':[{debugcapi:'\tCFUNCSMESS("cb:Getting #varname#->\\"");'},
"""\tif (capi_j>capi_i)
\t\tGETSTRFROMPYTUPLE(capi_return,capi_i++,#varname_i#,#varname_i#_cb_len);""",
{debugcapi:'\tfprintf(stderr,"#showvalueformat#\\":%d:.\\n",#varname_i#,#varname_i#_cb_len);'},
],
- 'need':['#ctype#','GETSTRFROMPYTUPLE',
- {debugcapi:'CFUNCSMESS'},'string.h'],
- '_check':l_and(isstring,isintent_out)
- },{
+ 'need':['#ctype#', 'GETSTRFROMPYTUPLE',
+ {debugcapi:'CFUNCSMESS'}, 'string.h'],
+ '_check':l_and(isstring, isintent_out)
+ }, {
'pyobjfrom':[{debugcapi:'\tfprintf(stderr,"debug-capi:cb:#varname#=\\"#showvalueformat#\\":%d:\\n",#varname_i#,#varname_i#_cb_len);'},
{isintent_in:"""\
\tif (#name#_nofargs>capi_i)
@@ -343,7 +343,7 @@ cb_arg_rules=[
\t}"""}],
'need':[{isintent_in:'pyobj_from_#ctype#1size'},
{isintent_inout:'pyarr_from_p_#ctype#1'}],
- '_check':l_and(isstring,isintent_nothide),
+ '_check':l_and(isstring, isintent_nothide),
'_optional':''
},
# Array ...
@@ -354,12 +354,12 @@ cb_arg_rules=[
'_depend':''
},
{
- 'pyobjfrom':[{debugcapi:'\tfprintf(stderr,"debug-capi:cb:#varname#\\n");'},
- {isintent_c:"""\
+ 'pyobjfrom': [{debugcapi:'\tfprintf(stderr,"debug-capi:cb:#varname#\\n");'},
+ {isintent_c: """\
\tif (#name#_nofargs>capi_i) {
\t\tPyArrayObject *tmp_arr = (PyArrayObject *)PyArray_New(&PyArray_Type,#rank#,#varname_i#_Dims,#atype#,NULL,(char*)#varname_i#,0,NPY_CARRAY,NULL); /*XXX: Hmm, what will destroy this array??? */
""",
- l_not(isintent_c):"""\
+ l_not(isintent_c): """\
\tif (#name#_nofargs>capi_i) {
\t\tPyArrayObject *tmp_arr = (PyArrayObject *)PyArray_New(&PyArray_Type,#rank#,#varname_i#_Dims,#atype#,NULL,(char*)#varname_i#,0,NPY_FARRAY,NULL); /*XXX: Hmm, what will destroy this array??? */
""",
@@ -370,9 +370,9 @@ cb_arg_rules=[
\t\tif (PyTuple_SetItem((PyObject *)capi_arglist,capi_i++,(PyObject *)tmp_arr))
\t\t\tgoto capi_fail;
}"""],
- '_check':l_and(isarray,isintent_nothide,l_or(isintent_in,isintent_inout)),
- '_optional':'',
- },{
+ '_check': l_and(isarray, isintent_nothide, l_or(isintent_in, isintent_inout)),
+ '_optional': '',
+ }, {
'frompyobj':[{debugcapi:'\tCFUNCSMESS("cb:Getting #varname#->");'},
"""\tif (capi_j>capi_i) {
\t\tPyArrayObject *rv_cb_arr = NULL;
@@ -391,9 +391,9 @@ cb_arg_rules=[
\t}""",
{debugcapi:'\tfprintf(stderr,"<-.\\n");'},
],
- 'need':['MEMCOPY',{iscomplexarray:'#ctype#'}],
- '_check':l_and(isarray,isintent_out)
- },{
+ 'need':['MEMCOPY', {iscomplexarray:'#ctype#'}],
+ '_check':l_and(isarray, isintent_out)
+ }, {
'docreturn':'#varname#,',
'_check':isintent_out
}
@@ -408,28 +408,28 @@ def buildcallbacks(m):
if bi['block']=='interface':
for b in bi['body']:
if b:
- buildcallback(b,m['name'])
+ buildcallback(b, m['name'])
else:
errmess('warning: empty body for %s\n' % (m['name']))
-def buildcallback(rout,um):
+def buildcallback(rout, um):
global cb_map
from . import capi_maps
- outmess('\tConstructing call-back function "cb_%s_in_%s"\n'%(rout['name'],um))
- args,depargs=getargs(rout)
+ outmess('\tConstructing call-back function "cb_%s_in_%s"\n'%(rout['name'], um))
+ args, depargs=getargs(rout)
capi_maps.depargs=depargs
var=rout['vars']
- vrd=capi_maps.cb_routsign2map(rout,um)
- rd=dictappend({},vrd)
- cb_map[um].append([rout['name'],rd['name']])
+ vrd=capi_maps.cb_routsign2map(rout, um)
+ rd=dictappend({}, vrd)
+ cb_map[um].append([rout['name'], rd['name']])
for r in cb_rout_rules:
if ('_check' in r and r['_check'](rout)) or ('_check' not in r):
- ar=applyrules(r,vrd,rout)
- rd=dictappend(rd,ar)
+ ar=applyrules(r, vrd, rout)
+ rd=dictappend(rd, ar)
savevrd={}
- for i,a in enumerate(args):
- vrd=capi_maps.cb_sign2map(a,var[a], index=i)
+ for i, a in enumerate(args):
+ vrd=capi_maps.cb_sign2map(a, var[a], index=i)
savevrd[a]=vrd
for r in cb_arg_rules:
if '_depend' in r:
@@ -437,8 +437,8 @@ def buildcallback(rout,um):
if '_optional' in r and isoptional(var[a]):
continue
if ('_check' in r and r['_check'](var[a])) or ('_check' not in r):
- ar=applyrules(r,vrd,var[a])
- rd=dictappend(rd,ar)
+ ar=applyrules(r, vrd, var[a])
+ rd=dictappend(rd, ar)
if '_break' in r:
break
for a in args:
@@ -449,8 +449,8 @@ def buildcallback(rout,um):
if ('_optional' not in r) or ('_optional' in r and isrequired(var[a])):
continue
if ('_check' in r and r['_check'](var[a])) or ('_check' not in r):
- ar=applyrules(r,vrd,var[a])
- rd=dictappend(rd,ar)
+ ar=applyrules(r, vrd, var[a])
+ rd=dictappend(rd, ar)
if '_break' in r:
break
for a in depargs:
@@ -461,8 +461,8 @@ def buildcallback(rout,um):
if '_optional' in r:
continue
if ('_check' in r and r['_check'](var[a])) or ('_check' not in r):
- ar=applyrules(r,vrd,var[a])
- rd=dictappend(rd,ar)
+ ar=applyrules(r, vrd, var[a])
+ rd=dictappend(rd, ar)
if '_break' in r:
break
if 'args' in rd and 'optargs' in rd:
@@ -483,22 +483,22 @@ def buildcallback(rout,um):
#endif
"""]
if isinstance(rd['docreturn'], list):
- rd['docreturn']=stripcomma(replace('#docreturn#',{'docreturn':rd['docreturn']}))
+ rd['docreturn']=stripcomma(replace('#docreturn#', {'docreturn':rd['docreturn']}))
optargs=stripcomma(replace('#docsignopt#',
{'docsignopt':rd['docsignopt']}
))
if optargs=='':
- rd['docsignature']=stripcomma(replace('#docsign#',{'docsign':rd['docsign']}))
+ rd['docsignature']=stripcomma(replace('#docsign#', {'docsign':rd['docsign']}))
else:
rd['docsignature']=replace('#docsign#[#docsignopt#]',
- {'docsign':rd['docsign'],
- 'docsignopt':optargs,
+ {'docsign': rd['docsign'],
+ 'docsignopt': optargs,
})
- rd['latexdocsignature']=rd['docsignature'].replace('_','\\_')
- rd['latexdocsignature']=rd['latexdocsignature'].replace(',',', ')
+ rd['latexdocsignature']=rd['docsignature'].replace('_', '\\_')
+ rd['latexdocsignature']=rd['latexdocsignature'].replace(',', ', ')
rd['docstrsigns']=[]
rd['latexdocstrsigns']=[]
- for k in ['docstrreq','docstropt','docstrout','docstrcbs']:
+ for k in ['docstrreq', 'docstropt', 'docstrout', 'docstrcbs']:
if k in rd and isinstance(rd[k], list):
rd['docstrsigns']=rd['docstrsigns']+rd[k]
k='latex'+k
@@ -513,7 +513,7 @@ def buildcallback(rout,um):
if not (rd.get('args') or rd.get('optargs') or rd.get('strarglens')):
rd['noargs'] = 'void'
- ar=applyrules(cb_routine_rules,rd)
+ ar=applyrules(cb_routine_rules, rd)
cfuncs.callbacks[rd['name']]=ar['body']
if isinstance(ar['need'], str):
ar['need']=[ar['need']]
diff --git a/numpy/f2py/cfuncs.py b/numpy/f2py/cfuncs.py
index 2229c3e24..c8b529056 100644
--- a/numpy/f2py/cfuncs.py
+++ b/numpy/f2py/cfuncs.py
@@ -39,12 +39,12 @@ typedefs_generated={'typedefs_generated':'/*need_typedefs_generated*/'}
cppmacros={'cppmacros':'/*need_cppmacros*/'}
cfuncs={'cfuncs':'/*need_cfuncs*/'}
callbacks={'callbacks':'/*need_callbacks*/'}
-f90modhooks={'f90modhooks':'/*need_f90modhooks*/',
- 'initf90modhooksstatic':'/*initf90modhooksstatic*/',
- 'initf90modhooksdynamic':'/*initf90modhooksdynamic*/',
+f90modhooks={'f90modhooks': '/*need_f90modhooks*/',
+ 'initf90modhooksstatic': '/*initf90modhooksstatic*/',
+ 'initf90modhooksdynamic': '/*initf90modhooksdynamic*/',
}
-commonhooks={'commonhooks':'/*need_commonhooks*/',
- 'initcommonhooks':'/*need_initcommonhooks*/',
+commonhooks={'commonhooks': '/*need_commonhooks*/',
+ 'initcommonhooks': '/*need_initcommonhooks*/',
}
############ Includes ###################
@@ -419,7 +419,7 @@ cppmacros['TRYCOMPLEXPYARRAYTEMPLATE']="""\
## """
-needs['GETSTRFROMPYTUPLE']=['STRINGCOPYN','PRINTPYOBJERR']
+needs['GETSTRFROMPYTUPLE']=['STRINGCOPYN', 'PRINTPYOBJERR']
cppmacros['GETSTRFROMPYTUPLE']="""\
#define GETSTRFROMPYTUPLE(tuple,index,str,len) {\\
\t\tPyObject *rv_cb_str = PyTuple_GetItem((tuple),(index));\\
@@ -587,7 +587,7 @@ static int *nextforcomb(void) {
if (forcombcache.tr) return i_tr;
return i;
}"""
-needs['try_pyarr_from_string']=['STRINGCOPYN','PRINTPYOBJERR','string']
+needs['try_pyarr_from_string']=['STRINGCOPYN', 'PRINTPYOBJERR', 'string']
cfuncs['try_pyarr_from_string']="""\
static int try_pyarr_from_string(PyObject *obj,const string str) {
\tPyArrayObject *arr = NULL;
@@ -600,7 +600,7 @@ capi_fail:
\treturn 0;
}
"""
-needs['string_from_pyobj']=['string','STRINGMALLOC','STRINGCOPYN']
+needs['string_from_pyobj']=['string', 'STRINGMALLOC', 'STRINGCOPYN']
cfuncs['string_from_pyobj']="""\
static int string_from_pyobj(string *str,int *len,const string inistr,PyObject *obj,const char *errmess) {
\tPyArrayObject *arr = NULL;
@@ -680,7 +680,7 @@ static int char_from_pyobj(char* v,PyObject *obj,const char *errmess) {
\treturn 0;
}
"""
-needs['signed_char_from_pyobj']=['int_from_pyobj','signed_char']
+needs['signed_char_from_pyobj']=['int_from_pyobj', 'signed_char']
cfuncs['signed_char_from_pyobj']="""\
static int signed_char_from_pyobj(signed_char* v,PyObject *obj,const char *errmess) {
\tint i=0;
@@ -803,7 +803,7 @@ static int long_long_from_pyobj(long_long* v,PyObject *obj,const char *errmess)
\treturn 0;
}
"""
-needs['long_double_from_pyobj']=['double_from_pyobj','long_double']
+needs['long_double_from_pyobj']=['double_from_pyobj', 'long_double']
cfuncs['long_double_from_pyobj']="""\
static int long_double_from_pyobj(long_double* v,PyObject *obj,const char *errmess) {
\tdouble d=0;
@@ -875,7 +875,7 @@ static int float_from_pyobj(float* v,PyObject *obj,const char *errmess) {
\treturn 0;
}
"""
-needs['complex_long_double_from_pyobj']=['complex_long_double','long_double',
+needs['complex_long_double_from_pyobj']=['complex_long_double', 'long_double',
'complex_double_from_pyobj']
cfuncs['complex_long_double_from_pyobj']="""\
static int complex_long_double_from_pyobj(complex_long_double* v,PyObject *obj,const char *errmess) {
@@ -976,7 +976,7 @@ static int complex_double_from_pyobj(complex_double* v,PyObject *obj,const char
\treturn 0;
}
"""
-needs['complex_float_from_pyobj']=['complex_float','complex_double_from_pyobj']
+needs['complex_float_from_pyobj']=['complex_float', 'complex_double_from_pyobj']
cfuncs['complex_float_from_pyobj']="""\
static int complex_float_from_pyobj(complex_float* v,PyObject *obj,const char *errmess) {
\tcomplex_double cd={0.0,0.0};
@@ -988,30 +988,30 @@ static int complex_float_from_pyobj(complex_float* v,PyObject *obj,const char *e
\treturn 0;
}
"""
-needs['try_pyarr_from_char']=['pyobj_from_char1','TRYPYARRAYTEMPLATE']
+needs['try_pyarr_from_char']=['pyobj_from_char1', 'TRYPYARRAYTEMPLATE']
cfuncs['try_pyarr_from_char']='static int try_pyarr_from_char(PyObject* obj,char* v) {\n\tTRYPYARRAYTEMPLATE(char,\'c\');\n}\n'
-needs['try_pyarr_from_signed_char']=['TRYPYARRAYTEMPLATE','unsigned_char']
+needs['try_pyarr_from_signed_char']=['TRYPYARRAYTEMPLATE', 'unsigned_char']
cfuncs['try_pyarr_from_unsigned_char']='static int try_pyarr_from_unsigned_char(PyObject* obj,unsigned_char* v) {\n\tTRYPYARRAYTEMPLATE(unsigned_char,\'b\');\n}\n'
-needs['try_pyarr_from_signed_char']=['TRYPYARRAYTEMPLATE','signed_char']
+needs['try_pyarr_from_signed_char']=['TRYPYARRAYTEMPLATE', 'signed_char']
cfuncs['try_pyarr_from_signed_char']='static int try_pyarr_from_signed_char(PyObject* obj,signed_char* v) {\n\tTRYPYARRAYTEMPLATE(signed_char,\'1\');\n}\n'
-needs['try_pyarr_from_short']=['pyobj_from_short1','TRYPYARRAYTEMPLATE']
+needs['try_pyarr_from_short']=['pyobj_from_short1', 'TRYPYARRAYTEMPLATE']
cfuncs['try_pyarr_from_short']='static int try_pyarr_from_short(PyObject* obj,short* v) {\n\tTRYPYARRAYTEMPLATE(short,\'s\');\n}\n'
-needs['try_pyarr_from_int']=['pyobj_from_int1','TRYPYARRAYTEMPLATE']
+needs['try_pyarr_from_int']=['pyobj_from_int1', 'TRYPYARRAYTEMPLATE']
cfuncs['try_pyarr_from_int']='static int try_pyarr_from_int(PyObject* obj,int* v) {\n\tTRYPYARRAYTEMPLATE(int,\'i\');\n}\n'
-needs['try_pyarr_from_long']=['pyobj_from_long1','TRYPYARRAYTEMPLATE']
+needs['try_pyarr_from_long']=['pyobj_from_long1', 'TRYPYARRAYTEMPLATE']
cfuncs['try_pyarr_from_long']='static int try_pyarr_from_long(PyObject* obj,long* v) {\n\tTRYPYARRAYTEMPLATE(long,\'l\');\n}\n'
-needs['try_pyarr_from_long_long']=['pyobj_from_long_long1','TRYPYARRAYTEMPLATE','long_long']
+needs['try_pyarr_from_long_long']=['pyobj_from_long_long1', 'TRYPYARRAYTEMPLATE', 'long_long']
cfuncs['try_pyarr_from_long_long']='static int try_pyarr_from_long_long(PyObject* obj,long_long* v) {\n\tTRYPYARRAYTEMPLATE(long_long,\'L\');\n}\n'
-needs['try_pyarr_from_float']=['pyobj_from_float1','TRYPYARRAYTEMPLATE']
+needs['try_pyarr_from_float']=['pyobj_from_float1', 'TRYPYARRAYTEMPLATE']
cfuncs['try_pyarr_from_float']='static int try_pyarr_from_float(PyObject* obj,float* v) {\n\tTRYPYARRAYTEMPLATE(float,\'f\');\n}\n'
-needs['try_pyarr_from_double']=['pyobj_from_double1','TRYPYARRAYTEMPLATE']
+needs['try_pyarr_from_double']=['pyobj_from_double1', 'TRYPYARRAYTEMPLATE']
cfuncs['try_pyarr_from_double']='static int try_pyarr_from_double(PyObject* obj,double* v) {\n\tTRYPYARRAYTEMPLATE(double,\'d\');\n}\n'
-needs['try_pyarr_from_complex_float']=['pyobj_from_complex_float1','TRYCOMPLEXPYARRAYTEMPLATE','complex_float']
+needs['try_pyarr_from_complex_float']=['pyobj_from_complex_float1', 'TRYCOMPLEXPYARRAYTEMPLATE', 'complex_float']
cfuncs['try_pyarr_from_complex_float']='static int try_pyarr_from_complex_float(PyObject* obj,complex_float* v) {\n\tTRYCOMPLEXPYARRAYTEMPLATE(float,\'F\');\n}\n'
-needs['try_pyarr_from_complex_double']=['pyobj_from_complex_double1','TRYCOMPLEXPYARRAYTEMPLATE','complex_double']
+needs['try_pyarr_from_complex_double']=['pyobj_from_complex_double1', 'TRYCOMPLEXPYARRAYTEMPLATE', 'complex_double']
cfuncs['try_pyarr_from_complex_double']='static int try_pyarr_from_complex_double(PyObject* obj,complex_double* v) {\n\tTRYCOMPLEXPYARRAYTEMPLATE(double,\'D\');\n}\n'
-needs['create_cb_arglist']=['CFUNCSMESS','PRINTPYOBJERR','MINMAX']
+needs['create_cb_arglist']=['CFUNCSMESS', 'PRINTPYOBJERR', 'MINMAX']
cfuncs['create_cb_arglist']="""\
static int create_cb_arglist(PyObject* fun,PyTupleObject* xa,const int maxnofargs,const int nofoptargs,int *nofargs,PyTupleObject **args,const char *errmess) {
\tPyObject *tmp = NULL;
@@ -1118,7 +1118,7 @@ def buildcfuncs():
from .capi_maps import c2capi_map
for k in c2capi_map.keys():
m='pyarr_from_p_%s1'%k
- cppmacros[m]='#define %s(v) (PyArray_SimpleNewFromData(0,NULL,%s,(char *)v))'%(m,c2capi_map[k])
+ cppmacros[m]='#define %s(v) (PyArray_SimpleNewFromData(0,NULL,%s,(char *)v))'%(m, c2capi_map[k])
k='string'
m='pyarr_from_p_%s1'%k
cppmacros[m]='#define %s(v,dims) (PyArray_SimpleNewFromData(1,dims,NPY_CHAR,(char *)v))'%(m)
@@ -1127,10 +1127,10 @@ def buildcfuncs():
############ Auxiliary functions for sorting needs ###################
def append_needs(need,flag=1):
- global outneeds,needs
+ global outneeds, needs
if isinstance(need, list):
for n in need:
- append_needs(n,flag)
+ append_needs(n, flag)
elif isinstance(need, str):
if not need: return
if need in includes0:
@@ -1159,7 +1159,7 @@ def append_needs(need,flag=1):
tmp={}
if need in needs:
for nn in needs[need]:
- t=append_needs(nn,0)
+ t=append_needs(nn, 0)
if isinstance(t, dict):
for nnn in t.keys():
if nnn in tmp:
@@ -1175,7 +1175,7 @@ def append_needs(need,flag=1):
tmp={}
if need in needs:
for nn in needs[need]:
- t=append_needs(nn,flag)
+ t=append_needs(nn, flag)
if isinstance(t, dict):
for nnn in t.keys():
if nnn in tmp:
@@ -1190,7 +1190,7 @@ def append_needs(need,flag=1):
errmess('append_needs: expected list or string but got :%s\n'%(repr(need)))
def get_needs():
- global outneeds,needs
+ global outneeds, needs
res={}
for n in outneeds.keys():
out=[]
@@ -1210,9 +1210,9 @@ def get_needs():
else:
out.append(outneeds[n][0])
del outneeds[n][0]
- if saveout and (0 not in map(lambda x,y:x==y, saveout, outneeds[n])) \
+ if saveout and (0 not in map(lambda x, y:x==y, saveout, outneeds[n])) \
and outneeds[n] != []:
- print(n,saveout)
+ print(n, saveout)
errmess('get_needs: no progress in sorting needs, probably circular dependence, skipping.\n')
out=out+saveout
break
diff --git a/numpy/f2py/common_rules.py b/numpy/f2py/common_rules.py
index dd44e3326..d3b7f6dc2 100644
--- a/numpy/f2py/common_rules.py
+++ b/numpy/f2py/common_rules.py
@@ -39,10 +39,10 @@ def findcommonblocks(block,top=1):
vars={}
for v in block['common'][n]:
vars[v]=block['vars'][v]
- ret.append((n,block['common'][n],vars))
+ ret.append((n, block['common'][n], vars))
elif hasbody(block):
for b in block['body']:
- ret=ret+findcommonblocks(b,0)
+ ret=ret+findcommonblocks(b, 0)
if top:
tret=[]
names=[]
@@ -56,31 +56,31 @@ def findcommonblocks(block,top=1):
def buildhooks(m):
ret = {'commonhooks':[],'initcommonhooks':[],'docs':['"COMMON blocks:\\n"']}
fwrap = ['']
- def fadd(line,s=fwrap): s[0] = '%s\n %s'%(s[0],line)
+ def fadd(line,s=fwrap): s[0] = '%s\n %s'%(s[0], line)
chooks = ['']
- def cadd(line,s=chooks): s[0] = '%s\n%s'%(s[0],line)
+ def cadd(line,s=chooks): s[0] = '%s\n%s'%(s[0], line)
ihooks = ['']
- def iadd(line,s=ihooks): s[0] = '%s\n%s'%(s[0],line)
+ def iadd(line,s=ihooks): s[0] = '%s\n%s'%(s[0], line)
doc = ['']
- def dadd(line,s=doc): s[0] = '%s\n%s'%(s[0],line)
- for (name,vnames,vars) in findcommonblocks(m):
+ def dadd(line,s=doc): s[0] = '%s\n%s'%(s[0], line)
+ for (name, vnames, vars) in findcommonblocks(m):
lower_name = name.lower()
- hnames,inames = [],[]
+ hnames, inames = [], []
for n in vnames:
if isintent_hide(vars[n]): hnames.append(n)
else: inames.append(n)
if hnames:
- outmess('\t\tConstructing COMMON block support for "%s"...\n\t\t %s\n\t\t Hidden: %s\n'%(name,','.join(inames),','.join(hnames)))
+ outmess('\t\tConstructing COMMON block support for "%s"...\n\t\t %s\n\t\t Hidden: %s\n'%(name, ','.join(inames), ','.join(hnames)))
else:
- outmess('\t\tConstructing COMMON block support for "%s"...\n\t\t %s\n'%(name,','.join(inames)))
+ outmess('\t\tConstructing COMMON block support for "%s"...\n\t\t %s\n'%(name, ','.join(inames)))
fadd('subroutine f2pyinit%s(setupfunc)'%name)
fadd('external setupfunc')
for n in vnames:
- fadd(func2subr.var2fixfortran(vars,n))
+ fadd(func2subr.var2fixfortran(vars, n))
if name=='_BLNK_':
fadd('common %s'%(','.join(vnames)))
else:
- fadd('common /%s/ %s'%(name,','.join(vnames)))
+ fadd('common /%s/ %s'%(name, ','.join(vnames)))
fadd('call setupfunc(%s)'%(','.join(inames)))
fadd('end\n')
cadd('static FortranDataDef f2py_%s_def[] = {'%(name))
@@ -88,45 +88,45 @@ def buildhooks(m):
for n in inames:
ct = capi_maps.getctype(vars[n])
at = capi_maps.c2capi_map[ct]
- dm = capi_maps.getarrdims(n,vars[n])
+ dm = capi_maps.getarrdims(n, vars[n])
if dm['dims']: idims.append('(%s)'%(dm['dims']))
else: idims.append('')
dms=dm['dims'].strip()
if not dms: dms='-1'
- cadd('\t{\"%s\",%s,{{%s}},%s},'%(n,dm['rank'],dms,at))
+ cadd('\t{\"%s\",%s,{{%s}},%s},'%(n, dm['rank'], dms, at))
cadd('\t{NULL}\n};')
inames1 = rmbadname(inames)
inames1_tps = ','.join(['char *'+s for s in inames1])
- cadd('static void f2py_setup_%s(%s) {'%(name,inames1_tps))
+ cadd('static void f2py_setup_%s(%s) {'%(name, inames1_tps))
cadd('\tint i_f2py=0;')
for n in inames1:
- cadd('\tf2py_%s_def[i_f2py++].data = %s;'%(name,n))
+ cadd('\tf2py_%s_def[i_f2py++].data = %s;'%(name, n))
cadd('}')
if '_' in lower_name:
F_FUNC='F_FUNC_US'
else:
F_FUNC='F_FUNC'
cadd('extern void %s(f2pyinit%s,F2PYINIT%s)(void(*)(%s));'\
- %(F_FUNC,lower_name,name.upper(),
+ %(F_FUNC, lower_name, name.upper(),
','.join(['char*']*len(inames1))))
cadd('static void f2py_init_%s(void) {'%name)
cadd('\t%s(f2pyinit%s,F2PYINIT%s)(f2py_setup_%s);'\
- %(F_FUNC,lower_name,name.upper(),name))
+ %(F_FUNC, lower_name, name.upper(), name))
cadd('}\n')
- iadd('\tF2PyDict_SetItemString(d, \"%s\", PyFortranObject_New(f2py_%s_def,f2py_init_%s));'%(name,name,name))
- tname = name.replace('_','\\_')
+ iadd('\tF2PyDict_SetItemString(d, \"%s\", PyFortranObject_New(f2py_%s_def,f2py_init_%s));'%(name, name, name))
+ tname = name.replace('_', '\\_')
dadd('\\subsection{Common block \\texttt{%s}}\n'%(tname))
dadd('\\begin{description}')
for n in inames:
- dadd('\\item[]{{}\\verb@%s@{}}'%(capi_maps.getarrdocsign(n,vars[n])))
+ dadd('\\item[]{{}\\verb@%s@{}}'%(capi_maps.getarrdocsign(n, vars[n])))
if hasnote(vars[n]):
note = vars[n]['note']
if isinstance(note, list): note='\n'.join(note)
dadd('--- %s'%(note))
dadd('\\end{description}')
- ret['docs'].append('"\t/%s/ %s\\n"'%(name,','.join(map(lambda v,d:v+d,inames,idims))))
+ ret['docs'].append('"\t/%s/ %s\\n"'%(name, ','.join(map(lambda v, d:v+d, inames, idims))))
ret['commonhooks']=chooks
ret['initcommonhooks']=ihooks
ret['latexdoc']=doc[0]
if len(ret['docs'])<=1: ret['docs']=''
- return ret,fwrap[0]
+ return ret, fwrap[0]
diff --git a/numpy/f2py/crackfortran.py b/numpy/f2py/crackfortran.py
index 8b455c8ad..34b6192e4 100755
--- a/numpy/f2py/crackfortran.py
+++ b/numpy/f2py/crackfortran.py
@@ -204,21 +204,21 @@ for c in "ijklmn": defaultimplicitrules[c]={'typespec':'integer'}
del c
badnames={}
invbadnames={}
-for n in ['int','double','float','char','short','long','void','case','while',
- 'return','signed','unsigned','if','for','typedef','sizeof','union',
- 'struct','static','register','new','break','do','goto','switch',
- 'continue','else','inline','extern','delete','const','auto',
- 'len','rank','shape','index','slen','size','_i',
+for n in ['int', 'double', 'float', 'char', 'short', 'long', 'void', 'case', 'while',
+ 'return', 'signed', 'unsigned', 'if', 'for', 'typedef', 'sizeof', 'union',
+ 'struct', 'static', 'register', 'new', 'break', 'do', 'goto', 'switch',
+ 'continue', 'else', 'inline', 'extern', 'delete', 'const', 'auto',
+ 'len', 'rank', 'shape', 'index', 'slen', 'size', '_i',
'max', 'min',
- 'flen','fshape',
- 'string','complex_double','float_double','stdin','stderr','stdout',
- 'type','default']:
+ 'flen', 'fshape',
+ 'string', 'complex_double', 'float_double', 'stdin', 'stderr', 'stdout',
+ 'type', 'default']:
badnames[n]=n+'_bn'
invbadnames[n+'_bn']=n
def rmbadname1(name):
if name in badnames:
- errmess('rmbadname1: Replacing "%s" with "%s".\n'%(name,badnames[name]))
+ errmess('rmbadname1: Replacing "%s" with "%s".\n'%(name, badnames[name]))
return badnames[name]
return name
@@ -227,7 +227,7 @@ def rmbadname(names): return [rmbadname1(_m) for _m in names]
def undo_rmbadname1(name):
if name in invbadnames:
errmess('undo_rmbadname1: Replacing "%s" with "%s".\n'\
- %(name,invbadnames[name]))
+ %(name, invbadnames[name]))
return invbadnames[name]
return name
@@ -240,17 +240,17 @@ def getextension(name):
if '/' in name[i:]: return ''
return name[i+1:]
-is_f_file = re.compile(r'.*[.](for|ftn|f77|f)\Z',re.I).match
-_has_f_header = re.compile(r'-[*]-\s*fortran\s*-[*]-',re.I).search
-_has_f90_header = re.compile(r'-[*]-\s*f90\s*-[*]-',re.I).search
-_has_fix_header = re.compile(r'-[*]-\s*fix\s*-[*]-',re.I).search
-_free_f90_start = re.compile(r'[^c*]\s*[^\s\d\t]',re.I).match
+is_f_file = re.compile(r'.*[.](for|ftn|f77|f)\Z', re.I).match
+_has_f_header = re.compile(r'-[*]-\s*fortran\s*-[*]-', re.I).search
+_has_f90_header = re.compile(r'-[*]-\s*f90\s*-[*]-', re.I).search
+_has_fix_header = re.compile(r'-[*]-\s*fix\s*-[*]-', re.I).search
+_free_f90_start = re.compile(r'[^c*]\s*[^\s\d\t]', re.I).match
def is_free_format(file):
"""Check if file is in free format Fortran."""
# f90 allows both fixed and free format, assuming fixed unless
# signs of free format are detected.
result = 0
- f = open(file,'r')
+ f = open(file, 'r')
line = f.readline()
n = 15 # the number of non-comment lines to scan for hints
if _has_f_header(line):
@@ -277,23 +277,23 @@ def readfortrancode(ffile,dowithline=show,istop=1):
2) Call dowithline(line) on every line.
3) Recursively call itself when statement \"include '<filename>'\" is met.
"""
- global gotnextfile,filepositiontext,currentfilename,sourcecodeform,strictf77,\
- beginpattern,quiet,verbose,dolowercase,include_paths
+ global gotnextfile, filepositiontext, currentfilename, sourcecodeform, strictf77,\
+ beginpattern, quiet, verbose, dolowercase, include_paths
if not istop:
- saveglobals=gotnextfile,filepositiontext,currentfilename,sourcecodeform,strictf77,\
- beginpattern,quiet,verbose,dolowercase
+ saveglobals=gotnextfile, filepositiontext, currentfilename, sourcecodeform, strictf77,\
+ beginpattern, quiet, verbose, dolowercase
if ffile==[]: return
localdolowercase = dolowercase
cont=0
finalline=''
ll=''
commentline=re.compile(r'(?P<line>([^"]*["][^"]*["][^"!]*|[^\']*\'[^\']*\'[^\'!]*|[^!\'"]*))!{1}(?P<rest>.*)')
- includeline=re.compile(r'\s*include\s*(\'|")(?P<name>[^\'"]*)(\'|")',re.I)
+ includeline=re.compile(r'\s*include\s*(\'|")(?P<name>[^\'"]*)(\'|")', re.I)
cont1=re.compile(r'(?P<line>.*)&\s*\Z')
cont2=re.compile(r'(\s*&|)(?P<line>.*)')
mline_mark = re.compile(r".*?'''")
- if istop: dowithline('',-1)
- ll,l1='',''
+ if istop: dowithline('', -1)
+ ll, l1='', ''
spacedigits=[' '] + [str(_m) for _m in range(10)]
filepositiontext=''
fin=fileinput.FileInput(ffile)
@@ -316,10 +316,10 @@ def readfortrancode(ffile,dowithline=show,istop=1):
if strictf77: beginpattern=beginpattern77
else: beginpattern=beginpattern90
outmess('\tReading file %s (format:%s%s)\n'\
- %(repr(currentfilename),sourcecodeform,
+ %(repr(currentfilename), sourcecodeform,
strictf77 and ',strict' or ''))
- l=l.expandtabs().replace('\xa0',' ')
+ l=l.expandtabs().replace('\xa0', ' ')
while not l=='': # Get rid of newline characters
if l[-1] not in "\n\r\f": break
l=l[:-1]
@@ -337,7 +337,7 @@ def readfortrancode(ffile,dowithline=show,istop=1):
cont=0
continue
if sourcecodeform=='fix':
- if l[0] in ['*','c','!','C','#']:
+ if l[0] in ['*', 'c', '!', 'C', '#']:
if l[1:5].lower()=='f2py': # f2py directive
l=' '+l[5:]
else: # Skip comment line
@@ -404,20 +404,20 @@ def readfortrancode(ffile,dowithline=show,istop=1):
cont=(r is not None)
else:
raise ValueError("Flag sourcecodeform must be either 'fix' or 'free': %s"%repr(sourcecodeform))
- filepositiontext='Line #%d in %s:"%s"\n\t' % (fin.filelineno()-1,currentfilename,l1)
+ filepositiontext='Line #%d in %s:"%s"\n\t' % (fin.filelineno()-1, currentfilename, l1)
m=includeline.match(origfinalline)
if m:
fn=m.group('name')
if os.path.isfile(fn):
- readfortrancode(fn,dowithline=dowithline,istop=0)
+ readfortrancode(fn, dowithline=dowithline, istop=0)
else:
include_dirs = [os.path.dirname(currentfilename)] + include_paths
foundfile = 0
for inc_dir in include_dirs:
- fn1 = os.path.join(inc_dir,fn)
+ fn1 = os.path.join(inc_dir, fn)
if os.path.isfile(fn1):
foundfile = 1
- readfortrancode(fn1,dowithline=dowithline,istop=0)
+ readfortrancode(fn1, dowithline=dowithline, istop=0)
break
if not foundfile:
outmess('readfortrancode: could not find include file %s in %s. Ignoring.\n'%(repr(fn), os.pathsep.join(include_dirs)))
@@ -428,20 +428,20 @@ def readfortrancode(ffile,dowithline=show,istop=1):
finalline=ll.lower()
else: finalline=ll
origfinalline = ll
- filepositiontext='Line #%d in %s:"%s"\n\t' % (fin.filelineno()-1,currentfilename,l1)
+ filepositiontext='Line #%d in %s:"%s"\n\t' % (fin.filelineno()-1, currentfilename, l1)
m=includeline.match(origfinalline)
if m:
fn=m.group('name')
if os.path.isfile(fn):
- readfortrancode(fn,dowithline=dowithline,istop=0)
+ readfortrancode(fn, dowithline=dowithline, istop=0)
else:
include_dirs = [os.path.dirname(currentfilename)] + include_paths
foundfile = 0
for inc_dir in include_dirs:
- fn1 = os.path.join(inc_dir,fn)
+ fn1 = os.path.join(inc_dir, fn)
if os.path.isfile(fn1):
foundfile = 1
- readfortrancode(fn1,dowithline=dowithline,istop=0)
+ readfortrancode(fn1, dowithline=dowithline, istop=0)
break
if not foundfile:
outmess('readfortrancode: could not find include file %s in %s. Ignoring.\n'%(repr(fn), os.pathsep.join(include_dirs)))
@@ -449,10 +449,10 @@ def readfortrancode(ffile,dowithline=show,istop=1):
dowithline(finalline)
filepositiontext=''
fin.close()
- if istop: dowithline('',1)
+ if istop: dowithline('', 1)
else:
- gotnextfile,filepositiontext,currentfilename,sourcecodeform,strictf77,\
- beginpattern,quiet,verbose,dolowercase=saveglobals
+ gotnextfile, filepositiontext, currentfilename, sourcecodeform, strictf77,\
+ beginpattern, quiet, verbose, dolowercase=saveglobals
########### Crack line
beforethisafter=r'\s*(?P<before>%s(?=\s*(\b(%s)\b)))'+ \
@@ -460,55 +460,55 @@ beforethisafter=r'\s*(?P<before>%s(?=\s*(\b(%s)\b)))'+ \
r'\s*(?P<after>%s)\s*\Z'
##
fortrantypes='character|logical|integer|real|complex|double\s*(precision\s*(complex|)|complex)|type(?=\s*\([\w\s,=(*)]*\))|byte'
-typespattern=re.compile(beforethisafter%('',fortrantypes,fortrantypes,'.*'),re.I),'type'
-typespattern4implicit=re.compile(beforethisafter%('',fortrantypes+'|static|automatic|undefined',fortrantypes+'|static|automatic|undefined','.*'),re.I)
+typespattern=re.compile(beforethisafter%('', fortrantypes, fortrantypes, '.*'), re.I), 'type'
+typespattern4implicit=re.compile(beforethisafter%('', fortrantypes+'|static|automatic|undefined', fortrantypes+'|static|automatic|undefined', '.*'), re.I)
#
-functionpattern=re.compile(beforethisafter%('([a-z]+[\w\s(=*+-/)]*?|)','function','function','.*'),re.I),'begin'
-subroutinepattern=re.compile(beforethisafter%('[a-z\s]*?','subroutine','subroutine','.*'),re.I),'begin'
+functionpattern=re.compile(beforethisafter%('([a-z]+[\w\s(=*+-/)]*?|)', 'function', 'function', '.*'), re.I), 'begin'
+subroutinepattern=re.compile(beforethisafter%('[a-z\s]*?', 'subroutine', 'subroutine', '.*'), re.I), 'begin'
#modulepattern=re.compile(beforethisafter%('[a-z\s]*?','module','module','.*'),re.I),'begin'
#
groupbegins77=r'program|block\s*data'
-beginpattern77=re.compile(beforethisafter%('',groupbegins77,groupbegins77,'.*'),re.I),'begin'
+beginpattern77=re.compile(beforethisafter%('', groupbegins77, groupbegins77, '.*'), re.I), 'begin'
groupbegins90=groupbegins77+r'|module(?!\s*procedure)|python\s*module|interface|type(?!\s*\()'
-beginpattern90=re.compile(beforethisafter%('',groupbegins90,groupbegins90,'.*'),re.I),'begin'
+beginpattern90=re.compile(beforethisafter%('', groupbegins90, groupbegins90, '.*'), re.I), 'begin'
groupends=r'end|endprogram|endblockdata|endmodule|endpythonmodule|endinterface'
-endpattern=re.compile(beforethisafter%('',groupends,groupends,'[\w\s]*'),re.I),'end'
+endpattern=re.compile(beforethisafter%('', groupends, groupends, '[\w\s]*'), re.I), 'end'
#endifs='end\s*(if|do|where|select|while|forall)'
endifs='(end\s*(if|do|where|select|while|forall))|(module\s*procedure)'
-endifpattern=re.compile(beforethisafter%('[\w]*?',endifs,endifs,'[\w\s]*'),re.I),'endif'
+endifpattern=re.compile(beforethisafter%('[\w]*?', endifs, endifs, '[\w\s]*'), re.I), 'endif'
#
-implicitpattern=re.compile(beforethisafter%('','implicit','implicit','.*'),re.I),'implicit'
-dimensionpattern=re.compile(beforethisafter%('','dimension|virtual','dimension|virtual','.*'),re.I),'dimension'
-externalpattern=re.compile(beforethisafter%('','external','external','.*'),re.I),'external'
-optionalpattern=re.compile(beforethisafter%('','optional','optional','.*'),re.I),'optional'
-requiredpattern=re.compile(beforethisafter%('','required','required','.*'),re.I),'required'
-publicpattern=re.compile(beforethisafter%('','public','public','.*'),re.I),'public'
-privatepattern=re.compile(beforethisafter%('','private','private','.*'),re.I),'private'
-intrisicpattern=re.compile(beforethisafter%('','intrisic','intrisic','.*'),re.I),'intrisic'
-intentpattern=re.compile(beforethisafter%('','intent|depend|note|check','intent|depend|note|check','\s*\(.*?\).*'),re.I),'intent'
-parameterpattern=re.compile(beforethisafter%('','parameter','parameter','\s*\(.*'),re.I),'parameter'
-datapattern=re.compile(beforethisafter%('','data','data','.*'),re.I),'data'
-callpattern=re.compile(beforethisafter%('','call','call','.*'),re.I),'call'
-entrypattern=re.compile(beforethisafter%('','entry','entry','.*'),re.I),'entry'
-callfunpattern=re.compile(beforethisafter%('','callfun','callfun','.*'),re.I),'callfun'
-commonpattern=re.compile(beforethisafter%('','common','common','.*'),re.I),'common'
-usepattern=re.compile(beforethisafter%('','use','use','.*'),re.I),'use'
-containspattern=re.compile(beforethisafter%('','contains','contains',''),re.I),'contains'
-formatpattern=re.compile(beforethisafter%('','format','format','.*'),re.I),'format'
+implicitpattern=re.compile(beforethisafter%('', 'implicit', 'implicit', '.*'), re.I), 'implicit'
+dimensionpattern=re.compile(beforethisafter%('', 'dimension|virtual', 'dimension|virtual', '.*'), re.I), 'dimension'
+externalpattern=re.compile(beforethisafter%('', 'external', 'external', '.*'), re.I), 'external'
+optionalpattern=re.compile(beforethisafter%('', 'optional', 'optional', '.*'), re.I), 'optional'
+requiredpattern=re.compile(beforethisafter%('', 'required', 'required', '.*'), re.I), 'required'
+publicpattern=re.compile(beforethisafter%('', 'public', 'public', '.*'), re.I), 'public'
+privatepattern=re.compile(beforethisafter%('', 'private', 'private', '.*'), re.I), 'private'
+intrisicpattern=re.compile(beforethisafter%('', 'intrisic', 'intrisic', '.*'), re.I), 'intrisic'
+intentpattern=re.compile(beforethisafter%('', 'intent|depend|note|check', 'intent|depend|note|check', '\s*\(.*?\).*'), re.I), 'intent'
+parameterpattern=re.compile(beforethisafter%('', 'parameter', 'parameter', '\s*\(.*'), re.I), 'parameter'
+datapattern=re.compile(beforethisafter%('', 'data', 'data', '.*'), re.I), 'data'
+callpattern=re.compile(beforethisafter%('', 'call', 'call', '.*'), re.I), 'call'
+entrypattern=re.compile(beforethisafter%('', 'entry', 'entry', '.*'), re.I), 'entry'
+callfunpattern=re.compile(beforethisafter%('', 'callfun', 'callfun', '.*'), re.I), 'callfun'
+commonpattern=re.compile(beforethisafter%('', 'common', 'common', '.*'), re.I), 'common'
+usepattern=re.compile(beforethisafter%('', 'use', 'use', '.*'), re.I), 'use'
+containspattern=re.compile(beforethisafter%('', 'contains', 'contains', ''), re.I), 'contains'
+formatpattern=re.compile(beforethisafter%('', 'format', 'format', '.*'), re.I), 'format'
## Non-fortran and f2py-specific statements
-f2pyenhancementspattern=re.compile(beforethisafter%('','threadsafe|fortranname|callstatement|callprotoargument|usercode|pymethoddef','threadsafe|fortranname|callstatement|callprotoargument|usercode|pymethoddef','.*'),re.I|re.S),'f2pyenhancements'
-multilinepattern = re.compile(r"\s*(?P<before>''')(?P<this>.*?)(?P<after>''')\s*\Z",re.S),'multiline'
+f2pyenhancementspattern=re.compile(beforethisafter%('', 'threadsafe|fortranname|callstatement|callprotoargument|usercode|pymethoddef', 'threadsafe|fortranname|callstatement|callprotoargument|usercode|pymethoddef', '.*'), re.I|re.S), 'f2pyenhancements'
+multilinepattern = re.compile(r"\s*(?P<before>''')(?P<this>.*?)(?P<after>''')\s*\Z", re.S), 'multiline'
##
def _simplifyargs(argsline):
a = []
for n in markoutercomma(argsline).split('@,@'):
for r in '(),':
- n = n.replace(r,'_')
+ n = n.replace(r, '_')
a.append(n)
return ','.join(a)
-crackline_re_1 = re.compile(r'\s*(?P<result>\b[a-z]+[\w]*\b)\s*[=].*',re.I)
+crackline_re_1 = re.compile(r'\s*(?P<result>\b[a-z]+[\w]*\b)\s*[=].*', re.I)
def crackline(line,reset=0):
"""
reset=-1 --- initialize
@@ -517,14 +517,14 @@ def crackline(line,reset=0):
Cracked data is saved in grouplist[0].
"""
- global beginpattern,groupcounter,groupname,groupcache,grouplist,gotnextfile,\
- filepositiontext,currentfilename,neededmodule,expectbegin,skipblocksuntil,\
- skipemptyends,previous_context
+ global beginpattern, groupcounter, groupname, groupcache, grouplist, gotnextfile,\
+ filepositiontext, currentfilename, neededmodule, expectbegin, skipblocksuntil,\
+ skipemptyends, previous_context
if ';' in line and not (f2pyenhancementspattern[0].match(line) or
multilinepattern[0].match(line)):
for l in line.split(';'):
- assert reset==0,repr(reset) # XXX: non-zero reset values need testing
- crackline(l,reset)
+ assert reset==0, repr(reset) # XXX: non-zero reset values need testing
+ crackline(l, reset)
return
if reset<0:
groupcounter=0
@@ -542,7 +542,7 @@ def crackline(line,reset=0):
fl=0
if f77modulename and neededmodule==groupcounter: fl=2
while groupcounter>fl:
- outmess('crackline: groupcounter=%s groupname=%s\n'%(repr(groupcounter),repr(groupname)))
+ outmess('crackline: groupcounter=%s groupname=%s\n'%(repr(groupcounter), repr(groupname)))
outmess('crackline: Mismatch of blocks encountered. Trying to fix it by assuming "end" statement.\n')
grouplist[groupcounter-1].append(groupcache[groupcounter])
grouplist[groupcounter-1][-1]['body']=grouplist[groupcounter]
@@ -561,15 +561,15 @@ def crackline(line,reset=0):
return
if line=='': return
flag=0
- for pat in [dimensionpattern,externalpattern,intentpattern,optionalpattern,
+ for pat in [dimensionpattern, externalpattern, intentpattern, optionalpattern,
requiredpattern,
- parameterpattern,datapattern,publicpattern,privatepattern,
+ parameterpattern, datapattern, publicpattern, privatepattern,
intrisicpattern,
- endifpattern,endpattern,
+ endifpattern, endpattern,
formatpattern,
- beginpattern,functionpattern,subroutinepattern,
- implicitpattern,typespattern,commonpattern,
- callpattern,usepattern,containspattern,
+ beginpattern, functionpattern, subroutinepattern,
+ implicitpattern, typespattern, commonpattern,
+ callpattern, usepattern, containspattern,
entrypattern,
f2pyenhancementspattern,
multilinepattern
@@ -587,18 +587,18 @@ def crackline(line,reset=0):
name=invbadnames[name]
if 'interfaced' in groupcache[groupcounter] and name in groupcache[groupcounter]['interfaced']:
continue
- m1=re.match(r'(?P<before>[^"]*)\b%s\b\s*@\(@(?P<args>[^@]*)@\)@.*\Z'%name,markouterparen(line),re.I)
+ m1=re.match(r'(?P<before>[^"]*)\b%s\b\s*@\(@(?P<args>[^@]*)@\)@.*\Z'%name, markouterparen(line), re.I)
if m1:
m2 = re_1.match(m1.group('before'))
a = _simplifyargs(m1.group('args'))
if m2:
- line='callfun %s(%s) result (%s)'%(name,a,m2.group('result'))
- else: line='callfun %s(%s)'%(name,a)
+ line='callfun %s(%s) result (%s)'%(name, a, m2.group('result'))
+ else: line='callfun %s(%s)'%(name, a)
m = callfunpattern[0].match(line)
if not m:
outmess('crackline: could not resolve function call for line=%s.\n'%repr(line))
return
- analyzeline(m,'callfun',line)
+ analyzeline(m, 'callfun', line)
return
if verbose>1 or (verbose==1 and currentfilename.lower().endswith('.pyf')):
previous_context = None
@@ -632,7 +632,7 @@ def crackline(line,reset=0):
groupcounter=groupcounter+1
return
gotnextfile=0
- analyzeline(m,pat[1],line)
+ analyzeline(m, pat[1], line)
expectbegin=0
elif pat[1]=='endif':
pass
@@ -642,7 +642,7 @@ def crackline(line,reset=0):
skipblocksuntil=groupcounter
else:
if 0<=skipblocksuntil<=groupcounter:return
- analyzeline(m,pat[1],line)
+ analyzeline(m, pat[1], line)
def markouterparen(line):
l='';f=0
@@ -673,10 +673,10 @@ def markoutercomma(line,comma=','):
l=l+'@'+comma+'@'
continue
l=l+c
- assert not f,repr((f,line,l,cc))
+ assert not f, repr((f, line, l, cc))
return l
def unmarkouterparen(line):
- r = line.replace('@(@','(').replace('@)@',')')
+ r = line.replace('@(@', '(').replace('@)@', ')')
return r
def appenddecl(decl,decl2,force=1):
if not decl: decl={}
@@ -688,32 +688,32 @@ def appenddecl(decl,decl2,force=1):
decl[k]=decl2[k]
elif k=='attrspec':
for l in decl2[k]:
- decl=setattrspec(decl,l,force)
+ decl=setattrspec(decl, l, force)
elif k=='kindselector':
- decl=setkindselector(decl,decl2[k],force)
+ decl=setkindselector(decl, decl2[k], force)
elif k=='charselector':
- decl=setcharselector(decl,decl2[k],force)
- elif k in ['=','typename']:
+ decl=setcharselector(decl, decl2[k], force)
+ elif k in ['=', 'typename']:
if force or k not in decl:
decl[k]=decl2[k]
elif k=='note':
pass
- elif k in ['intent','check','dimension','optional','required']:
+ elif k in ['intent', 'check', 'dimension', 'optional', 'required']:
errmess('appenddecl: "%s" not implemented.\n'%k)
else:
raise Exception('appenddecl: Unknown variable definition key:' + \
str(k))
return decl
-selectpattern=re.compile(r'\s*(?P<this>(@\(@.*?@\)@|[*][\d*]+|[*]\s*@\(@.*?@\)@|))(?P<after>.*)\Z',re.I)
-nameargspattern=re.compile(r'\s*(?P<name>\b[\w$]+\b)\s*(@\(@\s*(?P<args>[\w\s,]*)\s*@\)@|)\s*((result(\s*@\(@\s*(?P<result>\b[\w$]+\b)\s*@\)@|))|(bind\s*@\(@\s*(?P<bind>.*)\s*@\)@))*\s*\Z',re.I)
-callnameargspattern=re.compile(r'\s*(?P<name>\b[\w$]+\b)\s*@\(@\s*(?P<args>.*)\s*@\)@\s*\Z',re.I)
+selectpattern=re.compile(r'\s*(?P<this>(@\(@.*?@\)@|[*][\d*]+|[*]\s*@\(@.*?@\)@|))(?P<after>.*)\Z', re.I)
+nameargspattern=re.compile(r'\s*(?P<name>\b[\w$]+\b)\s*(@\(@\s*(?P<args>[\w\s,]*)\s*@\)@|)\s*((result(\s*@\(@\s*(?P<result>\b[\w$]+\b)\s*@\)@|))|(bind\s*@\(@\s*(?P<bind>.*)\s*@\)@))*\s*\Z', re.I)
+callnameargspattern=re.compile(r'\s*(?P<name>\b[\w$]+\b)\s*@\(@\s*(?P<args>.*)\s*@\)@\s*\Z', re.I)
real16pattern = re.compile(r'([-+]?(?:\d+(?:\.\d*)?|\d*\.\d+))[dD]((?:[-+]?\d+)?)')
real8pattern = re.compile(r'([-+]?((?:\d+(?:\.\d*)?|\d*\.\d+))[eE]((?:[-+]?\d+)?)|(\d+\.\d*))')
-_intentcallbackpattern = re.compile(r'intent\s*\(.*?\bcallback\b',re.I)
+_intentcallbackpattern = re.compile(r'intent\s*\(.*?\bcallback\b', re.I)
def _is_intent_callback(vdecl):
- for a in vdecl.get('attrspec',[]):
+ for a in vdecl.get('attrspec', []):
if _intentcallbackpattern.match(a):
return 1
return 0
@@ -722,20 +722,20 @@ def _resolvenameargspattern(line):
line = markouterparen(line)
m1=nameargspattern.match(line)
if m1:
- return m1.group('name'),m1.group('args'),m1.group('result'), m1.group('bind')
+ return m1.group('name'), m1.group('args'), m1.group('result'), m1.group('bind')
m1=callnameargspattern.match(line)
if m1:
- return m1.group('name'),m1.group('args'),None, None
- return None,[],None, None
+ return m1.group('name'), m1.group('args'), None, None
+ return None, [], None, None
-def analyzeline(m,case,line):
- global groupcounter,groupname,groupcache,grouplist,filepositiontext,\
- currentfilename,f77modulename,neededinterface,neededmodule,expectbegin,\
- gotnextfile,previous_context
+def analyzeline(m, case, line):
+ global groupcounter, groupname, groupcache, grouplist, filepositiontext,\
+ currentfilename, f77modulename, neededinterface, neededmodule, expectbegin,\
+ gotnextfile, previous_context
block=m.group('this')
if case != 'multiline':
previous_context = None
- if expectbegin and case not in ['begin','call','callfun','type'] \
+ if expectbegin and case not in ['begin', 'call', 'callfun', 'type'] \
and not skipemptyends and groupcounter<1:
newname=os.path.basename(currentfilename).split('.')[0]
outmess('analyzeline: no group yet. Creating program group with name "%s".\n'%newname)
@@ -750,21 +750,21 @@ def analyzeline(m,case,line):
groupcache[groupcounter]['name']=newname
groupcache[groupcounter]['from']='fromsky'
expectbegin=0
- if case in ['begin','call','callfun']:
+ if case in ['begin', 'call', 'callfun']:
# Crack line => block,name,args,result
block = block.lower()
- if re.match(r'block\s*data',block,re.I): block='block data'
- if re.match(r'python\s*module',block,re.I): block='python module'
- name,args,result,bind = _resolvenameargspattern(m.group('after'))
+ if re.match(r'block\s*data', block, re.I): block='block data'
+ if re.match(r'python\s*module', block, re.I): block='python module'
+ name, args, result, bind = _resolvenameargspattern(m.group('after'))
if name is None:
if block=='block data':
name = '_BLOCK_DATA_'
else:
name = ''
- if block not in ['interface','block data']:
+ if block not in ['interface', 'block data']:
outmess('analyzeline: No name/args pattern found for line.\n')
- previous_context = (block,name,groupcounter)
+ previous_context = (block, name, groupcounter)
if args: args=rmbadname([x.strip() for x in markoutercomma(args).split('@,@')])
else: args=[]
if '' in args:
@@ -776,7 +776,7 @@ def analyzeline(m,case,line):
needmodule=0
needinterface=0
- if case in ['call','callfun']:
+ if case in ['call', 'callfun']:
needinterface=1
if 'args' not in groupcache[groupcounter]:
return
@@ -799,7 +799,7 @@ def analyzeline(m,case,line):
grouplist[groupcounter]=[]
if needmodule:
if verbose>1:
- outmess('analyzeline: Creating module block %s\n'%repr(f77modulename),0)
+ outmess('analyzeline: Creating module block %s\n'%repr(f77modulename), 0)
groupname[groupcounter]='module'
groupcache[groupcounter]['block']='python module'
groupcache[groupcounter]['name']=f77modulename
@@ -813,11 +813,11 @@ def analyzeline(m,case,line):
grouplist[groupcounter]=[]
if needinterface:
if verbose>1:
- outmess('analyzeline: Creating additional interface block (groupcounter=%s).\n' % (groupcounter),0)
+ outmess('analyzeline: Creating additional interface block (groupcounter=%s).\n' % (groupcounter), 0)
groupname[groupcounter]='interface'
groupcache[groupcounter]['block']='interface'
groupcache[groupcounter]['name']='unknown_interface'
- groupcache[groupcounter]['from']='%s:%s'%(groupcache[groupcounter-1]['from'],groupcache[groupcounter-1]['name'])
+ groupcache[groupcounter]['from']='%s:%s'%(groupcache[groupcounter-1]['from'], groupcache[groupcounter-1]['name'])
groupcache[groupcounter]['body']=[]
groupcache[groupcounter]['externals']=[]
groupcache[groupcounter]['interfaced']=[]
@@ -835,9 +835,9 @@ def analyzeline(m,case,line):
groupcache[groupcounter]['from']=currentfilename
else:
if f77modulename and groupcounter==3:
- groupcache[groupcounter]['from']='%s:%s'%(groupcache[groupcounter-1]['from'],currentfilename)
+ groupcache[groupcounter]['from']='%s:%s'%(groupcache[groupcounter-1]['from'], currentfilename)
else:
- groupcache[groupcounter]['from']='%s:%s'%(groupcache[groupcounter-1]['from'],groupcache[groupcounter-1]['name'])
+ groupcache[groupcounter]['from']='%s:%s'%(groupcache[groupcounter-1]['from'], groupcache[groupcounter-1]['name'])
for k in list(groupcache[groupcounter].keys()):
if not groupcache[groupcounter][k]:
del groupcache[groupcounter][k]
@@ -852,7 +852,7 @@ def analyzeline(m,case,line):
if block=='type':
groupcache[groupcounter]['varnames'] = []
- if case in ['call','callfun']: # set parents variables
+ if case in ['call', 'callfun']: # set parents variables
if name not in groupcache[groupcounter-2]['externals']:
groupcache[groupcounter-2]['externals'].append(name)
groupcache[groupcounter]['vars']=copy.deepcopy(groupcache[groupcounter-2]['vars'])
@@ -860,23 +860,23 @@ def analyzeline(m,case,line):
#except: pass
try: del groupcache[groupcounter]['vars'][name][groupcache[groupcounter]['vars'][name]['attrspec'].index('external')]
except: pass
- if block in ['function','subroutine']: # set global attributes
- try: groupcache[groupcounter]['vars'][name]=appenddecl(groupcache[groupcounter]['vars'][name],groupcache[groupcounter-2]['vars'][''])
+ if block in ['function', 'subroutine']: # set global attributes
+ try: groupcache[groupcounter]['vars'][name]=appenddecl(groupcache[groupcounter]['vars'][name], groupcache[groupcounter-2]['vars'][''])
except: pass
if case=='callfun': # return type
if result and result in groupcache[groupcounter]['vars']:
if not name==result:
- groupcache[groupcounter]['vars'][name]=appenddecl(groupcache[groupcounter]['vars'][name],groupcache[groupcounter]['vars'][result])
+ groupcache[groupcounter]['vars'][name]=appenddecl(groupcache[groupcounter]['vars'][name], groupcache[groupcounter]['vars'][result])
#if groupcounter>1: # name is interfaced
try: groupcache[groupcounter-2]['interfaced'].append(name)
except: pass
if block=='function':
t=typespattern[0].match(m.group('before')+' '+name)
if t:
- typespec,selector,attr,edecl=cracktypespec0(t.group('this'),t.group('after'))
- updatevars(typespec,selector,attr,edecl)
+ typespec, selector, attr, edecl=cracktypespec0(t.group('this'), t.group('after'))
+ updatevars(typespec, selector, attr, edecl)
- if case in ['call','callfun']:
+ if case in ['call', 'callfun']:
grouplist[groupcounter-1].append(groupcache[groupcounter])
grouplist[groupcounter-1][-1]['body']=grouplist[groupcounter]
del grouplist[groupcounter]
@@ -887,20 +887,20 @@ def analyzeline(m,case,line):
groupcounter=groupcounter-1 # end interface
elif case=='entry':
- name,args,result,bind=_resolvenameargspattern(m.group('after'))
+ name, args, result, bind=_resolvenameargspattern(m.group('after'))
if name is not None:
if args:
args=rmbadname([x.strip() for x in markoutercomma(args).split('@,@')])
else: args=[]
- assert result is None,repr(result)
+ assert result is None, repr(result)
groupcache[groupcounter]['entry'][name] = args
- previous_context = ('entry',name,groupcounter)
+ previous_context = ('entry', name, groupcounter)
elif case=='type':
- typespec,selector,attr,edecl=cracktypespec0(block,m.group('after'))
- last_name = updatevars(typespec,selector,attr,edecl)
+ typespec, selector, attr, edecl=cracktypespec0(block, m.group('after'))
+ last_name = updatevars(typespec, selector, attr, edecl)
if last_name is not None:
- previous_context = ('variable',last_name,groupcounter)
- elif case in ['dimension','intent','optional','required','external','public','private','intrisic']:
+ previous_context = ('variable', last_name, groupcounter)
+ elif case in ['dimension', 'intent', 'optional', 'required', 'external', 'public', 'private', 'intrisic']:
edecl=groupcache[groupcounter]['vars']
ll=m.group('after').strip()
i=ll.find('::')
@@ -909,7 +909,7 @@ def analyzeline(m,case,line):
ll=ll[:i+1]+'::'+ll[i+1:]
i=ll.find('::')
if ll[i:]=='::' and 'args' in groupcache[groupcounter]:
- outmess('All arguments will have attribute %s%s\n'%(m.group('this'),ll[:i]))
+ outmess('All arguments will have attribute %s%s\n'%(m.group('this'), ll[:i]))
ll = ll + ','.join(groupcache[groupcounter]['args'])
if i<0:i=0;pl=''
else: pl=ll[:i].strip();ll=ll[i+2:]
@@ -922,10 +922,10 @@ def analyzeline(m,case,line):
for e in [x.strip() for x in markoutercomma(ll).split('@,@')]:
m1=namepattern.match(e)
if not m1:
- if case in ['public','private']: k=''
+ if case in ['public', 'private']: k=''
else:
print(m.groupdict())
- outmess('analyzeline: no name pattern found in %s statement for %s. Skipping.\n'%(case,repr(e)))
+ outmess('analyzeline: no name pattern found in %s statement for %s. Skipping.\n'%(case, repr(e)))
continue
else:
k=rmbadname1(m1.group('name'))
@@ -942,14 +942,14 @@ def analyzeline(m,case,line):
outmess('analyzeline: missing __user__ module (could be nothing)\n')
if k!=groupcache[groupcounter]['name']: # fixes ticket 1693
outmess('analyzeline: appending intent(callback) %s'\
- ' to %s arguments\n' % (k,groupcache[groupcounter]['name']))
+ ' to %s arguments\n' % (k, groupcache[groupcounter]['name']))
groupcache[groupcounter]['args'].append(k)
else:
errmess('analyzeline: intent(callback) %s is ignored' % (k))
else:
errmess('analyzeline: intent(callback) %s is already'\
' in argument list' % (k))
- if case in ['optional','required','public','external','private','intrisic']:
+ if case in ['optional', 'required', 'public', 'external', 'private', 'intrisic']:
ap=case
if 'attrspec' in edecl[k]:
edecl[k]['attrspec'].append(ap)
@@ -968,23 +968,23 @@ def analyzeline(m,case,line):
last_name = k
groupcache[groupcounter]['vars']=edecl
if last_name is not None:
- previous_context = ('variable',last_name,groupcounter)
+ previous_context = ('variable', last_name, groupcounter)
elif case=='parameter':
edecl=groupcache[groupcounter]['vars']
ll=m.group('after').strip()[1:-1]
last_name = None
for e in markoutercomma(ll).split('@,@'):
try:
- k,initexpr=[x.strip() for x in e.split('=')]
+ k, initexpr=[x.strip() for x in e.split('=')]
except:
- outmess('analyzeline: could not extract name,expr in parameter statement "%s" of "%s"\n'%(e,ll));continue
+ outmess('analyzeline: could not extract name,expr in parameter statement "%s" of "%s"\n'%(e, ll));continue
params = get_parameters(edecl)
k=rmbadname1(k)
if k not in edecl:
edecl[k]={}
if '=' in edecl[k] and (not edecl[k]['=']==initexpr):
- outmess('analyzeline: Overwriting the value of parameter "%s" ("%s") with "%s".\n'%(k,edecl[k]['='],initexpr))
- t = determineexprtype(initexpr,params)
+ outmess('analyzeline: Overwriting the value of parameter "%s" ("%s") with "%s".\n'%(k, edecl[k]['='], initexpr))
+ t = determineexprtype(initexpr, params)
if t:
if t.get('typespec')=='real':
tt = list(initexpr)
@@ -993,11 +993,11 @@ def analyzeline(m,case,line):
initexpr[m.start():m.end()].lower().replace('d', 'e'))
initexpr = ''.join(tt)
elif t.get('typespec')=='complex':
- initexpr = initexpr[1:].lower().replace('d','e').\
- replace(',','+1j*(')
+ initexpr = initexpr[1:].lower().replace('d', 'e').\
+ replace(',', '+1j*(')
try:
- v = eval(initexpr,{},params)
- except (SyntaxError,NameError,TypeError) as msg:
+ v = eval(initexpr, {}, params)
+ except (SyntaxError, NameError, TypeError) as msg:
errmess('analyzeline: Failed to evaluate %r. Ignoring: %s\n'\
% (initexpr, msg))
continue
@@ -1008,7 +1008,7 @@ def analyzeline(m,case,line):
last_name = k
groupcache[groupcounter]['vars']=edecl
if last_name is not None:
- previous_context = ('variable',last_name,groupcounter)
+ previous_context = ('variable', last_name, groupcounter)
elif case=='implicit':
if m.group('after').strip().lower()=='none':
groupcache[groupcounter]['implicit']=None
@@ -1021,14 +1021,14 @@ def analyzeline(m,case,line):
impl={}
for e in markoutercomma(m.group('after')).split('@,@'):
decl={}
- m1=re.match(r'\s*(?P<this>.*?)\s*(\(\s*(?P<after>[a-z-, ]+)\s*\)\s*|)\Z',e,re.I)
+ m1=re.match(r'\s*(?P<this>.*?)\s*(\(\s*(?P<after>[a-z-, ]+)\s*\)\s*|)\Z', e, re.I)
if not m1:
outmess('analyzeline: could not extract info of implicit statement part "%s"\n'%(e));continue
m2=typespattern4implicit.match(m1.group('this'))
if not m2:
outmess('analyzeline: could not extract types pattern of implicit statement part "%s"\n'%(e));continue
- typespec,selector,attr,edecl=cracktypespec0(m2.group('this'),m2.group('after'))
- kindselect,charselect,typename=cracktypespec(typespec,selector)
+ typespec, selector, attr, edecl=cracktypespec0(m2.group('this'), m2.group('after'))
+ kindselect, charselect, typename=cracktypespec(typespec, selector)
decl['typespec']=typespec
decl['kindselector']=kindselect
decl['charselector']=charselect
@@ -1037,13 +1037,13 @@ def analyzeline(m,case,line):
if not decl[k]: del decl[k]
for r in markoutercomma(m1.group('after')).split('@,@'):
if '-' in r:
- try: begc,endc=[x.strip() for x in r.split('-')]
+ try: begc, endc=[x.strip() for x in r.split('-')]
except:
outmess('analyzeline: expected "<char>-<char>" instead of "%s" in range list of implicit statement\n'%r);continue
else: begc=endc=r.strip()
if not len(begc)==len(endc)==1:
outmess('analyzeline: expected "<char>-<char>" instead of "%s" in range list of implicit statement (2)\n'%r);continue
- for o in range(ord(begc),ord(endc)+1):
+ for o in range(ord(begc), ord(endc)+1):
impl[chr(o)]=decl
groupcache[groupcounter]['implicit']=impl
elif case=='data':
@@ -1061,13 +1061,13 @@ def analyzeline(m,case,line):
dl = dl.strip()
if dl.startswith(','):
dl = dl[1:].strip()
- ll.append([dl,il])
+ ll.append([dl, il])
dl=c;il='';f=0
if f==2:
dl = dl.strip()
if dl.startswith(','):
dl = dl[1:].strip()
- ll.append([dl,il])
+ ll.append([dl, il])
vars={}
if 'vars' in groupcache[groupcounter]:
vars=groupcache[groupcounter]['vars']
@@ -1097,13 +1097,13 @@ def analyzeline(m,case,line):
if v not in vars:
vars[v]={}
if '=' in vars[v] and not vars[v]['=']==l[1][j:i-1]:
- outmess('analyzeline: changing init expression of "%s" ("%s") to "%s"\n'%(v,vars[v]['='],l[1][j:i-1]))
+ outmess('analyzeline: changing init expression of "%s" ("%s") to "%s"\n'%(v, vars[v]['='], l[1][j:i-1]))
vars[v]['=']=l[1][j:i-1]
j=i
last_name = v
groupcache[groupcounter]['vars']=vars
if last_name is not None:
- previous_context = ('variable',last_name,groupcounter)
+ previous_context = ('variable', last_name, groupcounter)
elif case=='common':
line=m.group('after').strip()
if not line[0]=='/':line='//'+line
@@ -1114,13 +1114,13 @@ def analyzeline(m,case,line):
if f>=3:
bn = bn.strip()
if not bn: bn='_BLNK_'
- cl.append([bn,ol])
+ cl.append([bn, ol])
f=f-2;bn='';ol=''
if f%2: bn=bn+c
else: ol=ol+c
bn = bn.strip()
if not bn: bn='_BLNK_'
- cl.append([bn,ol])
+ cl.append([bn, ol])
commonkey={}
if 'common' in groupcache[groupcounter]:
commonkey=groupcache[groupcounter]['common']
@@ -1132,9 +1132,9 @@ def analyzeline(m,case,line):
for i in [x.strip() for x in markoutercomma(c[1]).split('@,@')]:
if i: commonkey[c[0]].append(i)
groupcache[groupcounter]['common']=commonkey
- previous_context = ('common',bn,groupcounter)
+ previous_context = ('common', bn, groupcounter)
elif case=='use':
- m1=re.match(r'\A\s*(?P<name>\b[\w]+\b)\s*((,(\s*\bonly\b\s*:|(?P<notonly>))\s*(?P<list>.*))|)\s*\Z',m.group('after'),re.I)
+ m1=re.match(r'\A\s*(?P<name>\b[\w]+\b)\s*((,(\s*\bonly\b\s*:|(?P<notonly>))\s*(?P<list>.*))|)\s*\Z', m.group('after'), re.I)
if m1:
mm=m1.groupdict()
if 'use' not in groupcache[groupcounter]:
@@ -1150,7 +1150,7 @@ def analyzeline(m,case,line):
rl={}
for l in ll:
if '=' in l:
- m2=re.match(r'\A\s*(?P<local>\b[\w]+\b)\s*=\s*>\s*(?P<use>\b[\w]+\b)\s*\Z',l,re.I)
+ m2=re.match(r'\A\s*(?P<local>\b[\w]+\b)\s*=\s*>\s*(?P<use>\b[\w]+\b)\s*\Z', l, re.I)
if m2: rl[m2.group('local').strip()]=m2.group('use').strip()
else:
outmess('analyzeline: Not local=>use pattern found in %s\n'%repr(l))
@@ -1187,7 +1187,7 @@ def analyzeline(m,case,line):
print(m.groupdict())
outmess('analyzeline: No code implemented for line.\n')
-def appendmultiline(group, context_name,ml):
+def appendmultiline(group, context_name, ml):
if 'f2pymultilines' not in group:
group['f2pymultilines'] = {}
d = group['f2pymultilines']
@@ -1196,11 +1196,11 @@ def appendmultiline(group, context_name,ml):
d[context_name].append(ml)
return
-def cracktypespec0(typespec,ll):
+def cracktypespec0(typespec, ll):
selector=None
attr=None
- if re.match(r'double\s*complex',typespec,re.I): typespec='double complex'
- elif re.match(r'double\s*precision',typespec,re.I): typespec='double precision'
+ if re.match(r'double\s*complex', typespec, re.I): typespec='double complex'
+ elif re.match(r'double\s*precision', typespec, re.I): typespec='double precision'
else: typespec=typespec.strip().lower()
m1=selectpattern.match(markouterparen(ll))
if not m1:
@@ -1208,25 +1208,25 @@ def cracktypespec0(typespec,ll):
return
d=m1.groupdict()
for k in list(d.keys()): d[k]=unmarkouterparen(d[k])
- if typespec in ['complex','integer','logical','real','character','type']:
+ if typespec in ['complex', 'integer', 'logical', 'real', 'character', 'type']:
selector=d['this']
ll=d['after']
i=ll.find('::')
if i>=0:
attr=ll[:i].strip()
ll=ll[i+2:]
- return typespec,selector,attr,ll
+ return typespec, selector, attr, ll
#####
-namepattern=re.compile(r'\s*(?P<name>\b[\w]+\b)\s*(?P<after>.*)\s*\Z',re.I)
-kindselector=re.compile(r'\s*(\(\s*(kind\s*=)?\s*(?P<kind>.*)\s*\)|[*]\s*(?P<kind2>.*?))\s*\Z',re.I)
-charselector=re.compile(r'\s*(\((?P<lenkind>.*)\)|[*]\s*(?P<charlen>.*))\s*\Z',re.I)
-lenkindpattern=re.compile(r'\s*(kind\s*=\s*(?P<kind>.*?)\s*(@,@\s*len\s*=\s*(?P<len>.*)|)|(len\s*=\s*|)(?P<len2>.*?)\s*(@,@\s*(kind\s*=\s*|)(?P<kind2>.*)|))\s*\Z',re.I)
-lenarraypattern=re.compile(r'\s*(@\(@\s*(?!/)\s*(?P<array>.*?)\s*@\)@\s*[*]\s*(?P<len>.*?)|([*]\s*(?P<len2>.*?)|)\s*(@\(@\s*(?!/)\s*(?P<array2>.*?)\s*@\)@|))\s*(=\s*(?P<init>.*?)|(@\(@|)/\s*(?P<init2>.*?)\s*/(@\)@|)|)\s*\Z',re.I)
+namepattern=re.compile(r'\s*(?P<name>\b[\w]+\b)\s*(?P<after>.*)\s*\Z', re.I)
+kindselector=re.compile(r'\s*(\(\s*(kind\s*=)?\s*(?P<kind>.*)\s*\)|[*]\s*(?P<kind2>.*?))\s*\Z', re.I)
+charselector=re.compile(r'\s*(\((?P<lenkind>.*)\)|[*]\s*(?P<charlen>.*))\s*\Z', re.I)
+lenkindpattern=re.compile(r'\s*(kind\s*=\s*(?P<kind>.*?)\s*(@,@\s*len\s*=\s*(?P<len>.*)|)|(len\s*=\s*|)(?P<len2>.*?)\s*(@,@\s*(kind\s*=\s*|)(?P<kind2>.*)|))\s*\Z', re.I)
+lenarraypattern=re.compile(r'\s*(@\(@\s*(?!/)\s*(?P<array>.*?)\s*@\)@\s*[*]\s*(?P<len>.*?)|([*]\s*(?P<len2>.*?)|)\s*(@\(@\s*(?!/)\s*(?P<array2>.*?)\s*@\)@|))\s*(=\s*(?P<init>.*?)|(@\(@|)/\s*(?P<init2>.*?)\s*/(@\)@|)|)\s*\Z', re.I)
def removespaces(expr):
expr=expr.strip()
if len(expr)<=1: return expr
expr2=expr[0]
- for i in range(1,len(expr)-1):
+ for i in range(1, len(expr)-1):
if expr[i]==' ' and \
((expr[i+1] in "()[]{}=+-/* ") or (expr[i-1] in "()[]{}=+-/* ")): continue
expr2=expr2+expr[i]
@@ -1238,20 +1238,20 @@ def markinnerspaces(line):
cc1='"'
cb=''
for c in line:
- if cb=='\\' and c in ['\\','\'','"']:
+ if cb=='\\' and c in ['\\', '\'', '"']:
l=l+c;
cb=c
continue
- if f==0 and c in ['\'','"']: cc=c; cc1={'\'':'"','"':'\''}[c]
+ if f==0 and c in ['\'', '"']: cc=c; cc1={'\'':'"','"':'\''}[c]
if c==cc:f=f+1
elif c==cc:f=f-1
elif c==' ' and f==1: l=l+'@_@'; continue
l=l+c;cb=c
return l
-def updatevars(typespec,selector,attrspec,entitydecl):
- global groupcache,groupcounter
+def updatevars(typespec, selector, attrspec, entitydecl):
+ global groupcache, groupcounter
last_name = None
- kindselect,charselect,typename=cracktypespec(typespec,selector)
+ kindselect, charselect, typename=cracktypespec(typespec, selector)
if attrspec:
attrspec=[x.strip() for x in markoutercomma(attrspec).split('@,@')]
l = []
@@ -1268,8 +1268,8 @@ def updatevars(typespec,selector,attrspec,entitydecl):
el=[x.strip() for x in markoutercomma(entitydecl).split('@,@')]
el1=[]
for e in el:
- for e1 in [x.strip() for x in markoutercomma(removespaces(markinnerspaces(e)),comma=' ').split('@ @')]:
- if e1: el1.append(e1.replace('@_@',' '))
+ for e1 in [x.strip() for x in markoutercomma(removespaces(markinnerspaces(e)), comma=' ').split('@ @')]:
+ if e1: el1.append(e1.replace('@_@', ' '))
for e in el1:
m=namepattern.match(e)
if not m:
@@ -1283,29 +1283,29 @@ def updatevars(typespec,selector,attrspec,entitydecl):
if not_has_typespec:
edecl['typespec']=typespec
elif typespec and (not typespec==edecl['typespec']):
- outmess('updatevars: attempt to change the type of "%s" ("%s") to "%s". Ignoring.\n' % (ename,edecl['typespec'],typespec))
+ outmess('updatevars: attempt to change the type of "%s" ("%s") to "%s". Ignoring.\n' % (ename, edecl['typespec'], typespec))
if 'kindselector' not in edecl:
edecl['kindselector']=copy.copy(kindselect)
elif kindselect:
for k in list(kindselect.keys()):
if k in edecl['kindselector'] and (not kindselect[k]==edecl['kindselector'][k]):
- outmess('updatevars: attempt to change the kindselector "%s" of "%s" ("%s") to "%s". Ignoring.\n' % (k,ename,edecl['kindselector'][k],kindselect[k]))
+ outmess('updatevars: attempt to change the kindselector "%s" of "%s" ("%s") to "%s". Ignoring.\n' % (k, ename, edecl['kindselector'][k], kindselect[k]))
else: edecl['kindselector'][k]=copy.copy(kindselect[k])
if 'charselector' not in edecl and charselect:
if not_has_typespec:
edecl['charselector']=charselect
else:
errmess('updatevars:%s: attempt to change empty charselector to %r. Ignoring.\n' \
- %(ename,charselect))
+ %(ename, charselect))
elif charselect:
for k in list(charselect.keys()):
if k in edecl['charselector'] and (not charselect[k]==edecl['charselector'][k]):
- outmess('updatevars: attempt to change the charselector "%s" of "%s" ("%s") to "%s". Ignoring.\n' % (k,ename,edecl['charselector'][k],charselect[k]))
+ outmess('updatevars: attempt to change the charselector "%s" of "%s" ("%s") to "%s". Ignoring.\n' % (k, ename, edecl['charselector'][k], charselect[k]))
else: edecl['charselector'][k]=copy.copy(charselect[k])
if 'typename' not in edecl:
edecl['typename']=typename
elif typename and (not edecl['typename']==typename):
- outmess('updatevars: attempt to change the typename of "%s" ("%s") to "%s". Ignoring.\n' % (ename,edecl['typename'],typename))
+ outmess('updatevars: attempt to change the typename of "%s" ("%s") to "%s". Ignoring.\n' % (ename, edecl['typename'], typename))
if 'attrspec' not in edecl:
edecl['attrspec']=copy.copy(attrspec)
elif attrspec:
@@ -1322,7 +1322,7 @@ def updatevars(typespec,selector,attrspec,entitydecl):
m1=lenarraypattern.match(markouterparen(m.group('after')))
if m1:
d1=m1.groupdict()
- for lk in ['len','array','init']:
+ for lk in ['len', 'array', 'init']:
if d1[lk+'2'] is not None: d1[lk]=d1[lk+'2']; del d1[lk+'2']
for k in list(d1.keys()):
if d1[k] is not None: d1[k]=unmarkouterparen(d1[k])
@@ -1334,7 +1334,7 @@ def updatevars(typespec,selector,attrspec,entitydecl):
else:
d1['array']=d1['array']+','+d1['len']
del d1['len']
- errmess('updatevars: "%s %s" is mapped to "%s %s(%s)"\n'%(typespec,e,typespec,ename,d1['array']))
+ errmess('updatevars: "%s %s" is mapped to "%s %s(%s)"\n'%(typespec, e, typespec, ename, d1['array']))
if 'array' in d1:
dm = 'dimension(%s)'%d1['array']
if 'attrspec' not in edecl or (not edecl['attrspec']):
@@ -1345,11 +1345,11 @@ def updatevars(typespec,selector,attrspec,entitydecl):
if dm1[:9]=='dimension' and dm1!=dm:
del edecl['attrspec'][-1]
errmess('updatevars:%s: attempt to change %r to %r. Ignoring.\n' \
- % (ename,dm1,dm))
+ % (ename, dm1, dm))
break
if 'len' in d1:
- if typespec in ['complex','integer','logical','real']:
+ if typespec in ['complex', 'integer', 'logical', 'real']:
if ('kindselector' not in edecl) or (not edecl['kindselector']):
edecl['kindselector']={}
edecl['kindselector']['*']=d1['len']
@@ -1361,7 +1361,7 @@ def updatevars(typespec,selector,attrspec,entitydecl):
edecl['charselector']['*']=d1['len']
if 'init' in d1:
if '=' in edecl and (not edecl['=']==d1['init']):
- outmess('updatevars: attempt to change the init expression of "%s" ("%s") to "%s". Ignoring.\n' % (ename,edecl['='],d1['init']))
+ outmess('updatevars: attempt to change the init expression of "%s" ("%s") to "%s". Ignoring.\n' % (ename, edecl['='], d1['init']))
else:
edecl['=']=d1['init']
else:
@@ -1375,12 +1375,12 @@ def updatevars(typespec,selector,attrspec,entitydecl):
last_name = ename
return last_name
-def cracktypespec(typespec,selector):
+def cracktypespec(typespec, selector):
kindselect=None
charselect=None
typename=None
if selector:
- if typespec in ['complex','integer','logical','real']:
+ if typespec in ['complex', 'integer', 'logical', 'real']:
kindselect=kindselector.match(selector)
if not kindselect:
outmess('cracktypespec: no kindselector pattern found for %s\n'%(repr(selector)))
@@ -1390,7 +1390,7 @@ def cracktypespec(typespec,selector):
del kindselect['kind2']
for k in list(kindselect.keys()):
if not kindselect[k]: del kindselect[k]
- for k,i in list(kindselect.items()):
+ for k, i in list(kindselect.items()):
kindselect[k] = rmbadname1(i)
elif typespec=='character':
charselect=charselector.match(selector)
@@ -1403,7 +1403,7 @@ def cracktypespec(typespec,selector):
if charselect['lenkind']:
lenkind=lenkindpattern.match(markoutercomma(charselect['lenkind']))
lenkind=lenkind.groupdict()
- for lk in ['len','kind']:
+ for lk in ['len', 'kind']:
if lenkind[lk+'2']:
lenkind[lk]=lenkind[lk+'2']
charselect[lk]=lenkind[lk]
@@ -1411,15 +1411,15 @@ def cracktypespec(typespec,selector):
del charselect['lenkind']
for k in list(charselect.keys()):
if not charselect[k]: del charselect[k]
- for k,i in list(charselect.items()):
+ for k, i in list(charselect.items()):
charselect[k] = rmbadname1(i)
elif typespec=='type':
- typename=re.match(r'\s*\(\s*(?P<name>\w+)\s*\)',selector,re.I)
+ typename=re.match(r'\s*\(\s*(?P<name>\w+)\s*\)', selector, re.I)
if typename: typename=typename.group('name')
else: outmess('cracktypespec: no typename found in %s\n'%(repr(typespec+selector)))
else:
outmess('cracktypespec: no selector used for %s\n'%(repr(selector)))
- return kindselect,charselect,typename
+ return kindselect, charselect, typename
######
def setattrspec(decl,attr,force=0):
if not decl:
@@ -1479,7 +1479,7 @@ def getblockname(block,unknown='unknown'):
def setmesstext(block):
global filepositiontext
try:
- filepositiontext='In: %s:%s\n'%(block['from'],block['name'])
+ filepositiontext='In: %s:%s\n'%(block['from'], block['name'])
except:
pass
@@ -1498,7 +1498,7 @@ def get_useparameters(block, param_map=None):
usedict = get_usedict(block)
if not usedict:
return param_map
- for usename,mapping in list(usedict.items()):
+ for usename, mapping in list(usedict.items()):
usename = usename.lower()
if usename not in f90modulevars:
outmess('get_useparameters: no module %s info used by %s\n' % (usename, block.get('name')))
@@ -1510,10 +1510,10 @@ def get_useparameters(block, param_map=None):
# XXX: apply mapping
if mapping:
errmess('get_useparameters: mapping for %s not impl.' % (mapping))
- for k,v in list(params.items()):
+ for k, v in list(params.items()):
if k in param_map:
outmess('get_useparameters: overriding parameter %s with'\
- ' value from module %s' % (repr(k),repr(usename)))
+ ' value from module %s' % (repr(k), repr(usename)))
param_map[k] = v
return param_map
@@ -1525,11 +1525,11 @@ def postcrack2(block,tab='',param_map=None):
if isinstance(block, list):
ret = []
for g in block:
- g = postcrack2(g,tab=tab+'\t',param_map=param_map)
+ g = postcrack2(g, tab=tab+'\t', param_map=param_map)
ret.append(g)
return ret
setmesstext(block)
- outmess('%sBlock: %s\n'%(tab,block['name']),0)
+ outmess('%sBlock: %s\n'%(tab, block['name']), 0)
if param_map is None:
param_map = get_useparameters(block)
@@ -1546,7 +1546,7 @@ def postcrack2(block,tab='',param_map=None):
kind['kind'] = param_map[val]
new_body = []
for b in block['body']:
- b = postcrack2(b,tab=tab+'\t',param_map=param_map)
+ b = postcrack2(b, tab=tab+'\t', param_map=param_map)
new_body.append(b)
block['body'] = new_body
@@ -1558,13 +1558,13 @@ def postcrack(block,args=None,tab=''):
function return values
determine expression types if in argument list
"""
- global usermodules,onlyfunctions
+ global usermodules, onlyfunctions
if isinstance(block, list):
gret=[]
uret=[]
for g in block:
setmesstext(g)
- g=postcrack(g,tab=tab+'\t')
+ g=postcrack(g, tab=tab+'\t')
if 'name' in g and '__user__' in g['name']: # sort user routines to appear first
uret.append(g)
else:
@@ -1575,7 +1575,7 @@ def postcrack(block,args=None,tab=''):
raise Exception('postcrack: Expected block dictionary instead of ' + \
str(block))
if 'name' in block and not block['name']=='unknown_interface':
- outmess('%sBlock: %s\n'%(tab,block['name']),0)
+ outmess('%sBlock: %s\n'%(tab, block['name']), 0)
blocktype=block['block']
block=analyzeargs(block)
block=analyzecommon(block)
@@ -1583,7 +1583,7 @@ def postcrack(block,args=None,tab=''):
block['sortvars']=sortvarnames(block['vars'])
if 'args' in block and block['args']:
args=block['args']
- block['body']=analyzebody(block,args,tab=tab)
+ block['body']=analyzebody(block, args, tab=tab)
userisdefined=[]
## fromuser = []
@@ -1610,8 +1610,8 @@ def postcrack(block,args=None,tab=''):
mname='unknown__user__routines'
if mname in userisdefined:
i=1
- while '%s_%i'%(mname,i) in userisdefined: i=i+1
- mname='%s_%i'%(mname,i)
+ while '%s_%i'%(mname, i) in userisdefined: i=i+1
+ mname='%s_%i'%(mname, i)
interface={'block':'interface','body':[],'vars':{},'name':name+'_user_interface'}
for e in block['externals']:
## if e in fromuser:
@@ -1687,7 +1687,7 @@ def analyzecommon(block):
for k in list(block['common'].keys()):
comvars=[]
for e in block['common'][k]:
- m=re.match(r'\A\s*\b(?P<name>.*?)\b\s*(\((?P<dims>.*?)\)|)\s*\Z',e,re.I)
+ m=re.match(r'\A\s*\b(?P<name>.*?)\b\s*(\((?P<dims>.*?)\)|)\s*\Z', e, re.I)
if m:
dims=[]
if m.group('dims'):
@@ -1705,7 +1705,7 @@ def analyzecommon(block):
if n not in commonvars: commonvars.append(n)
else:
n=e
- errmess('analyzecommon: failed to extract "<name>[(<dims>)]" from "%s" in common /%s/.\n'%(e,k))
+ errmess('analyzecommon: failed to extract "<name>[(<dims>)]" from "%s" in common /%s/.\n'%(e, k))
comvars.append(n)
block['common'][k]=comvars
if 'commonvars' not in block:
@@ -1715,12 +1715,12 @@ def analyzecommon(block):
return block
def analyzebody(block,args,tab=''):
- global usermodules,skipfuncs,onlyfuncs,f90modulevars
+ global usermodules, skipfuncs, onlyfuncs, f90modulevars
setmesstext(block)
body=[]
for b in block['body']:
b['parent_block'] = block
- if b['block'] in ['function','subroutine']:
+ if b['block'] in ['function', 'subroutine']:
if args is not None and b['name'] not in args:
continue
else:
@@ -1732,11 +1732,11 @@ def analyzebody(block,args,tab=''):
b['saved_interface'] = crack2fortrangen(b, '\n'+' '*6, as_interface=True)
else: as_=args
- b=postcrack(b,as_,tab=tab+'\t')
+ b=postcrack(b, as_, tab=tab+'\t')
if b['block']=='interface' and not b['body']:
if 'f2pyenhancements' not in b:
continue
- if b['block'].replace(' ','')=='pythonmodule':
+ if b['block'].replace(' ', '')=='pythonmodule':
usermodules.append(b)
else:
if b['block']=='module':
@@ -1755,113 +1755,113 @@ def buildimplicitrules(block):
outmess('buildimplicitrules: no implicit rules for routine %s.\n'%repr(block['name']))
else:
for k in list(block['implicit'].keys()):
- if block['implicit'][k].get('typespec') not in ['static','automatic']:
+ if block['implicit'][k].get('typespec') not in ['static', 'automatic']:
implicitrules[k]=block['implicit'][k]
else:
attrrules[k]=block['implicit'][k]['typespec']
- return implicitrules,attrrules
+ return implicitrules, attrrules
def myeval(e,g=None,l=None):
- r = eval(e,g,l)
- if type(r) in [type(0),type(0.0)]:
+ r = eval(e, g, l)
+ if type(r) in [type(0), type(0.0)]:
return r
raise ValueError('r=%r' % (r))
-getlincoef_re_1 = re.compile(r'\A\b\w+\b\Z',re.I)
-def getlincoef(e,xset): # e = a*x+b ; x in xset
+getlincoef_re_1 = re.compile(r'\A\b\w+\b\Z', re.I)
+def getlincoef(e, xset): # e = a*x+b ; x in xset
try:
- c = int(myeval(e,{},{}))
- return 0,c,None
+ c = int(myeval(e, {}, {}))
+ return 0, c, None
except: pass
if getlincoef_re_1.match(e):
- return 1,0,e
+ return 1, 0, e
len_e = len(e)
for x in xset:
if len(x)>len_e: continue
if re.search(r'\w\s*\([^)]*\b'+x+r'\b', e):
# skip function calls having x as an argument, e.g max(1, x)
continue
- re_1 = re.compile(r'(?P<before>.*?)\b'+x+r'\b(?P<after>.*)',re.I)
+ re_1 = re.compile(r'(?P<before>.*?)\b'+x+r'\b(?P<after>.*)', re.I)
m = re_1.match(e)
if m:
try:
m1 = re_1.match(e)
while m1:
- ee = '%s(%s)%s'%(m1.group('before'),0,m1.group('after'))
+ ee = '%s(%s)%s'%(m1.group('before'), 0, m1.group('after'))
m1 = re_1.match(ee)
- b = myeval(ee,{},{})
+ b = myeval(ee, {}, {})
m1 = re_1.match(e)
while m1:
- ee = '%s(%s)%s'%(m1.group('before'),1,m1.group('after'))
+ ee = '%s(%s)%s'%(m1.group('before'), 1, m1.group('after'))
m1 = re_1.match(ee)
- a = myeval(ee,{},{}) - b
+ a = myeval(ee, {}, {}) - b
m1 = re_1.match(e)
while m1:
- ee = '%s(%s)%s'%(m1.group('before'),0.5,m1.group('after'))
+ ee = '%s(%s)%s'%(m1.group('before'), 0.5, m1.group('after'))
m1 = re_1.match(ee)
- c = myeval(ee,{},{})
+ c = myeval(ee, {}, {})
# computing another point to be sure that expression is linear
m1 = re_1.match(e)
while m1:
- ee = '%s(%s)%s'%(m1.group('before'),1.5,m1.group('after'))
+ ee = '%s(%s)%s'%(m1.group('before'), 1.5, m1.group('after'))
m1 = re_1.match(ee)
- c2 = myeval(ee,{},{})
+ c2 = myeval(ee, {}, {})
if (a*0.5+b==c and a*1.5+b==c2):
- return a,b,x
+ return a, b, x
except: pass
break
- return None,None,None
+ return None, None, None
_varname_match = re.compile(r'\A[a-z]\w*\Z').match
def getarrlen(dl,args,star='*'):
edl = []
- try: edl.append(myeval(dl[0],{},{}))
+ try: edl.append(myeval(dl[0], {}, {}))
except: edl.append(dl[0])
- try: edl.append(myeval(dl[1],{},{}))
+ try: edl.append(myeval(dl[1], {}, {}))
except: edl.append(dl[1])
if isinstance(edl[0], int):
p1 = 1-edl[0]
if p1==0: d = str(dl[1])
- elif p1<0: d = '%s-%s'%(dl[1],-p1)
- else: d = '%s+%s'%(dl[1],p1)
+ elif p1<0: d = '%s-%s'%(dl[1], -p1)
+ else: d = '%s+%s'%(dl[1], p1)
elif isinstance(edl[1], int):
p1 = 1+edl[1]
if p1==0: d='-(%s)' % (dl[0])
- else: d='%s-(%s)' % (p1,dl[0])
- else: d = '%s-(%s)+1'%(dl[1],dl[0])
- try: return repr(myeval(d,{},{})),None,None
+ else: d='%s-(%s)' % (p1, dl[0])
+ else: d = '%s-(%s)+1'%(dl[1], dl[0])
+ try: return repr(myeval(d, {}, {})), None, None
except: pass
- d1,d2=getlincoef(dl[0],args),getlincoef(dl[1],args)
- if None not in [d1[0],d2[0]]:
- if (d1[0],d2[0])==(0,0):
- return repr(d2[1]-d1[1]+1),None,None
+ d1, d2=getlincoef(dl[0], args), getlincoef(dl[1], args)
+ if None not in [d1[0], d2[0]]:
+ if (d1[0], d2[0])==(0, 0):
+ return repr(d2[1]-d1[1]+1), None, None
b = d2[1] - d1[1] + 1
- d1 = (d1[0],0,d1[2])
- d2 = (d2[0],b,d2[2])
+ d1 = (d1[0], 0, d1[2])
+ d2 = (d2[0], b, d2[2])
if d1[0]==0 and d2[2] in args:
- if b<0: return '%s * %s - %s'%(d2[0],d2[2],-b),d2[2],'+%s)/(%s)'%(-b,d2[0])
- elif b: return '%s * %s + %s'%(d2[0],d2[2],b),d2[2],'-%s)/(%s)'%(b,d2[0])
- else: return '%s * %s'%(d2[0],d2[2]),d2[2],')/(%s)'%(d2[0])
+ if b<0: return '%s * %s - %s'%(d2[0], d2[2], -b), d2[2], '+%s)/(%s)'%(-b, d2[0])
+ elif b: return '%s * %s + %s'%(d2[0], d2[2], b), d2[2], '-%s)/(%s)'%(b, d2[0])
+ else: return '%s * %s'%(d2[0], d2[2]), d2[2], ')/(%s)'%(d2[0])
if d2[0]==0 and d1[2] in args:
- if b<0: return '%s * %s - %s'%(-d1[0],d1[2],-b),d1[2],'+%s)/(%s)'%(-b,-d1[0])
- elif b: return '%s * %s + %s'%(-d1[0],d1[2],b),d1[2],'-%s)/(%s)'%(b,-d1[0])
- else: return '%s * %s'%(-d1[0],d1[2]),d1[2],')/(%s)'%(-d1[0])
+ if b<0: return '%s * %s - %s'%(-d1[0], d1[2], -b), d1[2], '+%s)/(%s)'%(-b, -d1[0])
+ elif b: return '%s * %s + %s'%(-d1[0], d1[2], b), d1[2], '-%s)/(%s)'%(b, -d1[0])
+ else: return '%s * %s'%(-d1[0], d1[2]), d1[2], ')/(%s)'%(-d1[0])
if d1[2]==d2[2] and d1[2] in args:
a = d2[0] - d1[0]
- if not a: return repr(b),None,None
- if b<0: return '%s * %s - %s'%(a,d1[2],-b),d2[2],'+%s)/(%s)'%(-b,a)
- elif b: return '%s * %s + %s'%(a,d1[2],b),d2[2],'-%s)/(%s)'%(b,a)
- else: return '%s * %s'%(a,d1[2]),d2[2],')/(%s)'%(a)
+ if not a: return repr(b), None, None
+ if b<0: return '%s * %s - %s'%(a, d1[2], -b), d2[2], '+%s)/(%s)'%(-b, a)
+ elif b: return '%s * %s + %s'%(a, d1[2], b), d2[2], '-%s)/(%s)'%(b, a)
+ else: return '%s * %s'%(a, d1[2]), d2[2], ')/(%s)'%(a)
if d1[0]==d2[0]==1:
c = str(d1[2])
if c not in args:
if _varname_match(c):
outmess('\tgetarrlen:variable "%s" undefined\n' % (c))
c = '(%s)'%c
- if b==0: d='%s-%s' % (d2[2],c)
- elif b<0: d='%s-%s-%s' % (d2[2],c,-b)
- else: d='%s-%s+%s' % (d2[2],c,b)
+ if b==0: d='%s-%s' % (d2[2], c)
+ elif b<0: d='%s-%s-%s' % (d2[2], c, -b)
+ else: d='%s-%s+%s' % (d2[2], c, b)
elif d1[0]==0:
c2 = str(d2[2])
if c2 not in args:
@@ -1870,11 +1870,11 @@ def getarrlen(dl,args,star='*'):
c2 = '(%s)'%c2
if d2[0]==1: pass
elif d2[0]==-1: c2='-%s' %c2
- else: c2='%s*%s'%(d2[0],c2)
+ else: c2='%s*%s'%(d2[0], c2)
if b==0: d=c2
- elif b<0: d='%s-%s' % (c2,-b)
- else: d='%s+%s' % (c2,b)
+ elif b<0: d='%s-%s' % (c2, -b)
+ else: d='%s+%s' % (c2, b)
elif d2[0]==0:
c1 = str(d1[2])
if c1 not in args:
@@ -1883,12 +1883,12 @@ def getarrlen(dl,args,star='*'):
c1 = '(%s)'%c1
if d1[0]==1: c1='-%s'%c1
elif d1[0]==-1: c1='+%s'%c1
- elif d1[0]<0: c1='+%s*%s'%(-d1[0],c1)
- else: c1 = '-%s*%s' % (d1[0],c1)
+ elif d1[0]<0: c1='+%s*%s'%(-d1[0], c1)
+ else: c1 = '-%s*%s' % (d1[0], c1)
if b==0: d=c1
- elif b<0: d='%s-%s' % (c1,-b)
- else: d='%s+%s' % (c1,b)
+ elif b<0: d='%s-%s' % (c1, -b)
+ else: d='%s+%s' % (c1, b)
else:
c1 = str(d1[2])
if c1 not in args:
@@ -1897,8 +1897,8 @@ def getarrlen(dl,args,star='*'):
c1 = '(%s)'%c1
if d1[0]==1: c1='-%s'%c1
elif d1[0]==-1: c1='+%s'%c1
- elif d1[0]<0: c1='+%s*%s'%(-d1[0],c1)
- else: c1 = '-%s*%s' % (d1[0],c1)
+ elif d1[0]<0: c1='+%s*%s'%(-d1[0], c1)
+ else: c1 = '-%s*%s' % (d1[0], c1)
c2 = str(d2[2])
if c2 not in args:
@@ -1907,25 +1907,25 @@ def getarrlen(dl,args,star='*'):
c2 = '(%s)'%c2
if d2[0]==1: pass
elif d2[0]==-1: c2='-%s' %c2
- else: c2='%s*%s'%(d2[0],c2)
+ else: c2='%s*%s'%(d2[0], c2)
- if b==0: d='%s%s' % (c2,c1)
- elif b<0: d='%s%s-%s' % (c2,c1,-b)
- else: d='%s%s+%s' % (c2,c1,b)
- return d,None,None
+ if b==0: d='%s%s' % (c2, c1)
+ elif b<0: d='%s%s-%s' % (c2, c1, -b)
+ else: d='%s%s+%s' % (c2, c1, b)
+ return d, None, None
-word_pattern = re.compile(r'\b[a-z][\w$]*\b',re.I)
+word_pattern = re.compile(r'\b[a-z][\w$]*\b', re.I)
def _get_depend_dict(name, vars, deps):
if name in vars:
- words = vars[name].get('depend',[])
+ words = vars[name].get('depend', [])
if '=' in vars[name] and not isstring(vars[name]):
for word in word_pattern.findall(vars[name]['=']):
if word not in words and word in vars:
words.append(word)
for word in words[:]:
- for w in deps.get(word,[]) \
+ for w in deps.get(word, []) \
or _get_depend_dict(word, vars, deps):
if w not in words:
words.append(w)
@@ -1999,9 +1999,9 @@ def _selected_real_kind_func(p, r=0, radix=0):
def get_parameters(vars, global_params={}):
params = copy.copy(global_params)
g_params = copy.copy(global_params)
- for name,func in [('kind',_kind_func),
- ('selected_int_kind',_selected_int_kind_func),
- ('selected_real_kind',_selected_real_kind_func),
+ for name, func in [('kind', _kind_func),
+ ('selected_int_kind', _selected_int_kind_func),
+ ('selected_real_kind', _selected_real_kind_func),
]:
if name not in g_params:
g_params[name] = func
@@ -2009,22 +2009,22 @@ def get_parameters(vars, global_params={}):
for n in get_sorted_names(vars):
if 'attrspec' in vars[n] and 'parameter' in vars[n]['attrspec']:
param_names.append(n)
- kind_re = re.compile(r'\bkind\s*\(\s*(?P<value>.*)\s*\)',re.I)
- selected_int_kind_re = re.compile(r'\bselected_int_kind\s*\(\s*(?P<value>.*)\s*\)',re.I)
- selected_kind_re = re.compile(r'\bselected_(int|real)_kind\s*\(\s*(?P<value>.*)\s*\)',re.I)
+ kind_re = re.compile(r'\bkind\s*\(\s*(?P<value>.*)\s*\)', re.I)
+ selected_int_kind_re = re.compile(r'\bselected_int_kind\s*\(\s*(?P<value>.*)\s*\)', re.I)
+ selected_kind_re = re.compile(r'\bselected_(int|real)_kind\s*\(\s*(?P<value>.*)\s*\)', re.I)
for n in param_names:
if '=' in vars[n]:
v = vars[n]['=']
if islogical(vars[n]):
v = v.lower()
for repl in [
- ('.false.','False'),
- ('.true.','True'),
+ ('.false.', 'False'),
+ ('.true.', 'True'),
#TODO: test .eq., .neq., etc replacements.
]:
v = v.replace(*repl)
- v = kind_re.sub(r'kind("\1")',v)
- v = selected_int_kind_re.sub(r'selected_int_kind(\1)',v)
+ v = kind_re.sub(r'kind("\1")', v)
+ v = selected_int_kind_re.sub(r'selected_int_kind(\1)', v)
if isinteger(vars[n]) and not selected_kind_re.match(v):
v = v.split('_')[0]
if isdouble(vars[n]):
@@ -2037,11 +2037,11 @@ def get_parameters(vars, global_params={}):
if v[0]=='(' and v[-1]==')':
l = markoutercomma(v[1:-1]).split('@,@')
try:
- params[n] = eval(v,g_params,params)
+ params[n] = eval(v, g_params, params)
except Exception as msg:
params[n] = v
#print params
- outmess('get_parameters: got "%s" on %s\n' % (msg,repr(v)))
+ outmess('get_parameters: got "%s" on %s\n' % (msg, repr(v)))
if isstring(vars[n]) and isinstance(params[n], int):
params[n] = chr(params[n])
nl = n.lower()
@@ -2052,30 +2052,30 @@ def get_parameters(vars, global_params={}):
outmess('get_parameters:parameter %s does not have value?!\n'%(repr(n)))
return params
-def _eval_length(length,params):
- if length in ['(:)','(*)','*']:
+def _eval_length(length, params):
+ if length in ['(:)', '(*)', '*']:
return '(*)'
- return _eval_scalar(length,params)
+ return _eval_scalar(length, params)
_is_kind_number = re.compile(r'\d+_').match
-def _eval_scalar(value,params):
+def _eval_scalar(value, params):
if _is_kind_number(value):
value = value.split('_')[0]
try:
- value = str(eval(value,{},params))
+ value = str(eval(value, {}, params))
except (NameError, SyntaxError):
return value
except Exception as msg:
errmess('"%s" in evaluating %r '\
'(available names: %s)\n' \
- % (msg,value,list(params.keys())))
+ % (msg, value, list(params.keys())))
return value
def analyzevars(block):
global f90modulevars
setmesstext(block)
- implicitrules,attrrules=buildimplicitrules(block)
+ implicitrules, attrrules=buildimplicitrules(block)
vars=copy.copy(block['vars'])
if block['block']=='function' and block['name'] not in vars:
vars[block['name']]={}
@@ -2084,9 +2084,9 @@ def analyzevars(block):
if 'attrspec' in block['vars']['']:
gen=block['vars']['']['attrspec']
for n in list(vars.keys()):
- for k in ['public','private']:
+ for k in ['public', 'private']:
if k in gen:
- vars[n]=setattrspec(vars[n],k)
+ vars[n]=setattrspec(vars[n], k)
svars=[]
args = block['args']
for a in args:
@@ -2109,10 +2109,10 @@ def analyzevars(block):
try:
dep_matches[n]
except KeyError:
- dep_matches[n] = re.compile(r'.*\b%s\b'%(v),re.I).match
+ dep_matches[n] = re.compile(r'.*\b%s\b'%(v), re.I).match
for n in svars:
if n[0] in list(attrrules.keys()):
- vars[n]=setattrspec(vars[n],attrrules[n[0]])
+ vars[n]=setattrspec(vars[n], attrrules[n[0]])
if 'typespec' not in vars[n]:
if not('attrspec' in vars[n] and 'external' in vars[n]['attrspec']):
if implicitrules:
@@ -2124,15 +2124,15 @@ def analyzevars(block):
vars[n][k]=implicitrules[ln0][k]
elif k=='attrspec':
for l in implicitrules[ln0][k]:
- vars[n]=setattrspec(vars[n],l)
+ vars[n]=setattrspec(vars[n], l)
elif n in block['args']:
- outmess('analyzevars: typespec of variable %s is not defined in routine %s.\n'%(repr(n),block['name']))
+ outmess('analyzevars: typespec of variable %s is not defined in routine %s.\n'%(repr(n), block['name']))
if 'charselector' in vars[n]:
if 'len' in vars[n]['charselector']:
l = vars[n]['charselector']['len']
try:
- l = str(eval(l,{},params))
+ l = str(eval(l, {}, params))
except:
pass
vars[n]['charselector']['len'] = l
@@ -2141,7 +2141,7 @@ def analyzevars(block):
if 'kind' in vars[n]['kindselector']:
l = vars[n]['kindselector']['kind']
try:
- l = str(eval(l,{},params))
+ l = str(eval(l, {}, params))
except:
pass
vars[n]['kindselector']['kind'] = l
@@ -2151,14 +2151,14 @@ def analyzevars(block):
attr=vars[n]['attrspec']
attr.reverse()
vars[n]['attrspec']=[]
- dim,intent,depend,check,note=None,None,None,None,None
+ dim, intent, depend, check, note=None, None, None, None, None
for a in attr:
if a[:9]=='dimension': dim=(a[9:].strip())[1:-1]
elif a[:6]=='intent': intent=(a[6:].strip())[1:-1]
elif a[:6]=='depend': depend=(a[6:].strip())[1:-1]
elif a[:5]=='check': check=(a[5:].strip())[1:-1]
elif a[:4]=='note': note=(a[4:].strip())[1:-1]
- else: vars[n]=setattrspec(vars[n],a)
+ else: vars[n]=setattrspec(vars[n], a)
if intent:
if 'intent' not in vars[n]:
vars[n]['intent']=[]
@@ -2167,8 +2167,8 @@ def analyzevars(block):
vars[n]['intent'].append(c)
intent=None
if note:
- note=note.replace('\\n\\n','\n\n')
- note=note.replace('\\n ','\n')
+ note=note.replace('\\n\\n', '\n\n')
+ note=note.replace('\\n ', '\n')
if 'note' not in vars[n]:
vars[n]['note']=[note]
else:
@@ -2197,23 +2197,23 @@ def analyzevars(block):
if d in params:
d = str(params[d])
for p in list(params.keys()):
- m = re.match(r'(?P<before>.*?)\b'+p+r'\b(?P<after>.*)',d,re.I)
+ m = re.match(r'(?P<before>.*?)\b'+p+r'\b(?P<after>.*)', d, re.I)
if m:
#outmess('analyzevars:replacing parameter %s in %s (dimension of %s) with %s\n'%(`p`,`d`,`n`,`params[p]`))
d = m.group('before')+str(params[p])+m.group('after')
if d==star:
dl = [star]
else:
- dl=markoutercomma(d,':').split('@:@')
+ dl=markoutercomma(d, ':').split('@:@')
if len(dl)==2 and '*' in dl: # e.g. dimension(5:*)
dl = ['*']
d = '*'
- if len(dl)==1 and not dl[0]==star: dl = ['1',dl[0]]
+ if len(dl)==1 and not dl[0]==star: dl = ['1', dl[0]]
if len(dl)==2:
- d,v,di = getarrlen(dl,list(block['vars'].keys()))
+ d, v, di = getarrlen(dl, list(block['vars'].keys()))
if d[:4] == '1 * ': d = d[4:]
if di and di[-4:] == '/(1)': di = di[:-4]
- if v: savelindims[d] = v,di
+ if v: savelindims[d] = v, di
vars[n]['dimension'].append(d)
if 'dimension' in vars[n]:
if isintent_c(vars[n]):
@@ -2226,9 +2226,9 @@ def analyzevars(block):
if '*' in d:
d = d['*']
errmess('analyzevars: character array "character*%s %s(%s)" is considered as "character %s(%s)"; "intent(c)" is forced.\n'\
- %(d,n,
+ %(d, n,
','.join(vars[n]['dimension']),
- n,','.join(vars[n]['dimension']+[d])))
+ n, ','.join(vars[n]['dimension']+[d])))
vars[n]['dimension'].append(d)
del vars[n]['charselector']
if 'intent' not in vars[n]:
@@ -2253,14 +2253,14 @@ def analyzevars(block):
#origd = d
if d not in vars:
if d in savelindims:
- pd,ad='(',savelindims[d][1]
+ pd, ad='(', savelindims[d][1]
d = savelindims[d][0]
else:
for r in block['args']:
#for r in block['vars'].iterkeys():
if r not in vars:
continue
- if re.match(r'.*?\b'+r+r'\b',d,re.I):
+ if re.match(r'.*?\b'+r+r'\b', d, re.I):
ddeps.append(r)
if d in vars:
if 'attrspec' in vars[d]:
@@ -2275,22 +2275,22 @@ def analyzevars(block):
and l_or(isintent_in, isintent_inout, isintent_inplace)(vars[n]):
vars[d]['depend']=[n]
if ni>1:
- vars[d]['=']='%s%s(%s,%s)%s'% (pd,shape_macro,n,i,ad)
+ vars[d]['=']='%s%s(%s,%s)%s'% (pd, shape_macro, n, i, ad)
else:
- vars[d]['=']='%slen(%s)%s'% (pd,n,ad)
+ vars[d]['=']='%slen(%s)%s'% (pd, n, ad)
# /---< no check
if 1 and 'check' not in vars[d]:
if ni>1:
vars[d]['check']=['%s%s(%s,%i)%s==%s'\
- %(pd,shape_macro,n,i,ad,d)]
+ %(pd, shape_macro, n, i, ad, d)]
else:
- vars[d]['check']=['%slen(%s)%s>=%s'%(pd,n,ad,d)]
+ vars[d]['check']=['%slen(%s)%s>=%s'%(pd, n, ad, d)]
if 'attrspec' not in vars[d]:
vars[d]['attrspec']=['optional']
if ('optional' not in vars[d]['attrspec']) and\
('required' not in vars[d]['attrspec']):
vars[d]['attrspec'].append('optional')
- elif d not in ['*',':']:
+ elif d not in ['*', ':']:
#/----< no check
#if ni>1: vars[n]['check'].append('shape(%s,%i)==%s'%(n,i,d))
#else: vars[n]['check'].append('len(%s)>=%s'%(n,d))
@@ -2325,11 +2325,11 @@ def analyzevars(block):
vars[n]['attrspec'].append('optional')
if 'depend' not in vars[n]:
vars[n]['depend']=[]
- for v,m in list(dep_matches.items()):
+ for v, m in list(dep_matches.items()):
if m(vars[n]['=']): vars[n]['depend'].append(v)
if not vars[n]['depend']: del vars[n]['depend']
if isscalar(vars[n]):
- vars[n]['='] = _eval_scalar(vars[n]['='],params)
+ vars[n]['='] = _eval_scalar(vars[n]['='], params)
for n in list(vars.keys()):
if n==block['name']: # n is block name
@@ -2337,38 +2337,38 @@ def analyzevars(block):
block['note']=vars[n]['note']
if block['block']=='function':
if 'result' in block and block['result'] in vars:
- vars[n]=appenddecl(vars[n],vars[block['result']])
+ vars[n]=appenddecl(vars[n], vars[block['result']])
if 'prefix' in block:
pr=block['prefix']; ispure=0; isrec=1
- pr1=pr.replace('pure','')
+ pr1=pr.replace('pure', '')
ispure=(not pr==pr1)
- pr=pr1.replace('recursive','')
+ pr=pr1.replace('recursive', '')
isrec=(not pr==pr1)
m=typespattern[0].match(pr)
if m:
- typespec,selector,attr,edecl=cracktypespec0(m.group('this'),m.group('after'))
- kindselect,charselect,typename=cracktypespec(typespec,selector)
+ typespec, selector, attr, edecl=cracktypespec0(m.group('this'), m.group('after'))
+ kindselect, charselect, typename=cracktypespec(typespec, selector)
vars[n]['typespec']=typespec
if kindselect:
if 'kind' in kindselect:
try:
- kindselect['kind'] = eval(kindselect['kind'],{},params)
+ kindselect['kind'] = eval(kindselect['kind'], {}, params)
except:
pass
vars[n]['kindselector']=kindselect
if charselect: vars[n]['charselector']=charselect
if typename: vars[n]['typename']=typename
- if ispure: vars[n]=setattrspec(vars[n],'pure')
- if isrec: vars[n]=setattrspec(vars[n],'recursive')
+ if ispure: vars[n]=setattrspec(vars[n], 'pure')
+ if isrec: vars[n]=setattrspec(vars[n], 'recursive')
else:
outmess('analyzevars: prefix (%s) were not used\n'%repr(block['prefix']))
- if not block['block'] in ['module','pythonmodule','python module','block data']:
+ if not block['block'] in ['module', 'pythonmodule', 'python module', 'block data']:
if 'commonvars' in block:
neededvars=copy.copy(block['args']+block['commonvars'])
else:
neededvars=copy.copy(block['args'])
for n in list(vars.keys()):
- if l_or(isintent_callback,isintent_aux)(vars[n]):
+ if l_or(isintent_callback, isintent_aux)(vars[n]):
neededvars.append(n)
if 'entry' in block:
neededvars.extend(list(block['entry'].keys()))
@@ -2381,7 +2381,7 @@ def analyzevars(block):
neededvars.append(block['result'])
else:
neededvars.append(block['name'])
- if block['block'] in ['subroutine','function']:
+ if block['block'] in ['subroutine', 'function']:
name = block['name']
if name in vars and 'intent' in vars[name]:
block['intent'] = vars[name]['intent']
@@ -2392,13 +2392,13 @@ def analyzevars(block):
del vars[n]
return vars
-analyzeargs_re_1 = re.compile(r'\A[a-z]+[\w$]*\Z',re.I)
+analyzeargs_re_1 = re.compile(r'\A[a-z]+[\w$]*\Z', re.I)
def expr2name(a, block, args=[]):
orig_a = a
a_is_expr = not analyzeargs_re_1.match(a)
if a_is_expr: # `a` is an expression
- implicitrules,attrrules=buildimplicitrules(block)
- at=determineexprtype(a,block['vars'],implicitrules)
+ implicitrules, attrrules=buildimplicitrules(block)
+ at=determineexprtype(a, block['vars'], implicitrules)
na='e_'
for c in a:
c = c.lower()
@@ -2423,12 +2423,12 @@ def expr2name(a, block, args=[]):
else:
block['vars'][a]={}
if 'externals' in block and orig_a in block['externals']+block['interfaced']:
- block['vars'][a]=setattrspec(block['vars'][a],'external')
+ block['vars'][a]=setattrspec(block['vars'][a], 'external')
return a
def analyzeargs(block):
setmesstext(block)
- implicitrules,attrrules=buildimplicitrules(block)
+ implicitrules, attrrules=buildimplicitrules(block)
if 'args' not in block:
block['args']=[]
args=[]
@@ -2437,7 +2437,7 @@ def analyzeargs(block):
args.append(a)
block['args']=args
if 'entry' in block:
- for k,args1 in list(block['entry'].items()):
+ for k, args1 in list(block['entry'].items()):
for a in args1:
if a not in block['vars']:
block['vars'][a]={}
@@ -2452,11 +2452,11 @@ def analyzeargs(block):
block['vars'][block['result']]={}
return block
-determineexprtype_re_1 = re.compile(r'\A\(.+?[,].+?\)\Z',re.I)
-determineexprtype_re_2 = re.compile(r'\A[+-]?\d+(_(P<name>[\w]+)|)\Z',re.I)
-determineexprtype_re_3 = re.compile(r'\A[+-]?[\d.]+[\d+-de.]*(_(P<name>[\w]+)|)\Z',re.I)
-determineexprtype_re_4 = re.compile(r'\A\(.*\)\Z',re.I)
-determineexprtype_re_5 = re.compile(r'\A(?P<name>\w+)\s*\(.*?\)\s*\Z',re.I)
+determineexprtype_re_1 = re.compile(r'\A\(.+?[,].+?\)\Z', re.I)
+determineexprtype_re_2 = re.compile(r'\A[+-]?\d+(_(P<name>[\w]+)|)\Z', re.I)
+determineexprtype_re_3 = re.compile(r'\A[+-]?[\d.]+[\d+-de.]*(_(P<name>[\w]+)|)\Z', re.I)
+determineexprtype_re_4 = re.compile(r'\A\(.*\)\Z', re.I)
+determineexprtype_re_5 = re.compile(r'\A(?P<name>\w+)\s*\(.*?\)\s*\Z', re.I)
def _ensure_exprdict(r):
if isinstance(r, int):
return {'typespec':'integer'}
@@ -2484,18 +2484,18 @@ def determineexprtype(expr,vars,rules={}):
if 'name' in m.groupdict() and m.group('name'):
outmess('determineexprtype: selected kind types not supported (%s)\n'%repr(expr))
return {'typespec':'real'}
- for op in ['+','-','*','/']:
- for e in [x.strip() for x in markoutercomma(expr,comma=op).split('@'+op+'@')]:
+ for op in ['+', '-', '*', '/']:
+ for e in [x.strip() for x in markoutercomma(expr, comma=op).split('@'+op+'@')]:
if e in vars:
return _ensure_exprdict(vars[e])
t={}
if determineexprtype_re_4.match(expr): # in parenthesis
- t=determineexprtype(expr[1:-1],vars,rules)
+ t=determineexprtype(expr[1:-1], vars, rules)
else:
m = determineexprtype_re_5.match(expr)
if m:
rn=m.group('name')
- t=determineexprtype(m.group('name'),vars,rules)
+ t=determineexprtype(m.group('name'), vars, rules)
if t and 'attrspec' in t:
del t['attrspec']
if not t:
@@ -2514,12 +2514,12 @@ def crack2fortrangen(block,tab='\n', as_interface=False):
ret=''
if isinstance(block, list):
for g in block:
- if g and g['block'] in ['function','subroutine']:
+ if g and g['block'] in ['function', 'subroutine']:
if g['name'] in skipfuncs:
continue
if onlyfuncs and g['name'] not in onlyfuncs:
continue
- ret=ret+crack2fortrangen(g,tab,as_interface=as_interface)
+ ret=ret+crack2fortrangen(g, tab, as_interface=as_interface)
return ret
prefix=''
name=''
@@ -2540,20 +2540,20 @@ def crack2fortrangen(block,tab='\n', as_interface=False):
f2pyenhancements = ''
if 'f2pyenhancements' in block:
for k in list(block['f2pyenhancements'].keys()):
- f2pyenhancements = '%s%s%s %s'%(f2pyenhancements,tab+tabchar,k,block['f2pyenhancements'][k])
- intent_lst = block.get('intent',[])[:]
+ f2pyenhancements = '%s%s%s %s'%(f2pyenhancements, tab+tabchar, k, block['f2pyenhancements'][k])
+ intent_lst = block.get('intent', [])[:]
if blocktype=='function' and 'callback' in intent_lst:
intent_lst.remove('callback')
if intent_lst:
f2pyenhancements = '%s%sintent(%s) %s'%\
- (f2pyenhancements,tab+tabchar,
- ','.join(intent_lst),name)
+ (f2pyenhancements, tab+tabchar,
+ ','.join(intent_lst), name)
use=''
if 'use' in block:
- use=use2fortran(block['use'],tab+tabchar)
+ use=use2fortran(block['use'], tab+tabchar)
common=''
if 'common' in block:
- common=common2fortran(block['common'],tab+tabchar)
+ common=common2fortran(block['common'], tab+tabchar)
if name=='unknown_interface': name=''
result=''
if 'result' in block:
@@ -2562,35 +2562,35 @@ def crack2fortrangen(block,tab='\n', as_interface=False):
argsl.append(block['result'])
#if 'prefix' in block:
# prefix=block['prefix']+' '
- body=crack2fortrangen(block['body'],tab+tabchar)
- vars=vars2fortran(block,block['vars'],argsl,tab+tabchar, as_interface=as_interface)
+ body=crack2fortrangen(block['body'], tab+tabchar)
+ vars=vars2fortran(block, block['vars'], argsl, tab+tabchar, as_interface=as_interface)
mess=''
if 'from' in block and not as_interface:
mess='! in %s'%block['from']
if 'entry' in block:
entry_stmts = ''
- for k,i in list(block['entry'].items()):
+ for k, i in list(block['entry'].items()):
entry_stmts = '%s%sentry %s(%s)' \
- % (entry_stmts,tab+tabchar,k,','.join(i))
+ % (entry_stmts, tab+tabchar, k, ','.join(i))
body = body + entry_stmts
if blocktype=='block data' and name=='_BLOCK_DATA_':
name = ''
- ret='%s%s%s %s%s%s %s%s%s%s%s%s%send %s %s'%(tab,prefix,blocktype,name,args,result,mess,f2pyenhancements,use,vars,common,body,tab,blocktype,name)
+ ret='%s%s%s %s%s%s %s%s%s%s%s%s%send %s %s'%(tab, prefix, blocktype, name, args, result, mess, f2pyenhancements, use, vars, common, body, tab, blocktype, name)
return ret
def common2fortran(common,tab=''):
ret=''
for k in list(common.keys()):
if k=='_BLNK_':
- ret='%s%scommon %s'%(ret,tab,','.join(common[k]))
+ ret='%s%scommon %s'%(ret, tab, ','.join(common[k]))
else:
- ret='%s%scommon /%s/ %s'%(ret,tab,k,','.join(common[k]))
+ ret='%s%scommon /%s/ %s'%(ret, tab, k, ','.join(common[k]))
return ret
def use2fortran(use,tab=''):
ret=''
for m in list(use.keys()):
- ret='%s%suse %s,'%(ret,tab,m)
+ ret='%s%suse %s,'%(ret, tab, m)
if use[m]=={}:
if ret and ret[-1]==',': ret=ret[:-1]
continue
@@ -2600,9 +2600,9 @@ def use2fortran(use,tab=''):
c=' '
for k in list(use[m]['map'].keys()):
if k==use[m]['map'][k]:
- ret='%s%s%s'%(ret,c,k); c=','
+ ret='%s%s%s'%(ret, c, k); c=','
else:
- ret='%s%s%s=>%s'%(ret,c,k,use[m]['map'][k]); c=','
+ ret='%s%s%s=>%s'%(ret, c, k, use[m]['map'][k]); c=','
if ret and ret[-1]==',': ret=ret[:-1]
return ret
@@ -2647,13 +2647,13 @@ def vars2fortran(block,vars,args,tab='', as_interface=False):
if 'depend' in vars[a]:
for d in vars[a]['depend']:
if d in vars and 'depend' in vars[d] and a in vars[d]['depend']:
- errmess('vars2fortran: Warning: cross-dependence between variables "%s" and "%s"\n'%(a,d))
+ errmess('vars2fortran: Warning: cross-dependence between variables "%s" and "%s"\n'%(a, d))
if 'externals' in block and a in block['externals']:
if isintent_callback(vars[a]):
- ret='%s%sintent(callback) %s'%(ret,tab,a)
- ret='%s%sexternal %s'%(ret,tab,a)
+ ret='%s%sintent(callback) %s'%(ret, tab, a)
+ ret='%s%sexternal %s'%(ret, tab, a)
if isoptional(vars[a]):
- ret='%s%soptional %s'%(ret,tab,a)
+ ret='%s%soptional %s'%(ret, tab, a)
if a in vars and 'typespec' not in vars[a]:
continue
cont=1
@@ -2671,33 +2671,33 @@ def vars2fortran(block,vars,args,tab='', as_interface=False):
if 'typespec' not in vars[a]:
if 'attrspec' in vars[a] and 'external' in vars[a]['attrspec']:
if a in args:
- ret='%s%sexternal %s'%(ret,tab,a)
+ ret='%s%sexternal %s'%(ret, tab, a)
continue
show(vars[a])
outmess('vars2fortran: No typespec for argument "%s".\n'%a)
continue
vardef=vars[a]['typespec']
if vardef=='type' and 'typename' in vars[a]:
- vardef='%s(%s)'%(vardef,vars[a]['typename'])
+ vardef='%s(%s)'%(vardef, vars[a]['typename'])
selector={}
if 'kindselector' in vars[a]:
selector=vars[a]['kindselector']
elif 'charselector' in vars[a]:
selector=vars[a]['charselector']
if '*' in selector:
- if selector['*'] in ['*',':']:
- vardef='%s*(%s)'%(vardef,selector['*'])
+ if selector['*'] in ['*', ':']:
+ vardef='%s*(%s)'%(vardef, selector['*'])
else:
- vardef='%s*%s'%(vardef,selector['*'])
+ vardef='%s*%s'%(vardef, selector['*'])
else:
if 'len' in selector:
- vardef='%s(len=%s'%(vardef,selector['len'])
+ vardef='%s(len=%s'%(vardef, selector['len'])
if 'kind' in selector:
- vardef='%s,kind=%s)'%(vardef,selector['kind'])
+ vardef='%s,kind=%s)'%(vardef, selector['kind'])
else:
vardef='%s)'%(vardef)
elif 'kind' in selector:
- vardef='%s(kind=%s)'%(vardef,selector['kind'])
+ vardef='%s(kind=%s)'%(vardef, selector['kind'])
c=' '
if 'attrspec' in vars[a]:
attr=[]
@@ -2705,47 +2705,47 @@ def vars2fortran(block,vars,args,tab='', as_interface=False):
if l not in ['external']:
attr.append(l)
if attr:
- vardef='%s, %s'%(vardef,','.join(attr))
+ vardef='%s, %s'%(vardef, ','.join(attr))
c=','
if 'dimension' in vars[a]:
# if not isintent_c(vars[a]):
# vars[a]['dimension'].reverse()
- vardef='%s%sdimension(%s)'%(vardef,c,','.join(vars[a]['dimension']))
+ vardef='%s%sdimension(%s)'%(vardef, c, ','.join(vars[a]['dimension']))
c=','
if 'intent' in vars[a]:
lst = true_intent_list(vars[a])
if lst:
- vardef='%s%sintent(%s)'%(vardef,c,','.join(lst))
+ vardef='%s%sintent(%s)'%(vardef, c, ','.join(lst))
c=','
if 'check' in vars[a]:
- vardef='%s%scheck(%s)'%(vardef,c,','.join(vars[a]['check']))
+ vardef='%s%scheck(%s)'%(vardef, c, ','.join(vars[a]['check']))
c=','
if 'depend' in vars[a]:
- vardef='%s%sdepend(%s)'%(vardef,c,','.join(vars[a]['depend']))
+ vardef='%s%sdepend(%s)'%(vardef, c, ','.join(vars[a]['depend']))
c=','
if '=' in vars[a]:
v = vars[a]['=']
- if vars[a]['typespec'] in ['complex','double complex']:
+ if vars[a]['typespec'] in ['complex', 'double complex']:
try:
v = eval(v)
- v = '(%s,%s)' % (v.real,v.imag)
+ v = '(%s,%s)' % (v.real, v.imag)
except:
pass
- vardef='%s :: %s=%s'%(vardef,a,v)
+ vardef='%s :: %s=%s'%(vardef, a, v)
else:
- vardef='%s :: %s'%(vardef,a)
- ret='%s%s%s'%(ret,tab,vardef)
+ vardef='%s :: %s'%(vardef, a)
+ ret='%s%s%s'%(ret, tab, vardef)
return ret
######
def crackfortran(files):
global usermodules
- outmess('Reading fortran codes...\n',0)
- readfortrancode(files,crackline)
- outmess('Post-processing...\n',0)
+ outmess('Reading fortran codes...\n', 0)
+ readfortrancode(files, crackline)
+ outmess('Post-processing...\n', 0)
usermodules=[]
postlist=postcrack(grouplist[0])
- outmess('Post-processing (stage 2)...\n',0)
+ outmess('Post-processing (stage 2)...\n', 0)
postlist=postcrack2(postlist)
return usermodules+postlist
@@ -2778,7 +2778,7 @@ if __name__ == "__main__":
quiet=0
elif l=='-fix':
if strictf77:
- outmess('Use option -f90 before -fix if Fortran 90 code is in fix form.\n',0)
+ outmess('Use option -f90 before -fix if Fortran 90 code is in fix form.\n', 0)
skipemptyends=1
sourcecodeform='fix'
elif l=='-skipemptyends':
@@ -2820,13 +2820,13 @@ if __name__ == "__main__":
that should not need one (expect if you are scanning F90 code
for non module blocks but then you should use flag -skipemptyends
and also be sure that the files do not contain programs without program statement).
-""",0)
+""", 0)
- postlist=crackfortran(files,funcs)
+ postlist=crackfortran(files, funcs)
if pyffilename:
- outmess('Writing fortran code to file %s\n'%repr(pyffilename),0)
+ outmess('Writing fortran code to file %s\n'%repr(pyffilename), 0)
pyf=crack2fortran(postlist)
- f=open(pyffilename,'w')
+ f=open(pyffilename, 'w')
f.write(pyf)
f.close()
if showblocklist:
diff --git a/numpy/f2py/diagnose.py b/numpy/f2py/diagnose.py
index f00c3f0ac..68d7e48d2 100644
--- a/numpy/f2py/diagnose.py
+++ b/numpy/f2py/diagnose.py
@@ -37,7 +37,7 @@ def run():
from numpy.f2py import f2py2e
has_f2py2e = 1
except ImportError:
- print('Failed to import f2py2e:',sys.exc_info()[1])
+ print('Failed to import f2py2e:', sys.exc_info()[1])
has_f2py2e = 0
try:
@@ -48,7 +48,7 @@ def run():
import numpy_distutils
has_numpy_distutils = 1
except ImportError:
- print('Failed to import numpy_distutils:',sys.exc_info()[1])
+ print('Failed to import numpy_distutils:', sys.exc_info()[1])
has_numpy_distutils = 0
if has_newnumpy:
@@ -62,9 +62,9 @@ def run():
if has_f2py2e:
try:
print('Found f2py2e version %r in %s' % \
- (f2py2e.__version__.version,f2py2e.__file__))
+ (f2py2e.__version__.version, f2py2e.__file__))
except Exception as msg:
- print('error:',msg)
+ print('error:', msg)
print('------')
if has_numpy_distutils:
@@ -79,7 +79,7 @@ def run():
numpy_distutils.__file__))
print('------')
except Exception as msg:
- print('error:',msg)
+ print('error:', msg)
print('------')
try:
if has_numpy_distutils == 1:
@@ -93,10 +93,10 @@ def run():
compiler_class(verbose=1).is_available()
print('------')
except Exception as msg:
- print('error:',msg)
+ print('error:', msg)
print('------')
except Exception as msg:
- print('error:',msg,'(ignore it, build_flib is obsolute for numpy.distutils 0.2.2 and up)')
+ print('error:', msg, '(ignore it, build_flib is obsolute for numpy.distutils 0.2.2 and up)')
print('------')
try:
if has_numpy_distutils == 2:
@@ -112,10 +112,10 @@ def run():
fcompiler.show_fcompilers()
print('------')
except Exception as msg:
- print('error:',msg)
+ print('error:', msg)
print('------')
except Exception as msg:
- print('error:',msg)
+ print('error:', msg)
print('------')
try:
if has_numpy_distutils == 2:
@@ -130,7 +130,7 @@ def run():
print('ok')
print('------')
except Exception as msg:
- print('error:',msg,'(ignore it)')
+ print('error:', msg, '(ignore it)')
print('Importing numpy_distutils.cpuinfo ...', end=' ')
from numpy_distutils.cpuinfo import cpuinfo
print('ok')
@@ -138,11 +138,11 @@ def run():
cpu = cpuinfo()
print('CPU information:', end=' ')
for name in dir(cpuinfo):
- if name[0]=='_' and name[1]!='_' and getattr(cpu,name[1:])():
+ if name[0]=='_' and name[1]!='_' and getattr(cpu, name[1:])():
print(name[1:], end=' ')
print('------')
except Exception as msg:
- print('error:',msg)
+ print('error:', msg)
print('------')
os.chdir(_path)
if __name__ == "__main__":
diff --git a/numpy/f2py/doc/collectinput.py b/numpy/f2py/doc/collectinput.py
index 317fde5b2..2585dae49 100755
--- a/numpy/f2py/doc/collectinput.py
+++ b/numpy/f2py/doc/collectinput.py
@@ -40,7 +40,7 @@ except:
try: fi=sys.argv[1]
except: fi=()
if not stdoutflag:
- sys.stdout=open(fn,'w')
+ sys.stdout=open(fn, 'w')
nonverb=r'[\w\s\\&=\^\*\.\{\(\)\[\?\+\$/]*(?!\\verb.)'
input=re.compile(nonverb+r'\\(input|include)\*?\s*\{?.*}?')
@@ -59,12 +59,12 @@ for l in fileinput.input(fi):
if l[-1]=='}': l=l[:-1]
i=m.end()-2
sys.stderr.write('>>>>>>')
- while i>-1 and (l[i] not in [' ','{']): i=i-1
+ while i>-1 and (l[i] not in [' ', '{']): i=i-1
if i>-1:
fn=l[i+1:]
- try: f=open(fn,'r'); flag=1; f.close()
+ try: f=open(fn, 'r'); flag=1; f.close()
except:
- try: f=open(fn+'.tex','r'); flag=1;fn=fn+'.tex'; f.close()
+ try: f=open(fn+'.tex', 'r'); flag=1;fn=fn+'.tex'; f.close()
except: flag=0
if flag==0:
sys.stderr.write('Could not open a file: '+fn+'\n')
diff --git a/numpy/f2py/docs/pytest.py b/numpy/f2py/docs/pytest.py
index b61a607fe..bf4ef917f 100644
--- a/numpy/f2py/docs/pytest.py
+++ b/numpy/f2py/docs/pytest.py
@@ -4,9 +4,9 @@ from __future__ import division, absolute_import, print_function
import Numeric
def foo(a):
a = Numeric.array(a)
- m,n = a.shape
+ m, n = a.shape
for i in range(m):
for j in range(n):
- a[i,j] = a[i,j] + 10*(i+1) + (j+1)
+ a[i, j] = a[i, j] + 10*(i+1) + (j+1)
return a
#eof
diff --git a/numpy/f2py/docs/usersguide/setup_example.py b/numpy/f2py/docs/usersguide/setup_example.py
index 8dfaa7a52..ab451084b 100644
--- a/numpy/f2py/docs/usersguide/setup_example.py
+++ b/numpy/f2py/docs/usersguide/setup_example.py
@@ -8,7 +8,7 @@ from numpy_distutils.core import Extension
ext1 = Extension(name = 'scalar',
sources = ['scalar.f'])
ext2 = Extension(name = 'fib2',
- sources = ['fib2.pyf','fib1.f'])
+ sources = ['fib2.pyf', 'fib1.f'])
if __name__ == "__main__":
from numpy_distutils.core import setup
@@ -16,6 +16,6 @@ if __name__ == "__main__":
description = "F2PY Users Guide examples",
author = "Pearu Peterson",
author_email = "pearu@cens.ioc.ee",
- ext_modules = [ext1,ext2]
+ ext_modules = [ext1, ext2]
)
# End of setup_example.py
diff --git a/numpy/f2py/f2py2e.py b/numpy/f2py/f2py2e.py
index 64c13fff0..011b430d5 100755
--- a/numpy/f2py/f2py2e.py
+++ b/numpy/f2py/f2py2e.py
@@ -173,8 +173,8 @@ Copyright 1999 - 2011 Pearu Peterson all rights reserved.
http://cens.ioc.ee/projects/f2py2e/"""%(f2py_version, numpy_version)
def scaninputline(inputline):
- files,funcs,skipfuncs,onlyfuncs,debug=[],[],[],[],[]
- f,f2,f3,f4,f5,f6,f7,f8,f9=1,0,0,0,0,0,0,0,0
+ files, funcs, skipfuncs, onlyfuncs, debug=[], [], [], [], []
+ f, f2, f3, f4, f5, f6, f7, f8, f9=1, 0, 0, 0, 0, 0, 0, 0, 0
verbose = 1
dolc=-1
dolatexdoc = 0
@@ -182,7 +182,7 @@ def scaninputline(inputline):
wrapfuncs = 1
buildpath = '.'
include_paths = []
- signsfile,modulename=None,None
+ signsfile, modulename=None, None
options = {'buildpath':buildpath,
'coutput': None,
'f2py_wrapper_output': None}
@@ -236,7 +236,7 @@ def scaninputline(inputline):
open(l).close()
files.append(l)
except IOError as detail:
- errmess('IOError: %s. Skipping file "%s".\n'%(str(detail),l))
+ errmess('IOError: %s. Skipping file "%s".\n'%(str(detail), l))
elif f==-1: skipfuncs.append(l)
elif f==0: onlyfuncs.append(l)
if not f5 and not files and not modulename:
@@ -247,7 +247,7 @@ def scaninputline(inputline):
outmess('Creating build directory %s'%(buildpath))
os.mkdir(buildpath)
if signsfile:
- signsfile = os.path.join(buildpath,signsfile)
+ signsfile = os.path.join(buildpath, signsfile)
if signsfile and os.path.isfile(signsfile) and 'h-overwrite' not in options:
errmess('Signature file "%s" exists!!! Use --overwrite-signature to overwrite.\n'%(signsfile))
sys.exit()
@@ -265,9 +265,9 @@ def scaninputline(inputline):
options['wrapfuncs'] = wrapfuncs
options['buildpath']=buildpath
options['include_paths']=include_paths
- return files,options
+ return files, options
-def callcrackfortran(files,options):
+def callcrackfortran(files, options):
rules.options=options
funcs=[]
crackfortran.debug=options['debug']
@@ -287,7 +287,7 @@ def callcrackfortran(files,options):
if options['signsfile'][-6:]=='stdout':
sys.stdout.write(pyf)
else:
- f=open(options['signsfile'],'w')
+ f=open(options['signsfile'], 'w')
f.write(pyf)
f.close()
if options["coutput"] is None:
@@ -307,7 +307,7 @@ def callcrackfortran(files,options):
def buildmodules(lst):
cfuncs.buildcfuncs()
outmess('Building modules...\n')
- modules,mnames,isusedby=[],[],{}
+ modules, mnames, isusedby=[], [], {}
for i in range(len(lst)):
if '__user__' in lst[i]['name']:
cb_rules.buildcallbacks(lst[i])
@@ -322,7 +322,7 @@ def buildmodules(lst):
ret = {}
for i in range(len(mnames)):
if mnames[i] in isusedby:
- outmess('\tSkipping module "%s" which is used by %s.\n'%(mnames[i],','.join(['"%s"'%s for s in isusedby[mnames[i]]])))
+ outmess('\tSkipping module "%s" which is used by %s.\n'%(mnames[i], ','.join(['"%s"'%s for s in isusedby[mnames[i]]])))
else:
um=[]
if 'use' in modules[i]:
@@ -330,13 +330,13 @@ def buildmodules(lst):
if u in isusedby and u in mnames:
um.append(modules[mnames.index(u)])
else:
- outmess('\tModule "%s" uses nonexisting "%s" which will be ignored.\n'%(mnames[i],u))
+ outmess('\tModule "%s" uses nonexisting "%s" which will be ignored.\n'%(mnames[i], u))
ret[mnames[i]] = {}
- dict_append(ret[mnames[i]],rules.buildmodule(modules[i],um))
+ dict_append(ret[mnames[i]], rules.buildmodule(modules[i], um))
return ret
-def dict_append(d_out,d_in):
- for (k,v) in d_in.items():
+def dict_append(d_out, d_in):
+ for (k, v) in d_in.items():
if k not in d_out:
d_out[k] = []
if isinstance(v, list):
@@ -354,11 +354,11 @@ def run_main(comline_list):
else:
reload(crackfortran)
f2pydir=os.path.dirname(os.path.abspath(cfuncs.__file__))
- fobjhsrc = os.path.join(f2pydir,'src','fortranobject.h')
- fobjcsrc = os.path.join(f2pydir,'src','fortranobject.c')
- files,options=scaninputline(comline_list)
+ fobjhsrc = os.path.join(f2pydir, 'src', 'fortranobject.h')
+ fobjcsrc = os.path.join(f2pydir, 'src', 'fortranobject.c')
+ files, options=scaninputline(comline_list)
auxfuncs.options=options
- postlist=callcrackfortran(files,options)
+ postlist=callcrackfortran(files, options)
isusedby={}
for i in range(len(postlist)):
if 'use' in postlist[i]:
@@ -370,11 +370,11 @@ def run_main(comline_list):
if postlist[i]['block']=='python module' and '__user__' in postlist[i]['name']:
if postlist[i]['name'] in isusedby:
#if not quiet:
- outmess('Skipping Makefile build for module "%s" which is used by %s\n'%(postlist[i]['name'],','.join(['"%s"'%s for s in isusedby[postlist[i]['name']]])))
+ outmess('Skipping Makefile build for module "%s" which is used by %s\n'%(postlist[i]['name'], ','.join(['"%s"'%s for s in isusedby[postlist[i]['name']]])))
if 'signsfile' in options:
if options['verbose']>1:
outmess('Stopping. Edit the signature file and then run f2py on the signature file: ')
- outmess('%s %s\n'%(os.path.basename(sys.argv[0]),options['signsfile']))
+ outmess('%s %s\n'%(os.path.basename(sys.argv[0]), options['signsfile']))
return
for i in range(len(postlist)):
if postlist[i]['block']!='python module':
@@ -388,14 +388,14 @@ def run_main(comline_list):
ret=buildmodules(postlist)
for mn in ret.keys():
- dict_append(ret[mn],{'csrc':fobjcsrc,'h':fobjhsrc})
+ dict_append(ret[mn], {'csrc':fobjcsrc,'h':fobjhsrc})
return ret
def filter_files(prefix,suffix,files,remove_prefix=None):
"""
Filter files by prefix and suffix.
"""
- filtered,rest = [],[]
+ filtered, rest = [], []
match = re.compile(prefix+r'.*'+suffix+r'\Z').match
if remove_prefix:
ind = len(prefix)
@@ -404,7 +404,7 @@ def filter_files(prefix,suffix,files,remove_prefix=None):
for file in [x.strip() for x in files]:
if match(file): filtered.append(file[ind:])
else: rest.append(file)
- return filtered,rest
+ return filtered, rest
def get_prefix(module):
p = os.path.dirname(os.path.dirname(module.__file__))
@@ -442,7 +442,7 @@ def run_compile():
f2py_flags2 = []
fl = 0
for a in sys.argv[1:]:
- if a in ['only:','skip:']:
+ if a in ['only:', 'skip:']:
fl = 1
elif a==':':
fl = 0
@@ -483,7 +483,7 @@ def run_compile():
for s in del_list:
i = flib_flags.index(s)
del flib_flags[i]
- assert len(flib_flags)<=2,repr(flib_flags)
+ assert len(flib_flags)<=2, repr(flib_flags)
_reg5 = re.compile(r'[-][-](verbose)')
setup_flags = [_m for _m in sys.argv[1:] if _reg5.match(_m)]
@@ -499,39 +499,39 @@ def run_compile():
if optname in sys.argv:
i = sys.argv.index (optname)
f2py_flags.extend (sys.argv[i:i+2])
- del sys.argv[i+1],sys.argv[i]
+ del sys.argv[i+1], sys.argv[i]
sources = sys.argv[1:]
if '-m' in sys.argv:
i = sys.argv.index('-m')
modulename = sys.argv[i+1]
- del sys.argv[i+1],sys.argv[i]
+ del sys.argv[i+1], sys.argv[i]
sources = sys.argv[1:]
else:
from numpy.distutils.command.build_src import get_f2py_modulename
- pyf_files,sources = filter_files('','[.]pyf([.]src|)',sources)
+ pyf_files, sources = filter_files('', '[.]pyf([.]src|)', sources)
sources = pyf_files + sources
for f in pyf_files:
modulename = get_f2py_modulename(f)
if modulename:
break
- extra_objects, sources = filter_files('','[.](o|a|so)',sources)
- include_dirs, sources = filter_files('-I','',sources,remove_prefix=1)
- library_dirs, sources = filter_files('-L','',sources,remove_prefix=1)
- libraries, sources = filter_files('-l','',sources,remove_prefix=1)
- undef_macros, sources = filter_files('-U','',sources,remove_prefix=1)
- define_macros, sources = filter_files('-D','',sources,remove_prefix=1)
+ extra_objects, sources = filter_files('', '[.](o|a|so)', sources)
+ include_dirs, sources = filter_files('-I', '', sources, remove_prefix=1)
+ library_dirs, sources = filter_files('-L', '', sources, remove_prefix=1)
+ libraries, sources = filter_files('-l', '', sources, remove_prefix=1)
+ undef_macros, sources = filter_files('-U', '', sources, remove_prefix=1)
+ define_macros, sources = filter_files('-D', '', sources, remove_prefix=1)
using_numarray = 0
using_numeric = 0
for i in range(len(define_macros)):
- name_value = define_macros[i].split('=',1)
+ name_value = define_macros[i].split('=', 1)
if len(name_value)==1:
name_value.append(None)
if len(name_value)==2:
define_macros[i] = tuple(name_value)
else:
- print('Invalid use of -D:',name_value)
+ print('Invalid use of -D:', name_value)
from numpy.distutils.system_info import get_info
@@ -544,10 +544,10 @@ def run_compile():
#num_info = {'include_dirs': get_numpy_include_dirs()}
if num_info:
- include_dirs.extend(num_info.get('include_dirs',[]))
+ include_dirs.extend(num_info.get('include_dirs', []))
- from numpy.distutils.core import setup,Extension
- ext_args = {'name':modulename,'sources':sources,
+ from numpy.distutils.core import setup, Extension
+ ext_args = {'name': modulename, 'sources': sources,
'include_dirs': include_dirs,
'library_dirs': library_dirs,
'libraries': libraries,
@@ -569,9 +569,9 @@ def run_compile():
ext = Extension(**ext_args)
sys.argv = [sys.argv[0]] + setup_flags
sys.argv.extend(['build',
- '--build-temp',build_dir,
- '--build-base',build_dir,
- '--build-platlib','.'])
+ '--build-temp', build_dir,
+ '--build-base', build_dir,
+ '--build-platlib', '.'])
if fc_flags:
sys.argv.extend(['config_fc']+fc_flags)
if flib_flags:
diff --git a/numpy/f2py/f2py_testing.py b/numpy/f2py/f2py_testing.py
index e5ba8a9d5..4cec4baad 100644
--- a/numpy/f2py/f2py_testing.py
+++ b/numpy/f2py/f2py_testing.py
@@ -15,10 +15,10 @@ def cmdline():
else:
args.append(a)
f2py_opts = ' '.join(args)
- return repeat,f2py_opts
+ return repeat, f2py_opts
def run(runtest,test_functions,repeat=1):
- l = [(t,repr(t.__doc__.split('\n')[1].strip())) for t in test_functions]
+ l = [(t, repr(t.__doc__.split('\n')[1].strip())) for t in test_functions]
#l = [(t,'') for t in test_functions]
start_memusage = memusage()
diff_memusage = None
@@ -26,7 +26,7 @@ def run(runtest,test_functions,repeat=1):
i = 0
while i<repeat:
i += 1
- for t,fname in l:
+ for t, fname in l:
runtest(t)
if start_memusage is None: continue
if diff_memusage is None:
@@ -39,8 +39,8 @@ def run(runtest,test_functions,repeat=1):
fname)
diff_memusage = diff_memusage2
current_memusage = memusage()
- print('run',repeat*len(test_functions),'tests',\
+ print('run', repeat*len(test_functions), 'tests',\
'in %.2f seconds' % ((jiffies()-start_jiffies)/100.0))
if start_memusage:
- print('initial virtual memory size:',start_memusage,'bytes')
- print('current virtual memory size:',current_memusage,'bytes')
+ print('initial virtual memory size:', start_memusage, 'bytes')
+ print('current virtual memory size:', current_memusage, 'bytes')
diff --git a/numpy/f2py/f90mod_rules.py b/numpy/f2py/f90mod_rules.py
index 7e25a4930..758cad58a 100644
--- a/numpy/f2py/f90mod_rules.py
+++ b/numpy/f2py/f90mod_rules.py
@@ -83,19 +83,19 @@ fgetdims2_sa="""\
def buildhooks(pymod):
- global fgetdims1,fgetdims2
+ global fgetdims1, fgetdims2
from . import rules
ret = {'f90modhooks':[],'initf90modhooks':[],'body':[],
- 'need':['F_FUNC','arrayobject.h'],
+ 'need':['F_FUNC', 'arrayobject.h'],
'separatorsfor':{'includes0':'\n','includes':'\n'},
'docs':['"Fortran 90/95 modules:\\n"'],
'latexdoc':[]}
fhooks=['']
- def fadd(line,s=fhooks): s[0] = '%s\n %s'%(s[0],line)
+ def fadd(line,s=fhooks): s[0] = '%s\n %s'%(s[0], line)
doc = ['']
- def dadd(line,s=doc): s[0] = '%s\n%s'%(s[0],line)
+ def dadd(line,s=doc): s[0] = '%s\n%s'%(s[0], line)
for m in findf90modules(pymod):
- sargs,fargs,efargs,modobjs,notvars,onlyvars=[],[],[],[],[m['name']],[]
+ sargs, fargs, efargs, modobjs, notvars, onlyvars=[], [], [], [], [m['name']], []
sargsp = []
ifargs = []
mfargs = []
@@ -103,16 +103,16 @@ def buildhooks(pymod):
for b in m['body']: notvars.append(b['name'])
for n in m['vars'].keys():
var = m['vars'][n]
- if (n not in notvars) and (not l_or(isintent_hide,isprivate)(var)):
+ if (n not in notvars) and (not l_or(isintent_hide, isprivate)(var)):
onlyvars.append(n)
mfargs.append(n)
outmess('\t\tConstructing F90 module support for "%s"...\n'%(m['name']))
if onlyvars:
outmess('\t\t Variables: %s\n'%(' '.join(onlyvars)))
chooks=['']
- def cadd(line,s=chooks): s[0] = '%s\n%s'%(s[0],line)
+ def cadd(line,s=chooks): s[0] = '%s\n%s'%(s[0], line)
ihooks=['']
- def iadd(line,s=ihooks): s[0] = '%s\n%s'%(s[0],line)
+ def iadd(line,s=ihooks): s[0] = '%s\n%s'%(s[0], line)
vrd=capi_maps.modsign2map(m)
cadd('static FortranDataDef f2py_%s_def[] = {'%(m['name']))
@@ -128,33 +128,33 @@ def buildhooks(pymod):
modobjs.append(n)
ct = capi_maps.getctype(var)
at = capi_maps.c2capi_map[ct]
- dm = capi_maps.getarrdims(n,var)
- dms = dm['dims'].replace('*','-1').strip()
- dms = dms.replace(':','-1').strip()
+ dm = capi_maps.getarrdims(n, var)
+ dms = dm['dims'].replace('*', '-1').strip()
+ dms = dms.replace(':', '-1').strip()
if not dms: dms='-1'
use_fgetdims2 = fgetdims2
if isstringarray(var):
if 'charselector' in var and 'len' in var['charselector']:
cadd('\t{"%s",%s,{{%s,%s}},%s},'\
- %(undo_rmbadname1(n),dm['rank'],dms,var['charselector']['len'],at))
+ %(undo_rmbadname1(n), dm['rank'], dms, var['charselector']['len'], at))
use_fgetdims2 = fgetdims2_sa
else:
- cadd('\t{"%s",%s,{{%s}},%s},'%(undo_rmbadname1(n),dm['rank'],dms,at))
+ cadd('\t{"%s",%s,{{%s}},%s},'%(undo_rmbadname1(n), dm['rank'], dms, at))
else:
- cadd('\t{"%s",%s,{{%s}},%s},'%(undo_rmbadname1(n),dm['rank'],dms,at))
- dadd('\\item[]{{}\\verb@%s@{}}'%(capi_maps.getarrdocsign(n,var)))
+ cadd('\t{"%s",%s,{{%s}},%s},'%(undo_rmbadname1(n), dm['rank'], dms, at))
+ dadd('\\item[]{{}\\verb@%s@{}}'%(capi_maps.getarrdocsign(n, var)))
if hasnote(var):
note = var['note']
if isinstance(note, list): note='\n'.join(note)
dadd('--- %s'%(note))
if isallocatable(var):
- fargs.append('f2py_%s_getdims_%s'%(m['name'],n))
+ fargs.append('f2py_%s_getdims_%s'%(m['name'], n))
efargs.append(fargs[-1])
sargs.append('void (*%s)(int*,int*,void(*)(char*,int*),int*)'%(n))
sargsp.append('void (*)(int*,int*,void(*)(char*,int*),int*)')
- iadd('\tf2py_%s_def[i_f2py++].func = %s;'%(m['name'],n))
+ iadd('\tf2py_%s_def[i_f2py++].func = %s;'%(m['name'], n))
fadd('subroutine %s(r,s,f2pysetdata,flag)'%(fargs[-1]))
- fadd('use %s, only: d => %s\n'%(m['name'],undo_rmbadname1(n)))
+ fadd('use %s, only: d => %s\n'%(m['name'], undo_rmbadname1(n)))
fadd('integer flag\n')
fhooks[0]=fhooks[0]+fgetdims1
dms = eval('range(1,%s+1)'%(dm['rank']))
@@ -165,27 +165,27 @@ def buildhooks(pymod):
fargs.append(n)
sargs.append('char *%s'%(n))
sargsp.append('char*')
- iadd('\tf2py_%s_def[i_f2py++].data = %s;'%(m['name'],n))
+ iadd('\tf2py_%s_def[i_f2py++].data = %s;'%(m['name'], n))
if onlyvars:
dadd('\\end{description}')
if hasbody(m):
for b in m['body']:
if not isroutine(b):
- print('Skipping',b['block'],b['name'])
+ print('Skipping', b['block'], b['name'])
continue
modobjs.append('%s()'%(b['name']))
b['modulename'] = m['name']
- api,wrap=rules.buildapi(b)
+ api, wrap=rules.buildapi(b)
if isfunction(b):
fhooks[0]=fhooks[0]+wrap
- fargs.append('f2pywrap_%s_%s'%(m['name'],b['name']))
+ fargs.append('f2pywrap_%s_%s'%(m['name'], b['name']))
#efargs.append(fargs[-1])
- ifargs.append(func2subr.createfuncwrapper(b,signature=1))
+ ifargs.append(func2subr.createfuncwrapper(b, signature=1))
else:
if wrap:
fhooks[0]=fhooks[0]+wrap
- fargs.append('f2pywrap_%s_%s'%(m['name'],b['name']))
- ifargs.append(func2subr.createsubrwrapper(b,signature=1))
+ fargs.append('f2pywrap_%s_%s'%(m['name'], b['name']))
+ ifargs.append(func2subr.createsubrwrapper(b, signature=1))
else:
fargs.append(b['name'])
mfargs.append(fargs[-1])
@@ -193,35 +193,35 @@ def buildhooks(pymod):
# outmess('\t\t\tapplying --external-modroutines for %s\n'%(b['name']))
# efargs.append(fargs[-1])
api['externroutines']=[]
- ar=applyrules(api,vrd)
+ ar=applyrules(api, vrd)
ar['docs']=[]
ar['docshort']=[]
- ret=dictappend(ret,ar)
- cadd('\t{"%s",-1,{{-1}},0,NULL,(void *)f2py_rout_#modulename#_%s_%s,doc_f2py_rout_#modulename#_%s_%s},'%(b['name'],m['name'],b['name'],m['name'],b['name']))
+ ret=dictappend(ret, ar)
+ cadd('\t{"%s",-1,{{-1}},0,NULL,(void *)f2py_rout_#modulename#_%s_%s,doc_f2py_rout_#modulename#_%s_%s},'%(b['name'], m['name'], b['name'], m['name'], b['name']))
sargs.append('char *%s'%(b['name']))
sargsp.append('char *')
- iadd('\tf2py_%s_def[i_f2py++].data = %s;'%(m['name'],b['name']))
+ iadd('\tf2py_%s_def[i_f2py++].data = %s;'%(m['name'], b['name']))
cadd('\t{NULL}\n};\n')
iadd('}')
- ihooks[0]='static void f2py_setup_%s(%s) {\n\tint i_f2py=0;%s'%(m['name'],','.join(sargs),ihooks[0])
+ ihooks[0]='static void f2py_setup_%s(%s) {\n\tint i_f2py=0;%s'%(m['name'], ','.join(sargs), ihooks[0])
if '_' in m['name']:
F_FUNC='F_FUNC_US'
else:
F_FUNC='F_FUNC'
iadd('extern void %s(f2pyinit%s,F2PYINIT%s)(void (*)(%s));'\
- %(F_FUNC,m['name'],m['name'].upper(),','.join(sargsp)))
+ %(F_FUNC, m['name'], m['name'].upper(), ','.join(sargsp)))
iadd('static void f2py_init_%s(void) {'%(m['name']))
iadd('\t%s(f2pyinit%s,F2PYINIT%s)(f2py_setup_%s);'\
- %(F_FUNC,m['name'],m['name'].upper(),m['name']))
+ %(F_FUNC, m['name'], m['name'].upper(), m['name']))
iadd('}\n')
ret['f90modhooks']=ret['f90modhooks']+chooks+ihooks
- ret['initf90modhooks']=['\tPyDict_SetItemString(d, "%s", PyFortranObject_New(f2py_%s_def,f2py_init_%s));'%(m['name'],m['name'],m['name'])]+ret['initf90modhooks']
+ ret['initf90modhooks']=['\tPyDict_SetItemString(d, "%s", PyFortranObject_New(f2py_%s_def,f2py_init_%s));'%(m['name'], m['name'], m['name'])]+ret['initf90modhooks']
fadd('')
fadd('subroutine f2pyinit%s(f2pysetupfunc)'%(m['name']))
#fadd('use %s'%(m['name']))
if mfargs:
for a in undo_rmbadname(mfargs):
- fadd('use %s, only : %s'%(m['name'],a))
+ fadd('use %s, only : %s'%(m['name'], a))
if ifargs:
fadd(' '.join(['interface']+ifargs))
fadd('end interface')
@@ -232,7 +232,7 @@ def buildhooks(pymod):
fadd('call f2pysetupfunc(%s)'%(','.join(undo_rmbadname(fargs))))
fadd('end subroutine f2pyinit%s\n'%(m['name']))
- dadd('\n'.join(ret['latexdoc']).replace(r'\subsection{',r'\subsubsection{'))
+ dadd('\n'.join(ret['latexdoc']).replace(r'\subsection{', r'\subsubsection{'))
ret['latexdoc']=[]
ret['docs'].append('"\t%s --- %s"'%(m['name'],
@@ -243,4 +243,4 @@ def buildhooks(pymod):
ret['docshort']=[]
ret['latexdoc']=doc[0]
if len(ret['docs'])<=1: ret['docs']=''
- return ret,fhooks[0]
+ return ret, fhooks[0]
diff --git a/numpy/f2py/func2subr.py b/numpy/f2py/func2subr.py
index 1698d0e40..22f60851d 100644
--- a/numpy/f2py/func2subr.py
+++ b/numpy/f2py/func2subr.py
@@ -40,7 +40,7 @@ def var2fixfortran(vars,a,fa=None,f90mode=None):
return ''
vardef=vars[a]['typespec']
if vardef=='type' and 'typename' in vars[a]:
- vardef='%s(%s)'%(vardef,vars[a]['typename'])
+ vardef='%s(%s)'%(vardef, vars[a]['typename'])
selector={}
lk = ''
if 'kindselector' in vars[a]:
@@ -51,28 +51,28 @@ def var2fixfortran(vars,a,fa=None,f90mode=None):
lk = 'len'
if '*' in selector:
if f90mode:
- if selector['*'] in ['*',':','(*)']:
+ if selector['*'] in ['*', ':', '(*)']:
vardef='%s(len=*)'%(vardef)
else:
- vardef='%s(%s=%s)'%(vardef,lk,selector['*'])
+ vardef='%s(%s=%s)'%(vardef, lk, selector['*'])
else:
- if selector['*'] in ['*',':']:
- vardef='%s*(%s)'%(vardef,selector['*'])
+ if selector['*'] in ['*', ':']:
+ vardef='%s*(%s)'%(vardef, selector['*'])
else:
- vardef='%s*%s'%(vardef,selector['*'])
+ vardef='%s*%s'%(vardef, selector['*'])
else:
if 'len' in selector:
- vardef='%s(len=%s'%(vardef,selector['len'])
+ vardef='%s(len=%s'%(vardef, selector['len'])
if 'kind' in selector:
- vardef='%s,kind=%s)'%(vardef,selector['kind'])
+ vardef='%s,kind=%s)'%(vardef, selector['kind'])
else:
vardef='%s)'%(vardef)
elif 'kind' in selector:
- vardef='%s(kind=%s)'%(vardef,selector['kind'])
+ vardef='%s(kind=%s)'%(vardef, selector['kind'])
- vardef='%s %s'%(vardef,fa)
+ vardef='%s %s'%(vardef, fa)
if 'dimension' in vars[a]:
- vardef='%s(%s)'%(vardef,','.join(vars[a]['dimension']))
+ vardef='%s(%s)'%(vardef, ','.join(vars[a]['dimension']))
return vardef
def createfuncwrapper(rout,signature=0):
@@ -82,7 +82,7 @@ def createfuncwrapper(rout,signature=0):
vars = rout['vars']
for a in rout['args']:
v = rout['vars'][a]
- for i,d in enumerate(v.get('dimension',[])):
+ for i, d in enumerate(v.get('dimension', [])):
if d==':':
dn = 'f2py_%s_d%s' % (a, i)
dv = dict(typespec='integer', intent=['hide'])
@@ -95,7 +95,7 @@ def createfuncwrapper(rout,signature=0):
ret = ['']
def add(line,ret=ret):
- ret[0] = '%s\n %s'%(ret[0],line)
+ ret[0] = '%s\n %s'%(ret[0], line)
name = rout['name']
fortranname = getfortranname(rout)
f90mode = ismoduleroutine(rout)
@@ -107,22 +107,22 @@ def createfuncwrapper(rout,signature=0):
else:
args = [newname]+rout['args']
- l = var2fixfortran(vars,name,newname,f90mode)
+ l = var2fixfortran(vars, name, newname, f90mode)
return_char_star = 0
if l[:13]=='character*(*)':
return_char_star = 1
if f90mode: l = 'character(len=10)'+l[13:]
else: l = 'character*10'+l[13:]
charselect = vars[name]['charselector']
- if charselect.get('*','')=='(*)':
+ if charselect.get('*', '')=='(*)':
charselect['*'] = '10'
sargs = ', '.join(args)
if f90mode:
- add('subroutine f2pywrap_%s_%s (%s)'%(rout['modulename'],name,sargs))
+ add('subroutine f2pywrap_%s_%s (%s)'%(rout['modulename'], name, sargs))
if not signature:
- add('use %s, only : %s'%(rout['modulename'],fortranname))
+ add('use %s, only : %s'%(rout['modulename'], fortranname))
else:
- add('subroutine f2pywrap%s (%s)'%(name,sargs))
+ add('subroutine f2pywrap%s (%s)'%(name, sargs))
if not need_interface:
add('external %s'%(fortranname))
l = l + ', '+fortranname
@@ -140,16 +140,16 @@ def createfuncwrapper(rout,signature=0):
for a in args:
if a in dumped_args: continue
if isscalar(vars[a]):
- add(var2fixfortran(vars,a,f90mode=f90mode))
+ add(var2fixfortran(vars, a, f90mode=f90mode))
dumped_args.append(a)
for a in args:
if a in dumped_args: continue
if isintent_in(vars[a]):
- add(var2fixfortran(vars,a,f90mode=f90mode))
+ add(var2fixfortran(vars, a, f90mode=f90mode))
dumped_args.append(a)
for a in args:
if a in dumped_args: continue
- add(var2fixfortran(vars,a,f90mode=f90mode))
+ add(var2fixfortran(vars, a, f90mode=f90mode))
add(l)
@@ -166,11 +166,11 @@ def createfuncwrapper(rout,signature=0):
if not signature:
if islogicalfunction(rout):
- add('%s = .not.(.not.%s(%s))'%(newname,fortranname,sargs))
+ add('%s = .not.(.not.%s(%s))'%(newname, fortranname, sargs))
else:
- add('%s = %s(%s)'%(newname,fortranname,sargs))
+ add('%s = %s(%s)'%(newname, fortranname, sargs))
if f90mode:
- add('end subroutine f2pywrap_%s_%s'%(rout['modulename'],name))
+ add('end subroutine f2pywrap_%s_%s'%(rout['modulename'], name))
else:
add('end')
#print '**'*10
@@ -185,7 +185,7 @@ def createsubrwrapper(rout,signature=0):
vars = rout['vars']
for a in rout['args']:
v = rout['vars'][a]
- for i,d in enumerate(v.get('dimension',[])):
+ for i, d in enumerate(v.get('dimension', [])):
if d==':':
dn = 'f2py_%s_d%s' % (a, i)
dv = dict(typespec='integer', intent=['hide'])
@@ -198,7 +198,7 @@ def createsubrwrapper(rout,signature=0):
ret = ['']
def add(line,ret=ret):
- ret[0] = '%s\n %s'%(ret[0],line)
+ ret[0] = '%s\n %s'%(ret[0], line)
name = rout['name']
fortranname = getfortranname(rout)
f90mode = ismoduleroutine(rout)
@@ -207,11 +207,11 @@ def createsubrwrapper(rout,signature=0):
sargs = ', '.join(args)
if f90mode:
- add('subroutine f2pywrap_%s_%s (%s)'%(rout['modulename'],name,sargs))
+ add('subroutine f2pywrap_%s_%s (%s)'%(rout['modulename'], name, sargs))
if not signature:
- add('use %s, only : %s'%(rout['modulename'],fortranname))
+ add('use %s, only : %s'%(rout['modulename'], fortranname))
else:
- add('subroutine f2pywrap%s (%s)'%(name,sargs))
+ add('subroutine f2pywrap%s (%s)'%(name, sargs))
if not need_interface:
add('external %s'%(fortranname))
@@ -228,11 +228,11 @@ def createsubrwrapper(rout,signature=0):
for a in args:
if a in dumped_args: continue
if isscalar(vars[a]):
- add(var2fixfortran(vars,a,f90mode=f90mode))
+ add(var2fixfortran(vars, a, f90mode=f90mode))
dumped_args.append(a)
for a in args:
if a in dumped_args: continue
- add(var2fixfortran(vars,a,f90mode=f90mode))
+ add(var2fixfortran(vars, a, f90mode=f90mode))
if need_interface:
if f90mode:
@@ -246,9 +246,9 @@ def createsubrwrapper(rout,signature=0):
sargs = ', '.join([a for a in args if a not in extra_args])
if not signature:
- add('call %s(%s)'%(fortranname,sargs))
+ add('call %s(%s)'%(fortranname, sargs))
if f90mode:
- add('end subroutine f2pywrap_%s_%s'%(rout['modulename'],name))
+ add('end subroutine f2pywrap_%s_%s'%(rout['modulename'], name))
else:
add('end')
#print '**'*10
@@ -261,7 +261,7 @@ def assubr(rout):
if isfunction_wrap(rout):
fortranname = getfortranname(rout)
name = rout['name']
- outmess('\t\tCreating wrapper for Fortran function "%s"("%s")...\n'%(name,fortranname))
+ outmess('\t\tCreating wrapper for Fortran function "%s"("%s")...\n'%(name, fortranname))
rout = copy.copy(rout)
fname = name
rname = fname
@@ -281,11 +281,11 @@ def assubr(rout):
if flag:
fvar['intent'].append('out=%s' % (rname))
rout['args'][:] = [fname] + rout['args']
- return rout,createfuncwrapper(rout)
+ return rout, createfuncwrapper(rout)
if issubroutine_wrap(rout):
fortranname = getfortranname(rout)
name = rout['name']
- outmess('\t\tCreating wrapper for Fortran subroutine "%s"("%s")...\n'%(name,fortranname))
+ outmess('\t\tCreating wrapper for Fortran subroutine "%s"("%s")...\n'%(name, fortranname))
rout = copy.copy(rout)
- return rout,createsubrwrapper(rout)
- return rout,''
+ return rout, createsubrwrapper(rout)
+ return rout, ''
diff --git a/numpy/f2py/rules.py b/numpy/f2py/rules.py
index f7f82fc99..4c186712c 100644
--- a/numpy/f2py/rules.py
+++ b/numpy/f2py/rules.py
@@ -81,18 +81,18 @@ sepdict={}
for k in ['decl',
'frompyobj',
'cleanupfrompyobj',
- 'topyarr','method',
- 'pyobjfrom','closepyobjfrom',
+ 'topyarr', 'method',
+ 'pyobjfrom', 'closepyobjfrom',
'freemem',
'userincludes',
- 'includes0','includes','typedefs','typedefs_generated',
- 'cppmacros','cfuncs','callbacks',
+ 'includes0', 'includes', 'typedefs', 'typedefs_generated',
+ 'cppmacros', 'cfuncs', 'callbacks',
'latexdoc',
'restdoc',
- 'routine_defs','externroutines',
+ 'routine_defs', 'externroutines',
'initf2pywraphooks',
- 'commonhooks','initcommonhooks',
- 'f90modhooks','initf90modhooks']:
+ 'commonhooks', 'initcommonhooks',
+ 'f90modhooks', 'initf90modhooks']:
sepdict[k]='\n'
#################### Rules for C/API module #################
@@ -243,16 +243,16 @@ PyMODINIT_FUNC init#modulename#(void) {
}
defmod_rules=[
- {'body':'/*eof body*/',
- 'method':'/*eof method*/',
- 'externroutines':'/*eof externroutines*/',
- 'routine_defs':'/*eof routine_defs*/',
- 'initf90modhooks':'/*eof initf90modhooks*/',
- 'initf2pywraphooks':'/*eof initf2pywraphooks*/',
- 'initcommonhooks':'/*eof initcommonhooks*/',
- 'latexdoc':'',
- 'restdoc':'',
- 'modnote':{hasnote:'#note#',l_not(hasnote):''},
+ {'body': '/*eof body*/',
+ 'method': '/*eof method*/',
+ 'externroutines': '/*eof externroutines*/',
+ 'routine_defs': '/*eof routine_defs*/',
+ 'initf90modhooks': '/*eof initf90modhooks*/',
+ 'initf2pywraphooks': '/*eof initf2pywraphooks*/',
+ 'initcommonhooks': '/*eof initcommonhooks*/',
+ 'latexdoc': '',
+ 'restdoc': '',
+ 'modnote': {hasnote:'#note#',l_not(hasnote):''},
}
]
@@ -320,7 +320,7 @@ f2py_stop_clock();
'doc':'#docreturn##name#(#docsignature#)',
'docshort':'#docreturn##name#(#docsignatureshort#)',
'docs':'"\t#docreturn##name#(#docsignature#)\\n"\n',
- 'need':['arrayobject.h','CFUNCSMESS','MINMAX'],
+ 'need':['arrayobject.h', 'CFUNCSMESS', 'MINMAX'],
'cppmacros':{debugcapi:'#define DEBUGCFUNCS'},
'latexdoc':['\\subsection{Wrapper function \\texttt{#texname#}}\n',
"""
@@ -338,65 +338,65 @@ f2py_stop_clock();
rout_rules=[
{ # Init
- 'separatorsfor': {'callfortranroutine':'\n','routdebugenter':'\n','decl':'\n',
- 'routdebugleave':'\n','routdebugfailure':'\n',
- 'setjmpbuf':' || ',
- 'docstrreq':'\n','docstropt':'\n','docstrout':'\n',
- 'docstrcbs':'\n','docstrsigns':'\\n"\n"',
- 'latexdocstrsigns':'\n',
- 'latexdocstrreq':'\n','latexdocstropt':'\n',
- 'latexdocstrout':'\n','latexdocstrcbs':'\n',
+ 'separatorsfor': {'callfortranroutine': '\n', 'routdebugenter': '\n', 'decl': '\n',
+ 'routdebugleave': '\n', 'routdebugfailure': '\n',
+ 'setjmpbuf': ' || ',
+ 'docstrreq': '\n', 'docstropt': '\n', 'docstrout': '\n',
+ 'docstrcbs': '\n', 'docstrsigns': '\\n"\n"',
+ 'latexdocstrsigns': '\n',
+ 'latexdocstrreq': '\n', 'latexdocstropt': '\n',
+ 'latexdocstrout': '\n', 'latexdocstrcbs': '\n',
},
- 'kwlist':'','kwlistopt':'','callfortran':'','callfortranappend':'',
- 'docsign':'','docsignopt':'','decl':'/*decl*/',
- 'freemem':'/*freemem*/',
- 'docsignshort':'','docsignoptshort':'',
- 'docstrsigns':'','latexdocstrsigns':'',
- 'docstrreq':'\\nParameters\\n----------',
- 'docstropt':'\\nOther Parameters\\n----------------',
- 'docstrout':'\\nReturns\\n-------',
- 'docstrcbs':'\\nNotes\\n-----\\nCall-back functions::\\n',
- 'latexdocstrreq':'\\noindent Required arguments:',
- 'latexdocstropt':'\\noindent Optional arguments:',
- 'latexdocstrout':'\\noindent Return objects:',
- 'latexdocstrcbs':'\\noindent Call-back functions:',
- 'args_capi':'','keys_capi':'','functype':'',
- 'frompyobj':'/*frompyobj*/',
- 'cleanupfrompyobj':['/*end of cleanupfrompyobj*/'], #this list will be reversed
- 'pyobjfrom':'/*pyobjfrom*/',
- 'closepyobjfrom':['/*end of closepyobjfrom*/'], #this list will be reversed
- 'topyarr':'/*topyarr*/','routdebugleave':'/*routdebugleave*/',
- 'routdebugenter':'/*routdebugenter*/',
- 'routdebugfailure':'/*routdebugfailure*/',
- 'callfortranroutine':'/*callfortranroutine*/',
- 'argformat':'','keyformat':'','need_cfuncs':'',
- 'docreturn':'','return':'','returnformat':'','rformat':'',
- 'kwlistxa':'','keys_xa':'','xaformat':'','docsignxa':'','docsignxashort':'',
- 'initf2pywraphook':'',
- 'routnote':{hasnote:'--- #note#',l_not(hasnote):''},
- },{
+ 'kwlist': '', 'kwlistopt': '', 'callfortran': '', 'callfortranappend': '',
+ 'docsign': '', 'docsignopt': '', 'decl': '/*decl*/',
+ 'freemem': '/*freemem*/',
+ 'docsignshort': '', 'docsignoptshort': '',
+ 'docstrsigns': '', 'latexdocstrsigns': '',
+ 'docstrreq': '\\nParameters\\n----------',
+ 'docstropt': '\\nOther Parameters\\n----------------',
+ 'docstrout': '\\nReturns\\n-------',
+ 'docstrcbs': '\\nNotes\\n-----\\nCall-back functions::\\n',
+ 'latexdocstrreq': '\\noindent Required arguments:',
+ 'latexdocstropt': '\\noindent Optional arguments:',
+ 'latexdocstrout': '\\noindent Return objects:',
+ 'latexdocstrcbs': '\\noindent Call-back functions:',
+ 'args_capi': '', 'keys_capi': '', 'functype': '',
+ 'frompyobj': '/*frompyobj*/',
+ 'cleanupfrompyobj': ['/*end of cleanupfrompyobj*/'], #this list will be reversed
+ 'pyobjfrom': '/*pyobjfrom*/',
+ 'closepyobjfrom': ['/*end of closepyobjfrom*/'], #this list will be reversed
+ 'topyarr': '/*topyarr*/', 'routdebugleave': '/*routdebugleave*/',
+ 'routdebugenter': '/*routdebugenter*/',
+ 'routdebugfailure': '/*routdebugfailure*/',
+ 'callfortranroutine': '/*callfortranroutine*/',
+ 'argformat': '', 'keyformat': '', 'need_cfuncs': '',
+ 'docreturn': '', 'return': '', 'returnformat': '', 'rformat': '',
+ 'kwlistxa': '', 'keys_xa': '', 'xaformat': '', 'docsignxa': '', 'docsignxashort': '',
+ 'initf2pywraphook': '',
+ 'routnote': {hasnote:'--- #note#',l_not(hasnote):''},
+ }, {
'apiname':'f2py_rout_#modulename#_#name#',
'pyname':'#modulename#.#name#',
'decl':'',
'_check':l_not(ismoduleroutine)
- },{
+ }, {
'apiname':'f2py_rout_#modulename#_#f90modulename#_#name#',
'pyname':'#modulename#.#f90modulename#.#name#',
'decl':'',
'_check':ismoduleroutine
- },{ # Subroutine
- 'functype':'void',
- 'declfortranroutine':{l_and(l_not(l_or(ismoduleroutine,isintent_c)),l_not(isdummyroutine)):'extern void #F_FUNC#(#fortranname#,#FORTRANNAME#)(#callprotoargument#);',
- l_and(l_not(ismoduleroutine),isintent_c,l_not(isdummyroutine)):'extern void #fortranname#(#callprotoargument#);',
+ }, { # Subroutine
+ 'functype': 'void',
+ 'declfortranroutine': {l_and(l_not(l_or(ismoduleroutine, isintent_c)), l_not(isdummyroutine)):'extern void #F_FUNC#(#fortranname#,#FORTRANNAME#)(#callprotoargument#);',
+ l_and(l_not(ismoduleroutine), isintent_c, l_not(isdummyroutine)):'extern void #fortranname#(#callprotoargument#);',
ismoduleroutine:'',
isdummyroutine:''
},
- 'routine_def':{l_not(l_or(ismoduleroutine,isintent_c,isdummyroutine)):'\t{\"#name#\",-1,{{-1}},0,(char *)#F_FUNC#(#fortranname#,#FORTRANNAME#),(f2py_init_func)#apiname#,doc_#apiname#},',
- l_and(l_not(ismoduleroutine),isintent_c,l_not(isdummyroutine)):'\t{\"#name#\",-1,{{-1}},0,(char *)#fortranname#,(f2py_init_func)#apiname#,doc_#apiname#},',
- l_and(l_not(ismoduleroutine),isdummyroutine):'\t{\"#name#\",-1,{{-1}},0,NULL,(f2py_init_func)#apiname#,doc_#apiname#},',
+ 'routine_def': {l_not(l_or(ismoduleroutine, isintent_c, isdummyroutine)): '\t{\"#name#\",-1,{{-1}},0,(char *)#F_FUNC#(#fortranname#,#FORTRANNAME#),(f2py_init_func)#apiname#,doc_#apiname#},',
+ l_and(l_not(ismoduleroutine), isintent_c, l_not(isdummyroutine)): '\t{\"#name#\",-1,{{-1}},0,(char *)#fortranname#,(f2py_init_func)#apiname#,doc_#apiname#},',
+ l_and(l_not(ismoduleroutine), isdummyroutine): '\t{\"#name#\",-1,{{-1}},0,NULL,(f2py_init_func)#apiname#,doc_#apiname#},',
},
- 'need':{l_and(l_not(l_or(ismoduleroutine,isintent_c)),l_not(isdummyroutine)):'F_FUNC'},
- 'callfortranroutine':[
+ 'need': {l_and(l_not(l_or(ismoduleroutine, isintent_c)), l_not(isdummyroutine)):'F_FUNC'},
+ 'callfortranroutine': [
{debugcapi:["""\tfprintf(stderr,\"debug-capi:Fortran subroutine `#fortranname#(#callfortran#)\'\\n\");"""]},
{hasexternals:"""\
\t\tif (#setjmpbuf#) {
@@ -405,21 +405,21 @@ rout_rules=[
{isthreadsafe:'\t\t\tPy_BEGIN_ALLOW_THREADS'},
{hascallstatement:'''\t\t\t\t#callstatement#;
\t\t\t\t/*(*f2py_func)(#callfortran#);*/'''},
- {l_not(l_or(hascallstatement,isdummyroutine)):'\t\t\t\t(*f2py_func)(#callfortran#);'},
+ {l_not(l_or(hascallstatement, isdummyroutine)):'\t\t\t\t(*f2py_func)(#callfortran#);'},
{isthreadsafe:'\t\t\tPy_END_ALLOW_THREADS'},
{hasexternals:"""\t\t}"""}
],
- '_check':l_and(issubroutine,l_not(issubroutine_wrap)),
- },{ # Wrapped function
- 'functype':'void',
- 'declfortranroutine':{l_not(l_or(ismoduleroutine,isdummyroutine)):'extern void #F_WRAPPEDFUNC#(#name_lower#,#NAME#)(#callprotoargument#);',
- isdummyroutine:'',
+ '_check': l_and(issubroutine, l_not(issubroutine_wrap)),
+ }, { # Wrapped function
+ 'functype': 'void',
+ 'declfortranroutine': {l_not(l_or(ismoduleroutine, isdummyroutine)): 'extern void #F_WRAPPEDFUNC#(#name_lower#,#NAME#)(#callprotoargument#);',
+ isdummyroutine: '',
},
- 'routine_def':{l_not(l_or(ismoduleroutine,isdummyroutine)):'\t{\"#name#\",-1,{{-1}},0,(char *)#F_WRAPPEDFUNC#(#name_lower#,#NAME#),(f2py_init_func)#apiname#,doc_#apiname#},',
- isdummyroutine:'\t{\"#name#\",-1,{{-1}},0,NULL,(f2py_init_func)#apiname#,doc_#apiname#},',
+ 'routine_def': {l_not(l_or(ismoduleroutine, isdummyroutine)): '\t{\"#name#\",-1,{{-1}},0,(char *)#F_WRAPPEDFUNC#(#name_lower#,#NAME#),(f2py_init_func)#apiname#,doc_#apiname#},',
+ isdummyroutine: '\t{\"#name#\",-1,{{-1}},0,NULL,(f2py_init_func)#apiname#,doc_#apiname#},',
},
- 'initf2pywraphook':{l_not(l_or(ismoduleroutine,isdummyroutine)):'''
+ 'initf2pywraphook': {l_not(l_or(ismoduleroutine, isdummyroutine)):'''
{
extern #ctype# #F_FUNC#(#name_lower#,#NAME#)(void);
PyObject* o = PyDict_GetItemString(d,"#name#");
@@ -431,30 +431,30 @@ rout_rules=[
#endif
}
'''},
- 'need':{l_not(l_or(ismoduleroutine,isdummyroutine)):['F_WRAPPEDFUNC','F_FUNC']},
- 'callfortranroutine':[
+ 'need': {l_not(l_or(ismoduleroutine, isdummyroutine)):['F_WRAPPEDFUNC', 'F_FUNC']},
+ 'callfortranroutine': [
{debugcapi:["""\tfprintf(stderr,\"debug-capi:Fortran subroutine `f2pywrap#name_lower#(#callfortran#)\'\\n\");"""]},
{hasexternals:"""\
\tif (#setjmpbuf#) {
\t\tf2py_success = 0;
\t} else {"""},
{isthreadsafe:'\tPy_BEGIN_ALLOW_THREADS'},
- {l_not(l_or(hascallstatement,isdummyroutine)):'\t(*f2py_func)(#callfortran#);'},
+ {l_not(l_or(hascallstatement, isdummyroutine)):'\t(*f2py_func)(#callfortran#);'},
{hascallstatement:'\t#callstatement#;\n\t/*(*f2py_func)(#callfortran#);*/'},
{isthreadsafe:'\tPy_END_ALLOW_THREADS'},
{hasexternals:'\t}'}
],
- '_check':isfunction_wrap,
- },{ # Wrapped subroutine
- 'functype':'void',
- 'declfortranroutine':{l_not(l_or(ismoduleroutine,isdummyroutine)):'extern void #F_WRAPPEDFUNC#(#name_lower#,#NAME#)(#callprotoargument#);',
- isdummyroutine:'',
+ '_check': isfunction_wrap,
+ }, { # Wrapped subroutine
+ 'functype': 'void',
+ 'declfortranroutine': {l_not(l_or(ismoduleroutine, isdummyroutine)): 'extern void #F_WRAPPEDFUNC#(#name_lower#,#NAME#)(#callprotoargument#);',
+ isdummyroutine: '',
},
- 'routine_def':{l_not(l_or(ismoduleroutine,isdummyroutine)):'\t{\"#name#\",-1,{{-1}},0,(char *)#F_WRAPPEDFUNC#(#name_lower#,#NAME#),(f2py_init_func)#apiname#,doc_#apiname#},',
- isdummyroutine:'\t{\"#name#\",-1,{{-1}},0,NULL,(f2py_init_func)#apiname#,doc_#apiname#},',
+ 'routine_def': {l_not(l_or(ismoduleroutine, isdummyroutine)): '\t{\"#name#\",-1,{{-1}},0,(char *)#F_WRAPPEDFUNC#(#name_lower#,#NAME#),(f2py_init_func)#apiname#,doc_#apiname#},',
+ isdummyroutine: '\t{\"#name#\",-1,{{-1}},0,NULL,(f2py_init_func)#apiname#,doc_#apiname#},',
},
- 'initf2pywraphook':{l_not(l_or(ismoduleroutine,isdummyroutine)):'''
+ 'initf2pywraphook': {l_not(l_or(ismoduleroutine, isdummyroutine)):'''
{
extern void #F_FUNC#(#name_lower#,#NAME#)(void);
PyObject* o = PyDict_GetItemString(d,"#name#");
@@ -466,46 +466,46 @@ rout_rules=[
#endif
}
'''},
- 'need':{l_not(l_or(ismoduleroutine,isdummyroutine)):['F_WRAPPEDFUNC','F_FUNC']},
- 'callfortranroutine':[
+ 'need': {l_not(l_or(ismoduleroutine, isdummyroutine)):['F_WRAPPEDFUNC', 'F_FUNC']},
+ 'callfortranroutine': [
{debugcapi:["""\tfprintf(stderr,\"debug-capi:Fortran subroutine `f2pywrap#name_lower#(#callfortran#)\'\\n\");"""]},
{hasexternals:"""\
\tif (#setjmpbuf#) {
\t\tf2py_success = 0;
\t} else {"""},
{isthreadsafe:'\tPy_BEGIN_ALLOW_THREADS'},
- {l_not(l_or(hascallstatement,isdummyroutine)):'\t(*f2py_func)(#callfortran#);'},
+ {l_not(l_or(hascallstatement, isdummyroutine)):'\t(*f2py_func)(#callfortran#);'},
{hascallstatement:'\t#callstatement#;\n\t/*(*f2py_func)(#callfortran#);*/'},
{isthreadsafe:'\tPy_END_ALLOW_THREADS'},
{hasexternals:'\t}'}
],
- '_check':issubroutine_wrap,
- },{ # Function
+ '_check': issubroutine_wrap,
+ }, { # Function
'functype':'#ctype#',
'docreturn':{l_not(isintent_hide):'#rname#,'},
'docstrout':'#pydocsignout#',
'latexdocstrout':['\\item[]{{}\\verb@#pydocsignout#@{}}',
{hasresultnote:'--- #resultnote#'}],
- 'callfortranroutine':[{l_and(debugcapi,isstringfunction):"""\
+ 'callfortranroutine':[{l_and(debugcapi, isstringfunction):"""\
#ifdef USESCOMPAQFORTRAN
\tfprintf(stderr,\"debug-capi:Fortran function #ctype# #fortranname#(#callcompaqfortran#)\\n\");
#else
\tfprintf(stderr,\"debug-capi:Fortran function #ctype# #fortranname#(#callfortran#)\\n\");
#endif
"""},
- {l_and(debugcapi,l_not(isstringfunction)):"""\
+ {l_and(debugcapi, l_not(isstringfunction)):"""\
\tfprintf(stderr,\"debug-capi:Fortran function #ctype# #fortranname#(#callfortran#)\\n\");
"""}
],
- '_check':l_and(isfunction,l_not(isfunction_wrap))
- },{ # Scalar function
- 'declfortranroutine':{l_and(l_not(l_or(ismoduleroutine,isintent_c)),l_not(isdummyroutine)):'extern #ctype# #F_FUNC#(#fortranname#,#FORTRANNAME#)(#callprotoargument#);',
- l_and(l_not(ismoduleroutine),isintent_c,l_not(isdummyroutine)):'extern #ctype# #fortranname#(#callprotoargument#);',
+ '_check':l_and(isfunction, l_not(isfunction_wrap))
+ }, { # Scalar function
+ 'declfortranroutine':{l_and(l_not(l_or(ismoduleroutine, isintent_c)), l_not(isdummyroutine)):'extern #ctype# #F_FUNC#(#fortranname#,#FORTRANNAME#)(#callprotoargument#);',
+ l_and(l_not(ismoduleroutine), isintent_c, l_not(isdummyroutine)):'extern #ctype# #fortranname#(#callprotoargument#);',
isdummyroutine:''
},
- 'routine_def':{l_and(l_not(l_or(ismoduleroutine,isintent_c)),l_not(isdummyroutine)):'\t{\"#name#\",-1,{{-1}},0,(char *)#F_FUNC#(#fortranname#,#FORTRANNAME#),(f2py_init_func)#apiname#,doc_#apiname#},',
- l_and(l_not(ismoduleroutine),isintent_c,l_not(isdummyroutine)):'\t{\"#name#\",-1,{{-1}},0,(char *)#fortranname#,(f2py_init_func)#apiname#,doc_#apiname#},',
- isdummyroutine:'\t{\"#name#\",-1,{{-1}},0,NULL,(f2py_init_func)#apiname#,doc_#apiname#},',
+ 'routine_def':{l_and(l_not(l_or(ismoduleroutine, isintent_c)), l_not(isdummyroutine)): '\t{\"#name#\",-1,{{-1}},0,(char *)#F_FUNC#(#fortranname#,#FORTRANNAME#),(f2py_init_func)#apiname#,doc_#apiname#},',
+ l_and(l_not(ismoduleroutine), isintent_c, l_not(isdummyroutine)): '\t{\"#name#\",-1,{{-1}},0,(char *)#fortranname#,(f2py_init_func)#apiname#,doc_#apiname#},',
+ isdummyroutine: '\t{\"#name#\",-1,{{-1}},0,NULL,(f2py_init_func)#apiname#,doc_#apiname#},',
},
'decl':[{iscomplexfunction_warn:'\t#ctype# #name#_return_value={0,0};',
l_not(iscomplexfunction):'\t#ctype# #name#_return_value=0;'},
@@ -520,11 +520,11 @@ rout_rules=[
{hascallstatement:'''\t#callstatement#;
/*\t#name#_return_value = (*f2py_func)(#callfortran#);*/
'''},
- {l_not(l_or(hascallstatement,isdummyroutine)):'\t#name#_return_value = (*f2py_func)(#callfortran#);'},
+ {l_not(l_or(hascallstatement, isdummyroutine)):'\t#name#_return_value = (*f2py_func)(#callfortran#);'},
{isthreadsafe:'\tPy_END_ALLOW_THREADS'},
{hasexternals:'\t}'},
- {l_and(debugcapi,iscomplexfunction):'\tfprintf(stderr,"#routdebugshowvalue#\\n",#name#_return_value.r,#name#_return_value.i);'},
- {l_and(debugcapi,l_not(iscomplexfunction)):'\tfprintf(stderr,"#routdebugshowvalue#\\n",#name#_return_value);'}],
+ {l_and(debugcapi, iscomplexfunction):'\tfprintf(stderr,"#routdebugshowvalue#\\n",#name#_return_value.r,#name#_return_value.i);'},
+ {l_and(debugcapi, l_not(iscomplexfunction)):'\tfprintf(stderr,"#routdebugshowvalue#\\n",#name#_return_value);'}],
'pyobjfrom':{iscomplexfunction:'\t#name#_return_value_capi = pyobj_from_#ctype#1(#name#_return_value);'},
'need':[{l_not(isdummyroutine):'F_FUNC'},
{iscomplexfunction:'pyobj_from_#ctype#1'},
@@ -532,14 +532,14 @@ rout_rules=[
{islong_doublefunction:'long_double'}],
'returnformat':{l_not(isintent_hide):'#rformat#'},
'return':{iscomplexfunction:',#name#_return_value_capi',
- l_not(l_or(iscomplexfunction,isintent_hide)):',#name#_return_value'},
- '_check':l_and(isfunction,l_not(isstringfunction),l_not(isfunction_wrap))
- },{ # String function # in use for --no-wrap
+ l_not(l_or(iscomplexfunction, isintent_hide)):',#name#_return_value'},
+ '_check':l_and(isfunction, l_not(isstringfunction), l_not(isfunction_wrap))
+ }, { # String function # in use for --no-wrap
'declfortranroutine':'extern void #F_FUNC#(#fortranname#,#FORTRANNAME#)(#callprotoargument#);',
- 'routine_def':{l_not(l_or(ismoduleroutine,isintent_c)):
+ 'routine_def':{l_not(l_or(ismoduleroutine, isintent_c)):
# '\t{\"#name#\",-1,{{-1}},0,(char *)F_FUNC(#fortranname#,#FORTRANNAME#),(void *)#apiname#,doc_#apiname#},',
'\t{\"#name#\",-1,{{-1}},0,(char *)#F_FUNC#(#fortranname#,#FORTRANNAME#),(f2py_init_func)#apiname#,doc_#apiname#},',
- l_and(l_not(ismoduleroutine),isintent_c):
+ l_and(l_not(ismoduleroutine), isintent_c):
# '\t{\"#name#\",-1,{{-1}},0,(char *)#fortranname#,(void *)#apiname#,doc_#apiname#},'
'\t{\"#name#\",-1,{{-1}},0,(char *)#fortranname#,(f2py_init_func)#apiname#,doc_#apiname#},'
},
@@ -574,8 +574,8 @@ rout_rules=[
'returnformat':'#rformat#',
'return':',#name#_return_value',
'freemem':'\tSTRINGFREE(#name#_return_value);',
- 'need':['F_FUNC','#ctype#','STRINGFREE'],
- '_check':l_and(isstringfunction,l_not(isfunction_wrap)) # ???obsolete
+ 'need':['F_FUNC', '#ctype#', 'STRINGFREE'],
+ '_check':l_and(isstringfunction, l_not(isfunction_wrap)) # ???obsolete
},
{ # Debugging
'routdebugenter':'\tfprintf(stderr,"debug-capi:Python C/API function #modulename#.#name#(#docsignature#)\\n");',
@@ -587,17 +587,17 @@ rout_rules=[
################ Rules for arguments ##################
-typedef_need_dict = {islong_long:'long_long',
- islong_double:'long_double',
- islong_complex:'complex_long_double',
- isunsigned_char:'unsigned_char',
- isunsigned_short:'unsigned_short',
- isunsigned:'unsigned',
- isunsigned_long_long:'unsigned_long_long',
- isunsigned_chararray:'unsigned_char',
- isunsigned_shortarray:'unsigned_short',
- isunsigned_long_longarray:'unsigned_long_long',
- issigned_long_longarray:'long_long',
+typedef_need_dict = {islong_long: 'long_long',
+ islong_double: 'long_double',
+ islong_complex: 'complex_long_double',
+ isunsigned_char: 'unsigned_char',
+ isunsigned_short: 'unsigned_short',
+ isunsigned: 'unsigned',
+ isunsigned_long_long: 'unsigned_long_long',
+ isunsigned_chararray: 'unsigned_char',
+ isunsigned_shortarray: 'unsigned_short',
+ isunsigned_long_longarray: 'unsigned_long_long',
+ issigned_long_longarray: 'long_long',
}
aux_rules=[
@@ -605,24 +605,24 @@ aux_rules=[
'separatorsfor':sepdict
},
{ # Common
- 'frompyobj':['\t/* Processing auxiliary variable #varname# */',
+ 'frompyobj': ['\t/* Processing auxiliary variable #varname# */',
{debugcapi:'\tfprintf(stderr,"#vardebuginfo#\\n");'},],
- 'cleanupfrompyobj':'\t/* End of cleaning variable #varname# */',
- 'need':typedef_need_dict,
+ 'cleanupfrompyobj': '\t/* End of cleaning variable #varname# */',
+ 'need': typedef_need_dict,
},
# Scalars (not complex)
{ # Common
- 'decl':'\t#ctype# #varname# = 0;',
- 'need':{hasinitvalue:'math.h'},
- 'frompyobj':{hasinitvalue:'\t#varname# = #init#;'},
- '_check':l_and(isscalar,l_not(iscomplex)),
+ 'decl': '\t#ctype# #varname# = 0;',
+ 'need': {hasinitvalue:'math.h'},
+ 'frompyobj': {hasinitvalue:'\t#varname# = #init#;'},
+ '_check': l_and(isscalar, l_not(iscomplex)),
},
{
- 'return':',#varname#',
- 'docstrout':'#pydocsignout#',
- 'docreturn':'#outvarname#,',
- 'returnformat':'#varrformat#',
- '_check':l_and(isscalar,l_not(iscomplex),isintent_out),
+ 'return': ',#varname#',
+ 'docstrout': '#pydocsignout#',
+ 'docreturn': '#outvarname#,',
+ 'returnformat': '#varrformat#',
+ '_check': l_and(isscalar, l_not(iscomplex), isintent_out),
},
# Complex scalars
{ # Common
@@ -644,14 +644,14 @@ aux_rules=[
'\tnpy_intp #varname#_Dims[#rank#] = {#rank*[-1]#};',
'\tconst int #varname#_Rank = #rank#;',
],
- 'need':['len..',{hasinitvalue:'forcomb'},{hasinitvalue:'CFUNCSMESS'}],
+ 'need':['len..', {hasinitvalue:'forcomb'}, {hasinitvalue:'CFUNCSMESS'}],
'_check':isarray
},
# Scalararray
{ # Common
- '_check':l_and(isarray,l_not(iscomplexarray))
- },{ # Not hidden
- '_check':l_and(isarray,l_not(iscomplexarray),isintent_nothide)
+ '_check':l_and(isarray, l_not(iscomplexarray))
+ }, { # Not hidden
+ '_check':l_and(isarray, l_not(iscomplexarray), isintent_nothide)
},
# Integer*1 array
{'need':'#ctype#',
@@ -691,37 +691,37 @@ arg_rules=[
'separatorsfor':sepdict
},
{ # Common
- 'frompyobj':['\t/* Processing variable #varname# */',
+ 'frompyobj': ['\t/* Processing variable #varname# */',
{debugcapi:'\tfprintf(stderr,"#vardebuginfo#\\n");'},],
- 'cleanupfrompyobj':'\t/* End of cleaning variable #varname# */',
- '_depend':'',
- 'need':typedef_need_dict,
+ 'cleanupfrompyobj': '\t/* End of cleaning variable #varname# */',
+ '_depend': '',
+ 'need': typedef_need_dict,
},
# Doc signatures
{
- 'docstropt':{l_and(isoptional,isintent_nothide):'#pydocsign#'},
- 'docstrreq':{l_and(isrequired,isintent_nothide):'#pydocsign#'},
+ 'docstropt':{l_and(isoptional, isintent_nothide):'#pydocsign#'},
+ 'docstrreq':{l_and(isrequired, isintent_nothide):'#pydocsign#'},
'docstrout':{isintent_out:'#pydocsignout#'},
- 'latexdocstropt':{l_and(isoptional,isintent_nothide):['\\item[]{{}\\verb@#pydocsign#@{}}',
+ 'latexdocstropt':{l_and(isoptional, isintent_nothide):['\\item[]{{}\\verb@#pydocsign#@{}}',
{hasnote:'--- #note#'}]},
- 'latexdocstrreq':{l_and(isrequired,isintent_nothide):['\\item[]{{}\\verb@#pydocsign#@{}}',
+ 'latexdocstrreq':{l_and(isrequired, isintent_nothide):['\\item[]{{}\\verb@#pydocsign#@{}}',
{hasnote:'--- #note#'}]},
'latexdocstrout':{isintent_out:['\\item[]{{}\\verb@#pydocsignout#@{}}',
- {l_and(hasnote,isintent_hide):'--- #note#',
- l_and(hasnote,isintent_nothide):'--- See above.'}]},
+ {l_and(hasnote, isintent_hide):'--- #note#',
+ l_and(hasnote, isintent_nothide):'--- See above.'}]},
'depend':''
},
# Required/Optional arguments
{
'kwlist':'"#varname#",',
'docsign':'#varname#,',
- '_check':l_and(isintent_nothide,l_not(isoptional))
+ '_check':l_and(isintent_nothide, l_not(isoptional))
},
{
'kwlistopt':'"#varname#",',
'docsignopt':'#varname#=#showinit#,',
'docsignoptshort':'#varname#,',
- '_check':l_and(isintent_nothide,isoptional)
+ '_check':l_and(isintent_nothide, isoptional)
},
# Docstring/BuildValue
{
@@ -752,7 +752,7 @@ arg_rules=[
'keys_xa':',&PyTuple_Type,&#varname#_xa_capi',
'setjmpbuf':'(setjmp(#cbname#_jmpbuf))',
'callfortran':{l_not(isintent_callback):'#varname#_cptr,'},
- 'need':['#cbname#','setjmp.h'],
+ 'need':['#cbname#', 'setjmp.h'],
'_check':isexternal
},
{
@@ -762,7 +762,7 @@ if(F2PyCapsule_Check(#varname#_capi)) {
} else {
#varname#_cptr = #cbname#;
}
-"""},{isintent_callback:"""\
+"""}, {isintent_callback:"""\
if (#varname#_capi==Py_None) {
#varname#_capi = PyObject_GetAttrString(#modulename#_module,\"#varname#\");
if (#varname#_capi) {
@@ -814,7 +814,7 @@ if (#varname#_capi==Py_None) {
\t\t#cbname#_nofargs = #varname#_nofargs_capi;
\t\tmemcpy(&#cbname#_jmpbuf,&#varname#_jmpbuf,sizeof(jmp_buf));
\t}""",
- 'need':['SWAP','create_cb_arglist'],
+ 'need':['SWAP', 'create_cb_arglist'],
'_check':isexternal,
'_depend':''
},
@@ -824,12 +824,12 @@ if (#varname#_capi==Py_None) {
'pyobjfrom':{debugcapi:'\tfprintf(stderr,"#vardebugshowvalue#\\n",#varname#);'},
'callfortran':{isintent_c:'#varname#,',l_not(isintent_c):'&#varname#,'},
'return':{isintent_out:',#varname#'},
- '_check':l_and(isscalar,l_not(iscomplex))
- },{
- 'need':{hasinitvalue:'math.h'},
- '_check':l_and(isscalar,l_not(iscomplex)),
+ '_check':l_and(isscalar, l_not(iscomplex))
+ }, {
+ 'need': {hasinitvalue:'math.h'},
+ '_check': l_and(isscalar, l_not(iscomplex)),
#'_depend':''
- },{ # Not hidden
+ }, { # Not hidden
'decl':'\tPyObject *#varname#_capi = Py_None;',
'argformat':{isrequired:'O'},
'keyformat':{isoptional:'O'},
@@ -840,8 +840,8 @@ if (#varname#_capi==Py_None) {
\tif (f2py_success) {"""},
'closepyobjfrom':{isintent_inout:"\t} /*if (f2py_success) of #varname# pyobjfrom*/"},
'need':{isintent_inout:'try_pyarr_from_#ctype#'},
- '_check':l_and(isscalar,l_not(iscomplex),isintent_nothide)
- },{
+ '_check':l_and(isscalar, l_not(iscomplex), isintent_nothide)
+ }, {
'frompyobj':[
# hasinitvalue...
# if pyobj is None:
@@ -860,7 +860,7 @@ if (#varname#_capi==Py_None) {
#
{hasinitvalue:'\tif (#varname#_capi == Py_None) #varname# = #init#; else',
'_depend':''},
- {l_and(isoptional,l_not(hasinitvalue)):'\tif (#varname#_capi != Py_None)',
+ {l_and(isoptional, l_not(hasinitvalue)):'\tif (#varname#_capi != Py_None)',
'_depend':''},
{l_not(islogical):'''\
\t\tf2py_success = #ctype#_from_pyobj(&#varname#,#varname#_capi,"#pyname#() #nth# (#varname#) can\'t be converted to #ctype#");
@@ -872,18 +872,18 @@ if (#varname#_capi==Py_None) {
],
'cleanupfrompyobj':'\t} /*if (f2py_success) of #varname#*/',
'need':{l_not(islogical):'#ctype#_from_pyobj'},
- '_check':l_and(isscalar,l_not(iscomplex),isintent_nothide),
+ '_check':l_and(isscalar, l_not(iscomplex), isintent_nothide),
'_depend':''
# },{ # Hidden
# '_check':l_and(isscalar,l_not(iscomplex),isintent_hide)
- },{ # Hidden
+ }, { # Hidden
'frompyobj':{hasinitvalue:'\t#varname# = #init#;'},
'need':typedef_need_dict,
- '_check':l_and(isscalar,l_not(iscomplex),isintent_hide),
+ '_check':l_and(isscalar, l_not(iscomplex), isintent_hide),
'_depend':''
- },{ # Common
+ }, { # Common
'frompyobj':{debugcapi:'\tfprintf(stderr,"#vardebugshowvalue#\\n",#varname#);'},
- '_check':l_and(isscalar,l_not(iscomplex)),
+ '_check':l_and(isscalar, l_not(iscomplex)),
'_depend':''
},
# Complex scalars
@@ -893,7 +893,7 @@ if (#varname#_capi==Py_None) {
'pyobjfrom':{debugcapi:'\tfprintf(stderr,"#vardebugshowvalue#\\n",#varname#.r,#varname#.i);'},
'return':{isintent_out:',#varname#_capi'},
'_check':iscomplex
- },{ # Not hidden
+ }, { # Not hidden
'decl':'\tPyObject *#varname#_capi = Py_None;',
'argformat':{isrequired:'O'},
'keyformat':{isoptional:'O'},
@@ -904,29 +904,29 @@ if (#varname#_capi==Py_None) {
\t\tf2py_success = try_pyarr_from_#ctype#(#varname#_capi,&#varname#);
\t\tif (f2py_success) {"""},
'closepyobjfrom':{isintent_inout:"\t\t} /*if (f2py_success) of #varname# pyobjfrom*/"},
- '_check':l_and(iscomplex,isintent_nothide)
- },{
+ '_check':l_and(iscomplex, isintent_nothide)
+ }, {
'frompyobj':[{hasinitvalue:'\tif (#varname#_capi==Py_None) {#varname#.r = #init.r#, #varname#.i = #init.i#;} else'},
- {l_and(isoptional,l_not(hasinitvalue)):'\tif (#varname#_capi != Py_None)'},
+ {l_and(isoptional, l_not(hasinitvalue)):'\tif (#varname#_capi != Py_None)'},
# '\t\tf2py_success = #ctype#_from_pyobj(&#varname#,#varname#_capi,"#ctype#_from_pyobj failed in converting #nth# `#varname#\' of #pyname# to C #ctype#\\n");'
'\t\tf2py_success = #ctype#_from_pyobj(&#varname#,#varname#_capi,"#pyname#() #nth# (#varname#) can\'t be converted to #ctype#");'
'\n\tif (f2py_success) {'],
'cleanupfrompyobj':'\t} /*if (f2py_success) of #varname# frompyobj*/',
'need':['#ctype#_from_pyobj'],
- '_check':l_and(iscomplex,isintent_nothide),
+ '_check':l_and(iscomplex, isintent_nothide),
'_depend':''
- },{ # Hidden
+ }, { # Hidden
'decl':{isintent_out:'\tPyObject *#varname#_capi = Py_None;'},
- '_check':l_and(iscomplex,isintent_hide)
- },{
+ '_check':l_and(iscomplex, isintent_hide)
+ }, {
'frompyobj': {hasinitvalue:'\t#varname#.r = #init.r#, #varname#.i = #init.i#;'},
- '_check':l_and(iscomplex,isintent_hide),
+ '_check':l_and(iscomplex, isintent_hide),
'_depend':''
- },{ # Common
+ }, { # Common
'pyobjfrom':{isintent_out:'\t#varname#_capi = pyobj_from_#ctype#1(#varname#);'},
'need':['pyobj_from_#ctype#1'],
'_check':iscomplex
- },{
+ }, {
'frompyobj':{debugcapi:'\tfprintf(stderr,"#vardebugshowvalue#\\n",#varname#.r,#varname#.i);'},
'_check':iscomplex,
'_depend':''
@@ -943,7 +943,7 @@ if (#varname#_capi==Py_None) {
'return':{isintent_out:',#varname#'},
'need':['len..'],#'STRINGFREE'],
'_check':isstring
- },{ # Common
+ }, { # Common
'frompyobj':"""\
\tslen(#varname#) = #length#;
\tf2py_success = #ctype#_from_pyobj(&#varname#,&slen(#varname#),#init#,#varname#_capi,\"#ctype#_from_pyobj failed in converting #nth# `#varname#\' of #pyname# to C #ctype#\");
@@ -951,10 +951,10 @@ if (#varname#_capi==Py_None) {
'cleanupfrompyobj':"""\
\t\tSTRINGFREE(#varname#);
\t} /*if (f2py_success) of #varname#*/""",
- 'need':['#ctype#_from_pyobj','len..','STRINGFREE'],
+ 'need':['#ctype#_from_pyobj', 'len..', 'STRINGFREE'],
'_check':isstring,
'_depend':''
- },{ # Not hidden
+ }, { # Not hidden
'argformat':{isrequired:'O'},
'keyformat':{isoptional:'O'},
'args_capi':{isrequired:',&#varname#_capi'},
@@ -964,10 +964,10 @@ if (#varname#_capi==Py_None) {
\tif (f2py_success) {'''},
'closepyobjfrom':{isintent_inout:'\t} /*if (f2py_success) of #varname# pyobjfrom*/'},
'need':{isintent_inout:'try_pyarr_from_#ctype#'},
- '_check':l_and(isstring,isintent_nothide)
- },{ # Hidden
- '_check':l_and(isstring,isintent_hide)
- },{
+ '_check':l_and(isstring, isintent_nothide)
+ }, { # Hidden
+ '_check':l_and(isstring, isintent_hide)
+ }, {
'frompyobj':{debugcapi:'\tfprintf(stderr,"#vardebugshowvalue#\\n",slen(#varname#),#varname#);'},
'_check':isstring,
'_depend':''
@@ -984,38 +984,38 @@ if (#varname#_capi==Py_None) {
'return':{isintent_out:',capi_#varname#_tmp'},
'need':'len..',
'_check':isarray
- },{ # intent(overwrite) array
- 'decl':'\tint capi_overwrite_#varname# = 1;',
- 'kwlistxa':'"overwrite_#varname#",',
- 'xaformat':'i',
- 'keys_xa':',&capi_overwrite_#varname#',
- 'docsignxa':'overwrite_#varname#=1,',
- 'docsignxashort':'overwrite_#varname#,',
- 'docstropt':'overwrite_#varname# : input int, optional\\n Default: 1',
- '_check':l_and(isarray,isintent_overwrite),
- },{
- 'frompyobj':'\tcapi_#varname#_intent |= (capi_overwrite_#varname#?0:F2PY_INTENT_COPY);',
- '_check':l_and(isarray,isintent_overwrite),
- '_depend':'',
+ }, { # intent(overwrite) array
+ 'decl': '\tint capi_overwrite_#varname# = 1;',
+ 'kwlistxa': '"overwrite_#varname#",',
+ 'xaformat': 'i',
+ 'keys_xa': ',&capi_overwrite_#varname#',
+ 'docsignxa': 'overwrite_#varname#=1,',
+ 'docsignxashort': 'overwrite_#varname#,',
+ 'docstropt': 'overwrite_#varname# : input int, optional\\n Default: 1',
+ '_check': l_and(isarray, isintent_overwrite),
+ }, {
+ 'frompyobj': '\tcapi_#varname#_intent |= (capi_overwrite_#varname#?0:F2PY_INTENT_COPY);',
+ '_check': l_and(isarray, isintent_overwrite),
+ '_depend': '',
},
{ # intent(copy) array
- 'decl':'\tint capi_overwrite_#varname# = 0;',
- 'kwlistxa':'"overwrite_#varname#",',
- 'xaformat':'i',
- 'keys_xa':',&capi_overwrite_#varname#',
- 'docsignxa':'overwrite_#varname#=0,',
- 'docsignxashort':'overwrite_#varname#,',
- 'docstropt':'overwrite_#varname# : input int, optional\\n Default: 0',
- '_check':l_and(isarray,isintent_copy),
- },{
- 'frompyobj':'\tcapi_#varname#_intent |= (capi_overwrite_#varname#?0:F2PY_INTENT_COPY);',
- '_check':l_and(isarray,isintent_copy),
- '_depend':'',
- },{
- 'need':[{hasinitvalue:'forcomb'},{hasinitvalue:'CFUNCSMESS'}],
+ 'decl': '\tint capi_overwrite_#varname# = 0;',
+ 'kwlistxa': '"overwrite_#varname#",',
+ 'xaformat': 'i',
+ 'keys_xa': ',&capi_overwrite_#varname#',
+ 'docsignxa': 'overwrite_#varname#=0,',
+ 'docsignxashort': 'overwrite_#varname#,',
+ 'docstropt': 'overwrite_#varname# : input int, optional\\n Default: 0',
+ '_check': l_and(isarray, isintent_copy),
+ }, {
+ 'frompyobj': '\tcapi_#varname#_intent |= (capi_overwrite_#varname#?0:F2PY_INTENT_COPY);',
+ '_check': l_and(isarray, isintent_copy),
+ '_depend': '',
+ }, {
+ 'need':[{hasinitvalue:'forcomb'}, {hasinitvalue:'CFUNCSMESS'}],
'_check':isarray,
'_depend':''
- },{ # Not hidden
+ }, { # Not hidden
'decl':'\tPyObject *#varname#_capi = Py_None;',
'argformat':{isrequired:'O'},
'keyformat':{isoptional:'O'},
@@ -1036,8 +1036,8 @@ if (#varname#_capi==Py_None) {
# */
# """},
# 'need':{isintent_inout:'copy_ND_array'},
- '_check':l_and(isarray,isintent_nothide)
- },{
+ '_check':l_and(isarray, isintent_nothide)
+ }, {
'frompyobj':['\t#setdims#;',
'\tcapi_#varname#_intent |= #intent#;',
{isintent_hide:'\tcapi_#varname#_tmp = array_from_pyobj(#atype#,#varname#_Dims,#varname#_Rank,capi_#varname#_intent,Py_None);'},
@@ -1069,10 +1069,10 @@ if (#varname#_capi==Py_None) {
],
'cleanupfrompyobj':[ # note that this list will be reversed
'\t} /*if (capi_#varname#_tmp == NULL) ... else of #varname#*/',
- {l_not(l_or(isintent_out,isintent_hide)):"""\
+ {l_not(l_or(isintent_out, isintent_hide)):"""\
\tif((PyObject *)capi_#varname#_tmp!=#varname#_capi) {
\t\tPy_XDECREF(capi_#varname#_tmp); }"""},
- {l_and(isintent_hide,l_not(isintent_out)):"""\t\tPy_XDECREF(capi_#varname#_tmp);"""},
+ {l_and(isintent_hide, l_not(isintent_out)):"""\t\tPy_XDECREF(capi_#varname#_tmp);"""},
{hasinitvalue:'\t} /*if (f2py_success) of #varname# init*/'},
],
'_check':isarray,
@@ -1084,9 +1084,9 @@ if (#varname#_capi==Py_None) {
# },
# Scalararray
{ # Common
- '_check':l_and(isarray,l_not(iscomplexarray))
- },{ # Not hidden
- '_check':l_and(isarray,l_not(iscomplexarray),isintent_nothide)
+ '_check':l_and(isarray, l_not(iscomplexarray))
+ }, { # Not hidden
+ '_check':l_and(isarray, l_not(iscomplexarray), isintent_nothide)
},
# Integer*1 array
{'need':'#ctype#',
@@ -1127,28 +1127,28 @@ check_rules=[
{
'frompyobj':{debugcapi:'\tfprintf(stderr,\"debug-capi:Checking `#check#\'\\n\");'},
'need':'len..'
- },{
+ }, {
'frompyobj':'\tCHECKSCALAR(#check#,\"#check#\",\"#nth# #varname#\",\"#varshowvalue#\",#varname#) {',
'cleanupfrompyobj':'\t} /*CHECKSCALAR(#check#)*/',
'need':'CHECKSCALAR',
- '_check':l_and(isscalar,l_not(iscomplex)),
+ '_check':l_and(isscalar, l_not(iscomplex)),
'_break':''
- },{
+ }, {
'frompyobj':'\tCHECKSTRING(#check#,\"#check#\",\"#nth# #varname#\",\"#varshowvalue#\",#varname#) {',
'cleanupfrompyobj':'\t} /*CHECKSTRING(#check#)*/',
'need':'CHECKSTRING',
'_check':isstring,
'_break':''
- },{
+ }, {
'need':'CHECKARRAY',
'frompyobj':'\tCHECKARRAY(#check#,\"#check#\",\"#nth# #varname#\") {',
'cleanupfrompyobj':'\t} /*CHECKARRAY(#check#)*/',
'_check':isarray,
'_break':''
- },{
- 'need':'CHECKGENERIC',
- 'frompyobj':'\tCHECKGENERIC(#check#,\"#check#\",\"#nth# #varname#\") {',
- 'cleanupfrompyobj':'\t} /*CHECKGENERIC(#check#)*/',
+ }, {
+ 'need': 'CHECKGENERIC',
+ 'frompyobj': '\tCHECKGENERIC(#check#,\"#check#\",\"#nth# #varname#\") {',
+ 'cleanupfrompyobj': '\t} /*CHECKGENERIC(#check#)*/',
}
]
@@ -1156,16 +1156,16 @@ check_rules=[
#################### Build C/API module #######################
-def buildmodule(m,um):
+def buildmodule(m, um):
"""
Return
"""
- global f2py_version,options
+ global f2py_version, options
outmess('\tBuilding module "%s"...\n'%(m['name']))
ret = {}
mod_rules=defmod_rules[:]
vrd=modsign2map(m)
- rd=dictappend({'f2py_version':f2py_version},vrd)
+ rd=dictappend({'f2py_version':f2py_version}, vrd)
funcwrappers = []
funcwrappers2 = [] # F90 codes
for n in m['interfaced']:
@@ -1182,39 +1182,39 @@ def buildmodule(m,um):
continue
nb_list = [nb]
if 'entry' in nb:
- for k,a in nb['entry'].items():
+ for k, a in nb['entry'].items():
nb1 = copy.deepcopy(nb)
del nb1['entry']
nb1['name'] = k
nb1['args'] = a
nb_list.append(nb1)
for nb in nb_list:
- api,wrap=buildapi(nb)
+ api, wrap=buildapi(nb)
if wrap:
if ismoduleroutine(nb):
funcwrappers2.append(wrap)
else:
funcwrappers.append(wrap)
- ar=applyrules(api,vrd)
- rd=dictappend(rd,ar)
+ ar=applyrules(api, vrd)
+ rd=dictappend(rd, ar)
# Construct COMMON block support
- cr,wrap = common_rules.buildhooks(m)
+ cr, wrap = common_rules.buildhooks(m)
if wrap:
funcwrappers.append(wrap)
- ar=applyrules(cr,vrd)
- rd=dictappend(rd,ar)
+ ar=applyrules(cr, vrd)
+ rd=dictappend(rd, ar)
# Construct F90 module support
- mr,wrap = f90mod_rules.buildhooks(m)
+ mr, wrap = f90mod_rules.buildhooks(m)
if wrap:
funcwrappers2.append(wrap)
- ar=applyrules(mr,vrd)
- rd=dictappend(rd,ar)
+ ar=applyrules(mr, vrd)
+ rd=dictappend(rd, ar)
for u in um:
- ar=use_rules.buildusevars(u,m['use'][u['name']])
- rd=dictappend(rd,ar)
+ ar=use_rules.buildusevars(u, m['use'][u['name']])
+ rd=dictappend(rd, ar)
needs=cfuncs.get_needs()
code={}
@@ -1248,28 +1248,28 @@ def buildmodule(m,um):
mod_rules.append(code)
for r in mod_rules:
if ('_check' in r and r['_check'](m)) or ('_check' not in r):
- ar=applyrules(r,vrd,m)
- rd=dictappend(rd,ar)
- ar=applyrules(module_rules,rd)
+ ar=applyrules(r, vrd, m)
+ rd=dictappend(rd, ar)
+ ar=applyrules(module_rules, rd)
- fn = os.path.join(options['buildpath'],vrd['coutput'])
+ fn = os.path.join(options['buildpath'], vrd['coutput'])
ret['csrc'] = fn
- f=open(fn,'w')
- f.write(ar['modulebody'].replace('\t',2*' '))
+ f=open(fn, 'w')
+ f.write(ar['modulebody'].replace('\t', 2*' '))
f.close()
- outmess('\tWrote C/API module "%s" to file "%s"\n'%(m['name'],fn))
+ outmess('\tWrote C/API module "%s" to file "%s"\n'%(m['name'], fn))
if options['dorestdoc']:
- fn = os.path.join(options['buildpath'],vrd['modulename']+'module.rest')
- f=open(fn,'w')
+ fn = os.path.join(options['buildpath'], vrd['modulename']+'module.rest')
+ f=open(fn, 'w')
f.write('.. -*- rest -*-\n')
f.write('\n'.join(ar['restdoc']))
f.close()
- outmess('\tReST Documentation is saved to file "%s/%smodule.rest"\n'%(options['buildpath'],vrd['modulename']))
+ outmess('\tReST Documentation is saved to file "%s/%smodule.rest"\n'%(options['buildpath'], vrd['modulename']))
if options['dolatexdoc']:
- fn = os.path.join(options['buildpath'],vrd['modulename']+'module.tex')
+ fn = os.path.join(options['buildpath'], vrd['modulename']+'module.tex')
ret['ltx'] = fn
- f=open(fn,'w')
+ f=open(fn, 'w')
f.write('%% This file is auto-generated with f2py (version:%s)\n'%(f2py_version))
if 'shortlatex' not in options:
f.write('\\documentclass{article}\n\\usepackage{a4wide}\n\\begin{document}\n\\tableofcontents\n\n')
@@ -1277,11 +1277,11 @@ def buildmodule(m,um):
if 'shortlatex' not in options:
f.write('\\end{document}')
f.close()
- outmess('\tDocumentation is saved to file "%s/%smodule.tex"\n'%(options['buildpath'],vrd['modulename']))
+ outmess('\tDocumentation is saved to file "%s/%smodule.tex"\n'%(options['buildpath'], vrd['modulename']))
if funcwrappers:
- wn = os.path.join(options['buildpath'],vrd['f2py_wrapper_output'])
+ wn = os.path.join(options['buildpath'], vrd['f2py_wrapper_output'])
ret['fsrc'] = wn
- f=open(wn,'w')
+ f=open(wn, 'w')
f.write('C -*- fortran -*-\n')
f.write('C This file is autogenerated with f2py (version:%s)\n'%(f2py_version))
f.write('C It contains Fortran 77 wrappers to fortran functions.\n')
@@ -1293,14 +1293,14 @@ def buildmodule(m,um):
l = l[66:]
lines.append(l+'\n')
else: lines.append(l+'\n')
- lines = ''.join(lines).replace('\n &\n','\n')
+ lines = ''.join(lines).replace('\n &\n', '\n')
f.write(lines)
f.close()
outmess('\tFortran 77 wrappers are saved to "%s"\n'%(wn))
if funcwrappers2:
- wn = os.path.join(options['buildpath'],'%s-f2pywrappers2.f90'%(vrd['modulename']))
+ wn = os.path.join(options['buildpath'], '%s-f2pywrappers2.f90'%(vrd['modulename']))
ret['fsrc'] = wn
- f=open(wn,'w')
+ f=open(wn, 'w')
f.write('! -*- f90 -*-\n')
f.write('! This file is autogenerated with f2py (version:%s)\n'%(f2py_version))
f.write('! It contains Fortran 90 wrappers to fortran functions.\n')
@@ -1314,7 +1314,7 @@ def buildmodule(m,um):
l = l[66:]
lines.append(l+'\n')
else: lines.append(l+'\n')
- lines = ''.join(lines).replace('\n &\n','\n')
+ lines = ''.join(lines).replace('\n &\n', '\n')
f.write(lines)
f.close()
outmess('\tFortran 90 wrappers are saved to "%s"\n'%(wn))
@@ -1325,29 +1325,29 @@ def buildmodule(m,um):
stnd={1:'st',2:'nd',3:'rd',4:'th',5:'th',6:'th',7:'th',8:'th',9:'th',0:'th'}
def buildapi(rout):
- rout,wrap = func2subr.assubr(rout)
- args,depargs=getargs2(rout)
+ rout, wrap = func2subr.assubr(rout)
+ args, depargs=getargs2(rout)
capi_maps.depargs=depargs
var=rout['vars']
auxvars = [a for a in var.keys() if isintent_aux(var[a])]
if ismoduleroutine(rout):
- outmess('\t\t\tConstructing wrapper function "%s.%s"...\n'%(rout['modulename'],rout['name']))
+ outmess('\t\t\tConstructing wrapper function "%s.%s"...\n'%(rout['modulename'], rout['name']))
else:
outmess('\t\tConstructing wrapper function "%s"...\n'%(rout['name']))
# Routine
vrd=routsign2map(rout)
- rd=dictappend({},vrd)
+ rd=dictappend({}, vrd)
for r in rout_rules:
if ('_check' in r and r['_check'](rout)) or ('_check' not in r):
- ar=applyrules(r,vrd,rout)
- rd=dictappend(rd,ar)
+ ar=applyrules(r, vrd, rout)
+ rd=dictappend(rd, ar)
# Args
- nth,nthk=0,0
+ nth, nthk=0, 0
savevrd={}
for a in args:
- vrd=sign2map(a,var[a])
+ vrd=sign2map(a, var[a])
if isintent_aux(var[a]):
_rules = aux_rules
else:
@@ -1365,8 +1365,8 @@ def buildapi(rout):
if '_depend' in r:
continue
if ('_check' in r and r['_check'](var[a])) or ('_check' not in r):
- ar=applyrules(r,vrd,var[a])
- rd=dictappend(rd,ar)
+ ar=applyrules(r, vrd, var[a])
+ rd=dictappend(rd, ar)
if '_break' in r:
break
for a in depargs:
@@ -1379,15 +1379,15 @@ def buildapi(rout):
if '_depend' not in r:
continue
if ('_check' in r and r['_check'](var[a])) or ('_check' not in r):
- ar=applyrules(r,vrd,var[a])
- rd=dictappend(rd,ar)
+ ar=applyrules(r, vrd, var[a])
+ rd=dictappend(rd, ar)
if '_break' in r:
break
if 'check' in var[a]:
for c in var[a]['check']:
vrd['check']=c
- ar=applyrules(check_rules,vrd,var[a])
- rd=dictappend(rd,ar)
+ ar=applyrules(check_rules, vrd, var[a])
+ rd=dictappend(rd, ar)
if isinstance(rd['cleanupfrompyobj'], list):
rd['cleanupfrompyobj'].reverse()
if isinstance(rd['closepyobjfrom'], list):
@@ -1401,25 +1401,25 @@ def buildapi(rout):
'docsignopt':rd['docsignoptshort']}
))
if optargs=='':
- rd['docsignatureshort']=stripcomma(replace('#docsign#',{'docsign':rd['docsign']}))
+ rd['docsignatureshort']=stripcomma(replace('#docsign#', {'docsign':rd['docsign']}))
else:
rd['docsignatureshort']=replace('#docsign#[#docsignopt#]',
- {'docsign':rd['docsign'],
- 'docsignopt':optargs,
+ {'docsign': rd['docsign'],
+ 'docsignopt': optargs,
})
- rd['latexdocsignatureshort']=rd['docsignatureshort'].replace('_','\\_')
- rd['latexdocsignatureshort']=rd['latexdocsignatureshort'].replace(',',', ')
- cfs=stripcomma(replace('#callfortran##callfortranappend#',{'callfortran':rd['callfortran'],'callfortranappend':rd['callfortranappend']}))
+ rd['latexdocsignatureshort']=rd['docsignatureshort'].replace('_', '\\_')
+ rd['latexdocsignatureshort']=rd['latexdocsignatureshort'].replace(',', ', ')
+ cfs=stripcomma(replace('#callfortran##callfortranappend#', {'callfortran':rd['callfortran'],'callfortranappend':rd['callfortranappend']}))
if len(rd['callfortranappend'])>1:
- rd['callcompaqfortran']=stripcomma(replace('#callfortran# 0,#callfortranappend#',{'callfortran':rd['callfortran'],'callfortranappend':rd['callfortranappend']}))
+ rd['callcompaqfortran']=stripcomma(replace('#callfortran# 0,#callfortranappend#', {'callfortran':rd['callfortran'],'callfortranappend':rd['callfortranappend']}))
else:
rd['callcompaqfortran']=cfs
rd['callfortran']=cfs
if isinstance(rd['docreturn'], list):
- rd['docreturn']=stripcomma(replace('#docreturn#',{'docreturn':rd['docreturn']}))+' = '
+ rd['docreturn']=stripcomma(replace('#docreturn#', {'docreturn':rd['docreturn']}))+' = '
rd['docstrsigns']=[]
rd['latexdocstrsigns']=[]
- for k in ['docstrreq','docstropt','docstrout','docstrcbs']:
+ for k in ['docstrreq', 'docstropt', 'docstrout', 'docstrcbs']:
if k in rd and isinstance(rd[k], list):
rd['docstrsigns']=rd['docstrsigns']+rd[k]
k='latex'+k
@@ -1434,15 +1434,15 @@ def buildapi(rout):
if isinstance(argformat, list):
argformat.append('|')
else:
- assert isinstance(argformat, str),repr((argformat, type(argformat)))
+ assert isinstance(argformat, str), repr((argformat, type(argformat)))
rd['argformat'] += '|'
- ar=applyrules(routine_rules,rd)
+ ar=applyrules(routine_rules, rd)
if ismoduleroutine(rout):
outmess('\t\t\t %s\n'%(ar['docshort']))
else:
outmess('\t\t %s\n'%(ar['docshort']))
- return ar,wrap
+ return ar, wrap
#################### EOF rules.py #######################
diff --git a/numpy/f2py/setup.py b/numpy/f2py/setup.py
index 96a047ec7..2f1fd6a01 100644
--- a/numpy/f2py/setup.py
+++ b/numpy/f2py/setup.py
@@ -48,10 +48,10 @@ def configuration(parent_package='',top_path=None):
f2py_exe = f2py_exe[:-4] + '.py'
if 'bdist_wininst' in sys.argv and f2py_exe[-3:] != '.py':
f2py_exe = f2py_exe + '.py'
- target = os.path.join(build_dir,f2py_exe)
- if newer(__file__,target):
+ target = os.path.join(build_dir, f2py_exe)
+ if newer(__file__, target):
log.info('Creating %s', target)
- f = open(target,'w')
+ f = open(target, 'w')
f.write('''\
#!%s
# See http://cens.ioc.ee/projects/f2py2e/
@@ -91,7 +91,7 @@ if __name__ == "__main__":
config = configuration(top_path='')
version = config.get_version()
- print('F2PY Version',version)
+ print('F2PY Version', version)
config = config.todict()
if sys.version[:3]>='2.3':
@@ -125,5 +125,5 @@ wrapping Fortran 77/90/95 subroutines, accessing common blocks from
Python, and calling Python functions from Fortran (call-backs).
Interfacing subroutines/data from Fortran 90/95 modules is supported.""",
url = "http://cens.ioc.ee/projects/f2py2e/",
- keywords = ['Fortran','f2py'],
+ keywords = ['Fortran', 'f2py'],
**config)
diff --git a/numpy/f2py/tests/test_array_from_pyobj.py b/numpy/f2py/tests/test_array_from_pyobj.py
index 6707e8d8b..09d613293 100644
--- a/numpy/f2py/tests/test_array_from_pyobj.py
+++ b/numpy/f2py/tests/test_array_from_pyobj.py
@@ -8,7 +8,7 @@ import copy
import nose
from numpy.testing import *
-from numpy import array, alltrue, ndarray, asarray, can_cast,zeros, dtype
+from numpy import array, alltrue, ndarray, asarray, can_cast, zeros, dtype
from numpy.core.multiarray import typeinfo
import util
@@ -44,12 +44,12 @@ def flags_info(arr):
def flags2names(flags):
info = []
- for flagname in ['CONTIGUOUS','FORTRAN','OWNDATA','ENSURECOPY',
- 'ENSUREARRAY','ALIGNED','NOTSWAPPED','WRITEABLE',
- 'UPDATEIFCOPY','BEHAVED','BEHAVED_RO',
- 'CARRAY','FARRAY'
+ for flagname in ['CONTIGUOUS', 'FORTRAN', 'OWNDATA', 'ENSURECOPY',
+ 'ENSUREARRAY', 'ALIGNED', 'NOTSWAPPED', 'WRITEABLE',
+ 'UPDATEIFCOPY', 'BEHAVED', 'BEHAVED_RO',
+ 'CARRAY', 'FARRAY'
]:
- if abs(flags) & getattr(wrap,flagname, 0):
+ if abs(flags) & getattr(wrap, flagname, 0):
info.append(flagname)
return info
@@ -61,9 +61,9 @@ class Intent(object):
if i=='optional':
flags |= wrap.F2PY_OPTIONAL
else:
- flags |= getattr(wrap,'F2PY_INTENT_'+i.upper())
+ flags |= getattr(wrap, 'F2PY_INTENT_'+i.upper())
self.flags = flags
- def __getattr__(self,name):
+ def __getattr__(self, name):
name = name.lower()
if name=='in_': name='in'
return self.__class__(self.intent_list+[name])
@@ -82,9 +82,9 @@ class Intent(object):
intent = Intent()
class Type(object):
- _type_names = ['BOOL','BYTE','UBYTE','SHORT','USHORT','INT','UINT',
- 'LONG','ULONG','LONGLONG','ULONGLONG',
- 'FLOAT','DOUBLE','LONGDOUBLE','CFLOAT','CDOUBLE',
+ _type_names = ['BOOL', 'BYTE', 'UBYTE', 'SHORT', 'USHORT', 'INT', 'UINT',
+ 'LONG', 'ULONG', 'LONGLONG', 'ULONGLONG',
+ 'FLOAT', 'DOUBLE', 'LONGDOUBLE', 'CFLOAT', 'CDOUBLE',
'CLONGDOUBLE']
_type_cache = {}
@@ -93,10 +93,10 @@ class Type(object):
_cast_dict['UBYTE'] = _cast_dict['BOOL'] + ['UBYTE']
_cast_dict['BYTE'] = ['BYTE']
_cast_dict['UBYTE'] = ['UBYTE']
- _cast_dict['SHORT'] = _cast_dict['BYTE'] + ['UBYTE','SHORT']
- _cast_dict['USHORT'] = _cast_dict['UBYTE'] + ['BYTE','USHORT']
- _cast_dict['INT'] = _cast_dict['SHORT'] + ['USHORT','INT']
- _cast_dict['UINT'] = _cast_dict['USHORT'] + ['SHORT','UINT']
+ _cast_dict['SHORT'] = _cast_dict['BYTE'] + ['UBYTE', 'SHORT']
+ _cast_dict['USHORT'] = _cast_dict['UBYTE'] + ['BYTE', 'USHORT']
+ _cast_dict['INT'] = _cast_dict['SHORT'] + ['USHORT', 'INT']
+ _cast_dict['UINT'] = _cast_dict['USHORT'] + ['SHORT', 'UINT']
_cast_dict['LONG'] = _cast_dict['INT'] + ['LONG']
_cast_dict['ULONG'] = _cast_dict['UINT'] + ['ULONG']
@@ -104,24 +104,24 @@ class Type(object):
_cast_dict['LONGLONG'] = _cast_dict['LONG'] + ['LONGLONG']
_cast_dict['ULONGLONG'] = _cast_dict['ULONG'] + ['ULONGLONG']
- _cast_dict['FLOAT'] = _cast_dict['SHORT'] + ['USHORT','FLOAT']
- _cast_dict['DOUBLE'] = _cast_dict['INT'] + ['UINT','FLOAT','DOUBLE']
- _cast_dict['LONGDOUBLE'] = _cast_dict['LONG'] + ['ULONG','FLOAT','DOUBLE','LONGDOUBLE']
+ _cast_dict['FLOAT'] = _cast_dict['SHORT'] + ['USHORT', 'FLOAT']
+ _cast_dict['DOUBLE'] = _cast_dict['INT'] + ['UINT', 'FLOAT', 'DOUBLE']
+ _cast_dict['LONGDOUBLE'] = _cast_dict['LONG'] + ['ULONG', 'FLOAT', 'DOUBLE', 'LONGDOUBLE']
_cast_dict['CFLOAT'] = _cast_dict['FLOAT'] + ['CFLOAT']
- _cast_dict['CDOUBLE'] = _cast_dict['DOUBLE'] + ['CFLOAT','CDOUBLE']
- _cast_dict['CLONGDOUBLE'] = _cast_dict['LONGDOUBLE'] + ['CFLOAT','CDOUBLE','CLONGDOUBLE']
+ _cast_dict['CDOUBLE'] = _cast_dict['DOUBLE'] + ['CFLOAT', 'CDOUBLE']
+ _cast_dict['CLONGDOUBLE'] = _cast_dict['LONGDOUBLE'] + ['CFLOAT', 'CDOUBLE', 'CLONGDOUBLE']
- def __new__(cls,name):
- if isinstance(name,dtype):
+ def __new__(cls, name):
+ if isinstance(name, dtype):
dtype0 = name
name = None
- for n,i in typeinfo.items():
- if isinstance(i,tuple) and dtype0.type is i[-1]:
+ for n, i in typeinfo.items():
+ if isinstance(i, tuple) and dtype0.type is i[-1]:
name = n
break
- obj = cls._type_cache.get(name.upper(),None)
+ obj = cls._type_cache.get(name.upper(), None)
if obj is not None:
return obj
obj = object.__new__(cls)
@@ -129,10 +129,10 @@ class Type(object):
cls._type_cache[name.upper()] = obj
return obj
- def _init(self,name):
+ def _init(self, name):
self.NAME = name.upper()
- self.type_num = getattr(wrap,'NPY_'+self.NAME)
- assert_equal(self.type_num,typeinfo[self.NAME][1])
+ self.type_num = getattr(wrap, 'NPY_'+self.NAME)
+ assert_equal(self.type_num, typeinfo[self.NAME][1])
self.dtype = typeinfo[self.NAME][-1]
self.elsize = typeinfo[self.NAME][2] / 8
self.dtypechar = typeinfo[self.NAME][0]
@@ -169,7 +169,7 @@ class Type(object):
return types
class Array(object):
- def __init__(self,typ,dims,intent,obj):
+ def __init__(self, typ, dims, intent, obj):
self.type = typ
self.dims = dims
self.intent = intent
@@ -177,16 +177,16 @@ class Array(object):
self.obj = obj
# arr.dtypechar may be different from typ.dtypechar
- self.arr = wrap.call(typ.type_num,dims,intent.flags,obj)
+ self.arr = wrap.call(typ.type_num, dims, intent.flags, obj)
- assert_(isinstance(self.arr, ndarray),repr(type(self.arr)))
+ assert_(isinstance(self.arr, ndarray), repr(type(self.arr)))
self.arr_attr = wrap.array_attrs(self.arr)
if len(dims)>1:
if self.intent.is_intent('c'):
assert_(intent.flags & wrap.F2PY_INTENT_C)
- assert_(not self.arr.flags['FORTRAN'],repr((self.arr.flags,getattr(obj,'flags',None))))
+ assert_(not self.arr.flags['FORTRAN'], repr((self.arr.flags, getattr(obj, 'flags', None))))
assert_(self.arr.flags['CONTIGUOUS'])
assert_(not self.arr_attr[6] & wrap.FORTRAN)
else:
@@ -201,14 +201,14 @@ class Array(object):
return
if intent.is_intent('cache'):
- assert_(isinstance(obj,ndarray),repr(type(obj)))
+ assert_(isinstance(obj, ndarray), repr(type(obj)))
self.pyarr = array(obj).reshape(*dims).copy()
else:
self.pyarr = array(array(obj,
dtype = typ.dtypechar).reshape(*dims),
order=self.intent.is_intent('c') and 'C' or 'F')
assert_(self.pyarr.dtype == typ, \
- repr((self.pyarr.dtype,typ)))
+ repr((self.pyarr.dtype, typ)))
assert_(self.pyarr.flags['OWNDATA'], (obj, intent))
self.pyarr_attr = wrap.array_attrs(self.pyarr)
@@ -227,26 +227,26 @@ class Array(object):
assert_(self.arr_attr[2]==self.pyarr_attr[2]) # dimensions
if self.arr_attr[1]<=1:
assert_(self.arr_attr[3]==self.pyarr_attr[3],\
- repr((self.arr_attr[3],self.pyarr_attr[3],self.arr.tostring(),self.pyarr.tostring()))) # strides
+ repr((self.arr_attr[3], self.pyarr_attr[3], self.arr.tostring(), self.pyarr.tostring()))) # strides
assert_(self.arr_attr[5][-2:]==self.pyarr_attr[5][-2:],\
- repr((self.arr_attr[5],self.pyarr_attr[5]))) # descr
+ repr((self.arr_attr[5], self.pyarr_attr[5]))) # descr
assert_(self.arr_attr[6]==self.pyarr_attr[6],\
- repr((self.arr_attr[6],self.pyarr_attr[6],flags2names(0*self.arr_attr[6]-self.pyarr_attr[6]),flags2names(self.arr_attr[6]),intent))) # flags
+ repr((self.arr_attr[6], self.pyarr_attr[6], flags2names(0*self.arr_attr[6]-self.pyarr_attr[6]), flags2names(self.arr_attr[6]), intent))) # flags
if intent.is_intent('cache'):
assert_(self.arr_attr[5][3]>=self.type.elsize,\
- repr((self.arr_attr[5][3],self.type.elsize)))
+ repr((self.arr_attr[5][3], self.type.elsize)))
else:
assert_(self.arr_attr[5][3]==self.type.elsize,\
- repr((self.arr_attr[5][3],self.type.elsize)))
- assert_(self.arr_equal(self.pyarr,self.arr))
+ repr((self.arr_attr[5][3], self.type.elsize)))
+ assert_(self.arr_equal(self.pyarr, self.arr))
- if isinstance(self.obj,ndarray):
+ if isinstance(self.obj, ndarray):
if typ.elsize==Type(obj.dtype).elsize:
if not intent.is_intent('copy') and self.arr_attr[1]<=1:
assert_(self.has_shared_memory())
- def arr_equal(self,arr1,arr2):
+ def arr_equal(self, arr1, arr2):
if arr1.shape != arr2.shape:
return False
s = arr1==arr2
@@ -260,7 +260,7 @@ class Array(object):
"""
if self.obj is self.arr:
return True
- if not isinstance(self.obj,ndarray):
+ if not isinstance(self.obj, ndarray):
return False
obj_attr = wrap.array_attrs(self.obj)
return obj_attr[0]==self.arr_attr[0]
@@ -269,36 +269,36 @@ class Array(object):
class test_intent(unittest.TestCase):
def test_in_out(self):
- assert_equal(str(intent.in_.out),'intent(in,out)')
+ assert_equal(str(intent.in_.out), 'intent(in,out)')
assert_(intent.in_.c.is_intent('c'))
assert_(not intent.in_.c.is_intent_exact('c'))
- assert_(intent.in_.c.is_intent_exact('c','in'))
- assert_(intent.in_.c.is_intent_exact('in','c'))
+ assert_(intent.in_.c.is_intent_exact('c', 'in'))
+ assert_(intent.in_.c.is_intent_exact('in', 'c'))
assert_(not intent.in_.is_intent('c'))
class _test_shared_memory:
- num2seq = [1,2]
- num23seq = [[1,2,3],[4,5,6]]
+ num2seq = [1, 2]
+ num23seq = [[1, 2, 3], [4, 5, 6]]
def test_in_from_2seq(self):
- a = self.array([2],intent.in_,self.num2seq)
+ a = self.array([2], intent.in_, self.num2seq)
assert_(not a.has_shared_memory())
def test_in_from_2casttype(self):
for t in self.type.cast_types():
- obj = array(self.num2seq,dtype=t.dtype)
- a = self.array([len(self.num2seq)],intent.in_,obj)
+ obj = array(self.num2seq, dtype=t.dtype)
+ a = self.array([len(self.num2seq)], intent.in_, obj)
if t.elsize==self.type.elsize:
- assert_(a.has_shared_memory(),repr((self.type.dtype,t.dtype)))
+ assert_(a.has_shared_memory(), repr((self.type.dtype, t.dtype)))
else:
- assert_(not a.has_shared_memory(),repr(t.dtype))
+ assert_(not a.has_shared_memory(), repr(t.dtype))
def test_inout_2seq(self):
- obj = array(self.num2seq,dtype=self.type.dtype)
- a = self.array([len(self.num2seq)],intent.inout,obj)
+ obj = array(self.num2seq, dtype=self.type.dtype)
+ a = self.array([len(self.num2seq)], intent.inout, obj)
assert_(a.has_shared_memory())
try:
- a = self.array([2],intent.in_.inout,self.num2seq)
+ a = self.array([2], intent.in_.inout, self.num2seq)
except TypeError as msg:
if not str(msg).startswith('failed to initialize intent(inout|inplace|cache) array'):
raise
@@ -306,15 +306,15 @@ class _test_shared_memory:
raise SystemError('intent(inout) should have failed on sequence')
def test_f_inout_23seq(self):
- obj = array(self.num23seq,dtype=self.type.dtype,order='F')
- shape = (len(self.num23seq),len(self.num23seq[0]))
- a = self.array(shape,intent.in_.inout,obj)
+ obj = array(self.num23seq, dtype=self.type.dtype, order='F')
+ shape = (len(self.num23seq), len(self.num23seq[0]))
+ a = self.array(shape, intent.in_.inout, obj)
assert_(a.has_shared_memory())
- obj = array(self.num23seq,dtype=self.type.dtype,order='C')
- shape = (len(self.num23seq),len(self.num23seq[0]))
+ obj = array(self.num23seq, dtype=self.type.dtype, order='C')
+ shape = (len(self.num23seq), len(self.num23seq[0]))
try:
- a = self.array(shape,intent.in_.inout,obj)
+ a = self.array(shape, intent.in_.inout, obj)
except ValueError as msg:
if not str(msg).startswith('failed to initialize intent(inout) array'):
raise
@@ -322,84 +322,84 @@ class _test_shared_memory:
raise SystemError('intent(inout) should have failed on improper array')
def test_c_inout_23seq(self):
- obj = array(self.num23seq,dtype=self.type.dtype)
- shape = (len(self.num23seq),len(self.num23seq[0]))
- a = self.array(shape,intent.in_.c.inout,obj)
+ obj = array(self.num23seq, dtype=self.type.dtype)
+ shape = (len(self.num23seq), len(self.num23seq[0]))
+ a = self.array(shape, intent.in_.c.inout, obj)
assert_(a.has_shared_memory())
def test_in_copy_from_2casttype(self):
for t in self.type.cast_types():
- obj = array(self.num2seq,dtype=t.dtype)
- a = self.array([len(self.num2seq)],intent.in_.copy,obj)
- assert_(not a.has_shared_memory(),repr(t.dtype))
+ obj = array(self.num2seq, dtype=t.dtype)
+ a = self.array([len(self.num2seq)], intent.in_.copy, obj)
+ assert_(not a.has_shared_memory(), repr(t.dtype))
def test_c_in_from_23seq(self):
- a = self.array([len(self.num23seq),len(self.num23seq[0])],
- intent.in_,self.num23seq)
+ a = self.array([len(self.num23seq), len(self.num23seq[0])],
+ intent.in_, self.num23seq)
assert_(not a.has_shared_memory())
def test_in_from_23casttype(self):
for t in self.type.cast_types():
- obj = array(self.num23seq,dtype=t.dtype)
- a = self.array([len(self.num23seq),len(self.num23seq[0])],
- intent.in_,obj)
- assert_(not a.has_shared_memory(),repr(t.dtype))
+ obj = array(self.num23seq, dtype=t.dtype)
+ a = self.array([len(self.num23seq), len(self.num23seq[0])],
+ intent.in_, obj)
+ assert_(not a.has_shared_memory(), repr(t.dtype))
def test_f_in_from_23casttype(self):
for t in self.type.cast_types():
- obj = array(self.num23seq,dtype=t.dtype,order='F')
- a = self.array([len(self.num23seq),len(self.num23seq[0])],
- intent.in_,obj)
+ obj = array(self.num23seq, dtype=t.dtype, order='F')
+ a = self.array([len(self.num23seq), len(self.num23seq[0])],
+ intent.in_, obj)
if t.elsize==self.type.elsize:
- assert_(a.has_shared_memory(),repr(t.dtype))
+ assert_(a.has_shared_memory(), repr(t.dtype))
else:
- assert_(not a.has_shared_memory(),repr(t.dtype))
+ assert_(not a.has_shared_memory(), repr(t.dtype))
def test_c_in_from_23casttype(self):
for t in self.type.cast_types():
- obj = array(self.num23seq,dtype=t.dtype)
- a = self.array([len(self.num23seq),len(self.num23seq[0])],
- intent.in_.c,obj)
+ obj = array(self.num23seq, dtype=t.dtype)
+ a = self.array([len(self.num23seq), len(self.num23seq[0])],
+ intent.in_.c, obj)
if t.elsize==self.type.elsize:
- assert_(a.has_shared_memory(),repr(t.dtype))
+ assert_(a.has_shared_memory(), repr(t.dtype))
else:
- assert_(not a.has_shared_memory(),repr(t.dtype))
+ assert_(not a.has_shared_memory(), repr(t.dtype))
def test_f_copy_in_from_23casttype(self):
for t in self.type.cast_types():
- obj = array(self.num23seq,dtype=t.dtype,order='F')
- a = self.array([len(self.num23seq),len(self.num23seq[0])],
- intent.in_.copy,obj)
- assert_(not a.has_shared_memory(),repr(t.dtype))
+ obj = array(self.num23seq, dtype=t.dtype, order='F')
+ a = self.array([len(self.num23seq), len(self.num23seq[0])],
+ intent.in_.copy, obj)
+ assert_(not a.has_shared_memory(), repr(t.dtype))
def test_c_copy_in_from_23casttype(self):
for t in self.type.cast_types():
- obj = array(self.num23seq,dtype=t.dtype)
- a = self.array([len(self.num23seq),len(self.num23seq[0])],
- intent.in_.c.copy,obj)
- assert_(not a.has_shared_memory(),repr(t.dtype))
+ obj = array(self.num23seq, dtype=t.dtype)
+ a = self.array([len(self.num23seq), len(self.num23seq[0])],
+ intent.in_.c.copy, obj)
+ assert_(not a.has_shared_memory(), repr(t.dtype))
def test_in_cache_from_2casttype(self):
for t in self.type.all_types():
if t.elsize != self.type.elsize:
continue
- obj = array(self.num2seq,dtype=t.dtype)
+ obj = array(self.num2seq, dtype=t.dtype)
shape = (len(self.num2seq),)
- a = self.array(shape,intent.in_.c.cache,obj)
- assert_(a.has_shared_memory(),repr(t.dtype))
+ a = self.array(shape, intent.in_.c.cache, obj)
+ assert_(a.has_shared_memory(), repr(t.dtype))
- a = self.array(shape,intent.in_.cache,obj)
- assert_(a.has_shared_memory(),repr(t.dtype))
+ a = self.array(shape, intent.in_.cache, obj)
+ assert_(a.has_shared_memory(), repr(t.dtype))
- obj = array(self.num2seq,dtype=t.dtype,order='F')
- a = self.array(shape,intent.in_.c.cache,obj)
- assert_(a.has_shared_memory(),repr(t.dtype))
+ obj = array(self.num2seq, dtype=t.dtype, order='F')
+ a = self.array(shape, intent.in_.c.cache, obj)
+ assert_(a.has_shared_memory(), repr(t.dtype))
- a = self.array(shape,intent.in_.cache,obj)
- assert_(a.has_shared_memory(),repr(t.dtype))
+ a = self.array(shape, intent.in_.cache, obj)
+ assert_(a.has_shared_memory(), repr(t.dtype))
try:
- a = self.array(shape,intent.in_.cache,obj[::-1])
+ a = self.array(shape, intent.in_.cache, obj[::-1])
except ValueError as msg:
if not str(msg).startswith('failed to initialize intent(cache) array'):
raise
@@ -409,10 +409,10 @@ class _test_shared_memory:
for t in self.type.all_types():
if t.elsize >= self.type.elsize:
continue
- obj = array(self.num2seq,dtype=t.dtype)
+ obj = array(self.num2seq, dtype=t.dtype)
shape = (len(self.num2seq),)
try:
- a = self.array(shape,intent.in_.cache,obj)
+ a = self.array(shape, intent.in_.cache, obj)
except ValueError as msg:
if not str(msg).startswith('failed to initialize intent(cache) array'):
raise
@@ -421,16 +421,16 @@ class _test_shared_memory:
def test_cache_hidden(self):
shape = (2,)
- a = self.array(shape,intent.cache.hide,None)
+ a = self.array(shape, intent.cache.hide, None)
assert_(a.arr.shape==shape)
- shape = (2,3)
- a = self.array(shape,intent.cache.hide,None)
+ shape = (2, 3)
+ a = self.array(shape, intent.cache.hide, None)
assert_(a.arr.shape==shape)
- shape = (-1,3)
+ shape = (-1, 3)
try:
- a = self.array(shape,intent.cache.hide,None)
+ a = self.array(shape, intent.cache.hide, None)
except ValueError as msg:
if not str(msg).startswith('failed to create intent(cache|hide)|optional array'):
raise
@@ -439,25 +439,25 @@ class _test_shared_memory:
def test_hidden(self):
shape = (2,)
- a = self.array(shape,intent.hide,None)
+ a = self.array(shape, intent.hide, None)
assert_(a.arr.shape==shape)
- assert_(a.arr_equal(a.arr,zeros(shape,dtype=self.type.dtype)))
+ assert_(a.arr_equal(a.arr, zeros(shape, dtype=self.type.dtype)))
- shape = (2,3)
- a = self.array(shape,intent.hide,None)
+ shape = (2, 3)
+ a = self.array(shape, intent.hide, None)
assert_(a.arr.shape==shape)
- assert_(a.arr_equal(a.arr,zeros(shape,dtype=self.type.dtype)))
+ assert_(a.arr_equal(a.arr, zeros(shape, dtype=self.type.dtype)))
assert_(a.arr.flags['FORTRAN'] and not a.arr.flags['CONTIGUOUS'])
- shape = (2,3)
- a = self.array(shape,intent.c.hide,None)
+ shape = (2, 3)
+ a = self.array(shape, intent.c.hide, None)
assert_(a.arr.shape==shape)
- assert_(a.arr_equal(a.arr,zeros(shape,dtype=self.type.dtype)))
+ assert_(a.arr_equal(a.arr, zeros(shape, dtype=self.type.dtype)))
assert_(not a.arr.flags['FORTRAN'] and a.arr.flags['CONTIGUOUS'])
- shape = (-1,3)
+ shape = (-1, 3)
try:
- a = self.array(shape,intent.hide,None)
+ a = self.array(shape, intent.hide, None)
except ValueError as msg:
if not str(msg).startswith('failed to create intent(cache|hide)|optional array'):
raise
@@ -466,48 +466,48 @@ class _test_shared_memory:
def test_optional_none(self):
shape = (2,)
- a = self.array(shape,intent.optional,None)
+ a = self.array(shape, intent.optional, None)
assert_(a.arr.shape==shape)
- assert_(a.arr_equal(a.arr,zeros(shape,dtype=self.type.dtype)))
+ assert_(a.arr_equal(a.arr, zeros(shape, dtype=self.type.dtype)))
- shape = (2,3)
- a = self.array(shape,intent.optional,None)
+ shape = (2, 3)
+ a = self.array(shape, intent.optional, None)
assert_(a.arr.shape==shape)
- assert_(a.arr_equal(a.arr,zeros(shape,dtype=self.type.dtype)))
+ assert_(a.arr_equal(a.arr, zeros(shape, dtype=self.type.dtype)))
assert_(a.arr.flags['FORTRAN'] and not a.arr.flags['CONTIGUOUS'])
- shape = (2,3)
- a = self.array(shape,intent.c.optional,None)
+ shape = (2, 3)
+ a = self.array(shape, intent.c.optional, None)
assert_(a.arr.shape==shape)
- assert_(a.arr_equal(a.arr,zeros(shape,dtype=self.type.dtype)))
+ assert_(a.arr_equal(a.arr, zeros(shape, dtype=self.type.dtype)))
assert_(not a.arr.flags['FORTRAN'] and a.arr.flags['CONTIGUOUS'])
def test_optional_from_2seq(self):
obj = self.num2seq
shape = (len(obj),)
- a = self.array(shape,intent.optional,obj)
+ a = self.array(shape, intent.optional, obj)
assert_(a.arr.shape==shape)
assert_(not a.has_shared_memory())
def test_optional_from_23seq(self):
obj = self.num23seq
- shape = (len(obj),len(obj[0]))
- a = self.array(shape,intent.optional,obj)
+ shape = (len(obj), len(obj[0]))
+ a = self.array(shape, intent.optional, obj)
assert_(a.arr.shape==shape)
assert_(not a.has_shared_memory())
- a = self.array(shape,intent.optional.c,obj)
+ a = self.array(shape, intent.optional.c, obj)
assert_(a.arr.shape==shape)
assert_(not a.has_shared_memory())
def test_inplace(self):
- obj = array(self.num23seq,dtype=self.type.dtype)
+ obj = array(self.num23seq, dtype=self.type.dtype)
assert_(not obj.flags['FORTRAN'] and obj.flags['CONTIGUOUS'])
shape = obj.shape
- a = self.array(shape,intent.inplace,obj)
- assert_(obj[1][2]==a.arr[1][2],repr((obj,a.arr)))
+ a = self.array(shape, intent.inplace, obj)
+ assert_(obj[1][2]==a.arr[1][2], repr((obj, a.arr)))
a.arr[1][2]=54
- assert_(obj[1][2]==a.arr[1][2]==array(54,dtype=self.type.dtype),repr((obj,a.arr)))
+ assert_(obj[1][2]==a.arr[1][2]==array(54, dtype=self.type.dtype), repr((obj, a.arr)))
assert_(a.arr is obj)
assert_(obj.flags['FORTRAN']) # obj attributes are changed inplace!
assert_(not obj.flags['CONTIGUOUS'])
@@ -516,15 +516,15 @@ class _test_shared_memory:
for t in self.type.cast_types():
if t is self.type:
continue
- obj = array(self.num23seq,dtype=t.dtype)
+ obj = array(self.num23seq, dtype=t.dtype)
assert_(obj.dtype.type==t.dtype)
assert_(obj.dtype.type is not self.type.dtype)
assert_(not obj.flags['FORTRAN'] and obj.flags['CONTIGUOUS'])
shape = obj.shape
- a = self.array(shape,intent.inplace,obj)
- assert_(obj[1][2]==a.arr[1][2],repr((obj,a.arr)))
+ a = self.array(shape, intent.inplace, obj)
+ assert_(obj[1][2]==a.arr[1][2], repr((obj, a.arr)))
a.arr[1][2]=54
- assert_(obj[1][2]==a.arr[1][2]==array(54,dtype=self.type.dtype),repr((obj,a.arr)))
+ assert_(obj[1][2]==a.arr[1][2]==array(54, dtype=self.type.dtype), repr((obj, a.arr)))
assert_(a.arr is obj)
assert_(obj.flags['FORTRAN']) # obj attributes are changed inplace!
assert_(not obj.flags['CONTIGUOUS'])
@@ -539,7 +539,7 @@ class test_%s_gen(unittest.TestCase,
def setUp(self):
self.type = Type(%r)
array = lambda self,dims,intent,obj: Array(Type(%r),dims,intent,obj)
-''' % (t,t,t))
+''' % (t, t, t))
if __name__ == "__main__":
setup()
diff --git a/numpy/f2py/tests/test_assumed_shape.py b/numpy/f2py/tests/test_assumed_shape.py
index 6c0ea9ebd..d6beaee63 100644
--- a/numpy/f2py/tests/test_assumed_shape.py
+++ b/numpy/f2py/tests/test_assumed_shape.py
@@ -20,17 +20,17 @@ class TestAssumedShapeSumExample(util.F2PyTest):
@dec.slow
def test_all(self):
- r = self.module.fsum([1,2])
- assert_(r==3,repr(r))
- r = self.module.sum([1,2])
- assert_(r==3,repr(r))
- r = self.module.sum_with_use([1,2])
- assert_(r==3,repr(r))
-
- r = self.module.mod.sum([1,2])
- assert_(r==3,repr(r))
- r = self.module.mod.fsum([1,2])
- assert_(r==3,repr(r))
+ r = self.module.fsum([1, 2])
+ assert_(r==3, repr(r))
+ r = self.module.sum([1, 2])
+ assert_(r==3, repr(r))
+ r = self.module.sum_with_use([1, 2])
+ assert_(r==3, repr(r))
+
+ r = self.module.mod.sum([1, 2])
+ assert_(r==3, repr(r))
+ r = self.module.mod.fsum([1, 2])
+ assert_(r==3, repr(r))
if __name__ == "__main__":
import nose
diff --git a/numpy/f2py/tests/test_callback.py b/numpy/f2py/tests/test_callback.py
index 7a7e8bc11..98a90a28c 100644
--- a/numpy/f2py/tests/test_callback.py
+++ b/numpy/f2py/tests/test_callback.py
@@ -74,24 +74,24 @@ cf2py intent(out) a
def check_function(self, name):
t = getattr(self.module, name)
r = t(lambda : 4)
- assert_( r==4,repr(r))
- r = t(lambda a:5,fun_extra_args=(6,))
- assert_( r==5,repr(r))
- r = t(lambda a:a,fun_extra_args=(6,))
- assert_( r==6,repr(r))
- r = t(lambda a:5+a,fun_extra_args=(7,))
- assert_( r==12,repr(r))
- r = t(lambda a:math.degrees(a),fun_extra_args=(math.pi,))
- assert_( r==180,repr(r))
- r = t(math.degrees,fun_extra_args=(math.pi,))
- assert_( r==180,repr(r))
+ assert_( r==4, repr(r))
+ r = t(lambda a:5, fun_extra_args=(6,))
+ assert_( r==5, repr(r))
+ r = t(lambda a:a, fun_extra_args=(6,))
+ assert_( r==6, repr(r))
+ r = t(lambda a:5+a, fun_extra_args=(7,))
+ assert_( r==12, repr(r))
+ r = t(lambda a:math.degrees(a), fun_extra_args=(math.pi,))
+ assert_( r==180, repr(r))
+ r = t(math.degrees, fun_extra_args=(math.pi,))
+ assert_( r==180, repr(r))
r = t(self.module.func, fun_extra_args=(6,))
- assert_( r==17,repr(r))
+ assert_( r==17, repr(r))
r = t(self.module.func0)
- assert_( r==11,repr(r))
+ assert_( r==11, repr(r))
r = t(self.module.func0._cpointer)
- assert_( r==11,repr(r))
+ assert_( r==11, repr(r))
class A(object):
def __call__(self):
return 7
@@ -99,9 +99,9 @@ cf2py intent(out) a
return 9
a = A()
r = t(a)
- assert_( r==7,repr(r))
+ assert_( r==7, repr(r))
r = t(a.mth)
- assert_( r==9,repr(r))
+ assert_( r==9, repr(r))
if __name__ == "__main__":
import nose
diff --git a/numpy/f2py/tests/test_kind.py b/numpy/f2py/tests/test_kind.py
index 493c06942..f96fbffdb 100644
--- a/numpy/f2py/tests/test_kind.py
+++ b/numpy/f2py/tests/test_kind.py
@@ -24,11 +24,11 @@ class TestKind(util.F2PyTest):
selectedintkind = self.module.selectedintkind
for i in range(40):
- assert_(selectedintkind(i) in [selected_int_kind(i),-1],\
+ assert_(selectedintkind(i) in [selected_int_kind(i), -1],\
'selectedintkind(%s): expected %r but got %r' % (i, selected_int_kind(i), selectedintkind(i)))
for i in range(20):
- assert_(selectedrealkind(i) in [selected_real_kind(i),-1],\
+ assert_(selectedrealkind(i) in [selected_real_kind(i), -1],\
'selectedrealkind(%s): expected %r but got %r' % (i, selected_real_kind(i), selectedrealkind(i)))
if __name__ == "__main__":
diff --git a/numpy/f2py/tests/test_return_character.py b/numpy/f2py/tests/test_return_character.py
index 213730008..0865d54b3 100644
--- a/numpy/f2py/tests/test_return_character.py
+++ b/numpy/f2py/tests/test_return_character.py
@@ -8,19 +8,19 @@ import util
class TestReturnCharacter(util.F2PyTest):
def check_function(self, t):
tname = t.__doc__.split()[0]
- if tname in ['t0','t1','s0','s1']:
+ if tname in ['t0', 't1', 's0', 's1']:
assert_( t(23)==asbytes('2'))
- r = t('ab');assert_( r==asbytes('a'),repr(r))
- r = t(array('ab'));assert_( r==asbytes('a'),repr(r))
- r = t(array(77,'u1'));assert_( r==asbytes('M'),repr(r))
+ r = t('ab');assert_( r==asbytes('a'), repr(r))
+ r = t(array('ab'));assert_( r==asbytes('a'), repr(r))
+ r = t(array(77, 'u1'));assert_( r==asbytes('M'), repr(r))
#assert_(_raises(ValueError, t, array([77,87])))
#assert_(_raises(ValueError, t, array(77)))
- elif tname in ['ts','ss']:
- assert_( t(23)==asbytes('23 '),repr(t(23)))
+ elif tname in ['ts', 'ss']:
+ assert_( t(23)==asbytes('23 '), repr(t(23)))
assert_( t('123456789abcdef')==asbytes('123456789a'))
- elif tname in ['t5','s5']:
- assert_( t(23)==asbytes('23 '),repr(t(23)))
- assert_( t('ab')==asbytes('ab '),repr(t('ab')))
+ elif tname in ['t5', 's5']:
+ assert_( t(23)==asbytes('23 '), repr(t(23)))
+ assert_( t('ab')==asbytes('ab '), repr(t('ab')))
assert_( t('123456789abcdef')==asbytes('12345'))
else:
raise NotImplementedError
diff --git a/numpy/f2py/tests/test_return_complex.py b/numpy/f2py/tests/test_return_complex.py
index f03416648..d144cecf1 100644
--- a/numpy/f2py/tests/test_return_complex.py
+++ b/numpy/f2py/tests/test_return_complex.py
@@ -8,7 +8,7 @@ import util
class TestReturnComplex(util.F2PyTest):
def check_function(self, t):
tname = t.__doc__.split()[0]
- if tname in ['t0','t8','s0','s8']:
+ if tname in ['t0', 't8', 's0', 's8']:
err = 1e-5
else:
err = 0.0
@@ -22,18 +22,18 @@ class TestReturnComplex(util.F2PyTest):
assert_( abs(t([234])-234.)<=err)
assert_( abs(t((234,))-234.)<=err)
assert_( abs(t(array(234))-234.)<=err)
- assert_( abs(t(array(23+4j,'F'))-(23+4j))<=err)
+ assert_( abs(t(array(23+4j, 'F'))-(23+4j))<=err)
assert_( abs(t(array([234]))-234.)<=err)
assert_( abs(t(array([[234]]))-234.)<=err)
- assert_( abs(t(array([234],'b'))+22.)<=err)
- assert_( abs(t(array([234],'h'))-234.)<=err)
- assert_( abs(t(array([234],'i'))-234.)<=err)
- assert_( abs(t(array([234],'l'))-234.)<=err)
- assert_( abs(t(array([234],'q'))-234.)<=err)
- assert_( abs(t(array([234],'f'))-234.)<=err)
- assert_( abs(t(array([234],'d'))-234.)<=err)
- assert_( abs(t(array([234+3j],'F'))-(234+3j))<=err)
- assert_( abs(t(array([234],'D'))-234.)<=err)
+ assert_( abs(t(array([234], 'b'))+22.)<=err)
+ assert_( abs(t(array([234], 'h'))-234.)<=err)
+ assert_( abs(t(array([234], 'i'))-234.)<=err)
+ assert_( abs(t(array([234], 'l'))-234.)<=err)
+ assert_( abs(t(array([234], 'q'))-234.)<=err)
+ assert_( abs(t(array([234], 'f'))-234.)<=err)
+ assert_( abs(t(array([234], 'd'))-234.)<=err)
+ assert_( abs(t(array([234+3j], 'F'))-(234+3j))<=err)
+ assert_( abs(t(array([234], 'D'))-234.)<=err)
#assert_raises(TypeError, t, array([234], 'a1'))
assert_raises(TypeError, t, 'abc')
@@ -46,7 +46,7 @@ class TestReturnComplex(util.F2PyTest):
try:
r = t(10**400)
- assert_( repr(r) in ['(inf+0j)','(Infinity+0j)'],repr(r))
+ assert_( repr(r) in ['(inf+0j)', '(Infinity+0j)'], repr(r))
except OverflowError:
pass
diff --git a/numpy/f2py/tests/test_return_integer.py b/numpy/f2py/tests/test_return_integer.py
index d19653f4d..056466208 100644
--- a/numpy/f2py/tests/test_return_integer.py
+++ b/numpy/f2py/tests/test_return_integer.py
@@ -7,7 +7,7 @@ import util
class TestReturnInteger(util.F2PyTest):
def check_function(self, t):
- assert_( t(123)==123,repr(t(123)))
+ assert_( t(123)==123, repr(t(123)))
assert_( t(123.6)==123)
assert_( t(long(123))==123)
assert_( t('123')==123)
@@ -17,13 +17,13 @@ class TestReturnInteger(util.F2PyTest):
assert_( t(array(123))==123)
assert_( t(array([123]))==123)
assert_( t(array([[123]]))==123)
- assert_( t(array([123],'b'))==123)
- assert_( t(array([123],'h'))==123)
- assert_( t(array([123],'i'))==123)
- assert_( t(array([123],'l'))==123)
- assert_( t(array([123],'B'))==123)
- assert_( t(array([123],'f'))==123)
- assert_( t(array([123],'d'))==123)
+ assert_( t(array([123], 'b'))==123)
+ assert_( t(array([123], 'h'))==123)
+ assert_( t(array([123], 'i'))==123)
+ assert_( t(array([123], 'l'))==123)
+ assert_( t(array([123], 'B'))==123)
+ assert_( t(array([123], 'f'))==123)
+ assert_( t(array([123], 'd'))==123)
#assert_raises(ValueError, t, array([123],'S3'))
assert_raises(ValueError, t, 'abc')
@@ -34,7 +34,7 @@ class TestReturnInteger(util.F2PyTest):
assert_raises(Exception, t, t)
assert_raises(Exception, t, {})
- if t.__doc__.split()[0] in ['t8','s8']:
+ if t.__doc__.split()[0] in ['t8', 's8']:
assert_raises(OverflowError, t, 100000000000000000000000)
assert_raises(OverflowError, t, 10000000011111111111111.23)
diff --git a/numpy/f2py/tests/test_return_logical.py b/numpy/f2py/tests/test_return_logical.py
index 3823e5642..82f86b67f 100644
--- a/numpy/f2py/tests/test_return_logical.py
+++ b/numpy/f2py/tests/test_return_logical.py
@@ -7,8 +7,8 @@ import util
class TestReturnLogical(util.F2PyTest):
def check_function(self, t):
- assert_( t(True)==1,repr(t(True)))
- assert_( t(False)==0,repr(t(False)))
+ assert_( t(True)==1, repr(t(True)))
+ assert_( t(False)==0, repr(t(False)))
assert_( t(0)==0)
assert_( t(None)==0)
assert_( t(0.0)==0)
@@ -32,20 +32,20 @@ class TestReturnLogical(util.F2PyTest):
assert_( t(array(234))==1)
assert_( t(array([234]))==1)
assert_( t(array([[234]]))==1)
- assert_( t(array([234],'b'))==1)
- assert_( t(array([234],'h'))==1)
- assert_( t(array([234],'i'))==1)
- assert_( t(array([234],'l'))==1)
- assert_( t(array([234],'f'))==1)
- assert_( t(array([234],'d'))==1)
- assert_( t(array([234+3j],'F'))==1)
- assert_( t(array([234],'D'))==1)
+ assert_( t(array([234], 'b'))==1)
+ assert_( t(array([234], 'h'))==1)
+ assert_( t(array([234], 'i'))==1)
+ assert_( t(array([234], 'l'))==1)
+ assert_( t(array([234], 'f'))==1)
+ assert_( t(array([234], 'd'))==1)
+ assert_( t(array([234+3j], 'F'))==1)
+ assert_( t(array([234], 'D'))==1)
assert_( t(array(0))==0)
assert_( t(array([0]))==0)
assert_( t(array([[0]]))==0)
assert_( t(array([0j]))==0)
assert_( t(array([1]))==1)
- assert_raises(ValueError, t, array([0,0]))
+ assert_raises(ValueError, t, array([0, 0]))
class TestF77ReturnLogical(TestReturnLogical):
diff --git a/numpy/f2py/tests/test_return_real.py b/numpy/f2py/tests/test_return_real.py
index 3286e11f2..f9a09f620 100644
--- a/numpy/f2py/tests/test_return_real.py
+++ b/numpy/f2py/tests/test_return_real.py
@@ -8,7 +8,7 @@ import util
class TestReturnReal(util.F2PyTest):
def check_function(self, t):
- if t.__doc__.split()[0] in ['t0','t4','s0','s4']:
+ if t.__doc__.split()[0] in ['t0', 't4', 's0', 's4']:
err = 1e-5
else:
err = 0.0
@@ -23,14 +23,14 @@ class TestReturnReal(util.F2PyTest):
assert_( abs(t(array(234))-234.)<=err)
assert_( abs(t(array([234]))-234.)<=err)
assert_( abs(t(array([[234]]))-234.)<=err)
- assert_( abs(t(array([234],'b'))+22)<=err)
- assert_( abs(t(array([234],'h'))-234.)<=err)
- assert_( abs(t(array([234],'i'))-234.)<=err)
- assert_( abs(t(array([234],'l'))-234.)<=err)
- assert_( abs(t(array([234],'B'))-234.)<=err)
- assert_( abs(t(array([234],'f'))-234.)<=err)
- assert_( abs(t(array([234],'d'))-234.)<=err)
- if t.__doc__.split()[0] in ['t0','t4','s0','s4']:
+ assert_( abs(t(array([234], 'b'))+22)<=err)
+ assert_( abs(t(array([234], 'h'))-234.)<=err)
+ assert_( abs(t(array([234], 'i'))-234.)<=err)
+ assert_( abs(t(array([234], 'l'))-234.)<=err)
+ assert_( abs(t(array([234], 'B'))-234.)<=err)
+ assert_( abs(t(array([234], 'f'))-234.)<=err)
+ assert_( abs(t(array([234], 'd'))-234.)<=err)
+ if t.__doc__.split()[0] in ['t0', 't4', 's0', 's4']:
assert_( t(1e200)==t(1e300)) # inf
#assert_raises(ValueError, t, array([234], 'S1'))
@@ -44,7 +44,7 @@ class TestReturnReal(util.F2PyTest):
try:
r = t(10**400)
- assert_( repr(r) in ['inf','Infinity'],repr(r))
+ assert_( repr(r) in ['inf', 'Infinity'], repr(r))
except OverflowError:
pass
diff --git a/numpy/f2py/tests/test_size.py b/numpy/f2py/tests/test_size.py
index 6cc508a19..e4f21b519 100644
--- a/numpy/f2py/tests/test_size.py
+++ b/numpy/f2py/tests/test_size.py
@@ -17,30 +17,30 @@ class TestSizeSumExample(util.F2PyTest):
@dec.slow
def test_all(self):
- r = self.module.foo([[1,2]])
- assert_equal(r, [3],repr(r))
+ r = self.module.foo([[1, 2]])
+ assert_equal(r, [3], repr(r))
- r = self.module.foo([[1,2],[3,4]])
- assert_equal(r, [3,7],repr(r))
+ r = self.module.foo([[1, 2], [3, 4]])
+ assert_equal(r, [3, 7], repr(r))
- r = self.module.foo([[1,2],[3,4],[5,6]])
- assert_equal(r, [3,7,11],repr(r))
+ r = self.module.foo([[1, 2], [3, 4], [5, 6]])
+ assert_equal(r, [3, 7, 11], repr(r))
@dec.slow
def test_transpose(self):
- r = self.module.trans([[1,2]])
- assert_equal(r, [[1],[2]],repr(r))
+ r = self.module.trans([[1, 2]])
+ assert_equal(r, [[1], [2]], repr(r))
- r = self.module.trans([[1,2,3],[4,5,6]])
- assert_equal(r, [[1,4],[2,5],[3,6]],repr(r))
+ r = self.module.trans([[1, 2, 3], [4, 5, 6]])
+ assert_equal(r, [[1, 4], [2, 5], [3, 6]], repr(r))
@dec.slow
def test_flatten(self):
- r = self.module.flatten([[1,2]])
- assert_equal(r, [1,2],repr(r))
+ r = self.module.flatten([[1, 2]])
+ assert_equal(r, [1, 2], repr(r))
- r = self.module.flatten([[1,2,3],[4,5,6]])
- assert_equal(r, [1,2,3,4,5,6],repr(r))
+ r = self.module.flatten([[1, 2, 3], [4, 5, 6]])
+ assert_equal(r, [1, 2, 3, 4, 5, 6], repr(r))
if __name__ == "__main__":
import nose
diff --git a/numpy/f2py/use_rules.py b/numpy/f2py/use_rules.py
index 9a8054617..6fd72bd77 100644
--- a/numpy/f2py/use_rules.py
+++ b/numpy/f2py/use_rules.py
@@ -53,7 +53,7 @@ capi_fail:
################
-def buildusevars(m,r):
+def buildusevars(m, r):
ret={}
outmess('\t\tBuilding use variable hooks for module "%s" (feature only for F90/F95)...\n'%(m['name']))
varsmap={}
@@ -61,7 +61,7 @@ def buildusevars(m,r):
if 'map' in r:
for k in r['map'].keys():
if r['map'][k] in revmap:
- outmess('\t\t\tVariable "%s<=%s" is already mapped by "%s". Skipping.\n'%(r['map'][k],k,revmap[r['map'][k]]))
+ outmess('\t\t\tVariable "%s<=%s" is already mapped by "%s". Skipping.\n'%(r['map'][k], k, revmap[r['map'][k]]))
else:
revmap[r['map'][k]]=k
if 'only' in r and r['only']:
@@ -71,9 +71,9 @@ def buildusevars(m,r):
if revmap[r['map'][v]]==v:
varsmap[v]=r['map'][v]
else:
- outmess('\t\t\tIgnoring map "%s=>%s". See above.\n'%(v,r['map'][v]))
+ outmess('\t\t\tIgnoring map "%s=>%s". See above.\n'%(v, r['map'][v]))
else:
- outmess('\t\t\tNo definition for variable "%s=>%s". Skipping.\n'%(v,r['map'][v]))
+ outmess('\t\t\tNo definition for variable "%s=>%s". Skipping.\n'%(v, r['map'][v]))
else:
for v in m['vars'].keys():
if v in revmap:
@@ -81,29 +81,29 @@ def buildusevars(m,r):
else:
varsmap[v]=v
for v in varsmap.keys():
- ret=dictappend(ret,buildusevar(v,varsmap[v],m['vars'],m['name']))
+ ret=dictappend(ret, buildusevar(v, varsmap[v], m['vars'], m['name']))
return ret
-def buildusevar(name,realname,vars,usemodulename):
- outmess('\t\t\tConstructing wrapper function for variable "%s=>%s"...\n'%(name,realname))
+def buildusevar(name, realname, vars, usemodulename):
+ outmess('\t\t\tConstructing wrapper function for variable "%s=>%s"...\n'%(name, realname))
ret={}
vrd={'name':name,
'realname':realname,
'REALNAME':realname.upper(),
'usemodulename':usemodulename,
'USEMODULENAME':usemodulename.upper(),
- 'texname':name.replace('_','\\_'),
- 'begintitle':gentitle('%s=>%s'%(name,realname)),
- 'endtitle':gentitle('end of %s=>%s'%(name,realname)),
- 'apiname':'#modulename#_use_%s_from_%s'%(realname,usemodulename)
+ 'texname':name.replace('_', '\\_'),
+ 'begintitle':gentitle('%s=>%s'%(name, realname)),
+ 'endtitle':gentitle('end of %s=>%s'%(name, realname)),
+ 'apiname':'#modulename#_use_%s_from_%s'%(realname, usemodulename)
}
nummap={0:'Ro',1:'Ri',2:'Rii',3:'Riii',4:'Riv',5:'Rv',6:'Rvi',7:'Rvii',8:'Rviii',9:'Rix'}
vrd['texnamename']=name
for i in nummap.keys():
- vrd['texnamename']=vrd['texnamename'].replace(repr(i),nummap[i])
+ vrd['texnamename']=vrd['texnamename'].replace(repr(i), nummap[i])
if hasnote(vars[realname]): vrd['note']=vars[realname]['note']
- rd=dictappend({},vrd)
+ rd=dictappend({}, vrd)
var=vars[realname]
- print(name,realname,vars[realname])
- ret=applyrules(usemodule_rules,rd)
+ print(name, realname, vars[realname])
+ ret=applyrules(usemodule_rules, rd)
return ret