diff options
Diffstat (limited to 'numpy/f2py')
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 |