diff options
author | Charles Harris <charlesr.harris@gmail.com> | 2013-04-26 21:31:12 -0600 |
---|---|---|
committer | Charles Harris <charlesr.harris@gmail.com> | 2013-05-02 21:13:17 -0600 |
commit | dec4f4b76ae9b2b953bcc093275aa59f93adf6fd (patch) | |
tree | 13a9a50d087f6c55a6afb942437afc99110cd6f5 /numpy/f2py | |
parent | 63a9f197d040b5479b772fd3925274fc984ffd24 (diff) | |
download | numpy-dec4f4b76ae9b2b953bcc093275aa59f93adf6fd.tar.gz |
MAINT: Apply 2to3 idioms fixer.
The idioms fixer makes the following replacements.
1) int <- bool
2) comparison or identity of types <- isinstance
3) a.sort() <- sorted(a)
There were two problems that needed to be dealt with after the
application of the fixer. First, the replacement of comparison or
identity of types by isinstance was not always correct. The isinstance
function returns true for subtypes whereas many of the places where the
fixer made a substitution needed to check for exact type equality.
Second, the sorted function was applied to arrays, but because it treats
them as iterators and constructs a sorted list from the result, that is
the wrong thing to do.
Closes #3062.
Diffstat (limited to 'numpy/f2py')
-rw-r--r-- | numpy/f2py/auxfuncs.py | 42 | ||||
-rw-r--r-- | numpy/f2py/cb_rules.py | 10 | ||||
-rw-r--r-- | numpy/f2py/cfuncs.py | 8 | ||||
-rw-r--r-- | numpy/f2py/common_rules.py | 2 | ||||
-rwxr-xr-x | numpy/f2py/crackfortran.py | 29 | ||||
-rwxr-xr-x | numpy/f2py/f2py2e.py | 2 | ||||
-rw-r--r-- | numpy/f2py/f90mod_rules.py | 4 | ||||
-rw-r--r-- | numpy/f2py/rules.py | 10 |
8 files changed, 54 insertions, 53 deletions
diff --git a/numpy/f2py/auxfuncs.py b/numpy/f2py/auxfuncs.py index e391430f5..e835090f7 100644 --- a/numpy/f2py/auxfuncs.py +++ b/numpy/f2py/auxfuncs.py @@ -491,9 +491,9 @@ def getmultilineblock(rout,blockname,comment=1,counter=0): except KeyError: return if not r: return - if counter>0 and type(r) is type(''): + if counter > 0 and isinstance(r, str): return - if type(r) is type([]): + if isinstance(r, list): if counter>=len(r): return r = r[counter] if r[:3]=="'''": @@ -598,7 +598,7 @@ def gentitle(name): return '/*%s %s %s*/'%(l*'*',name,l*'*') def flatlist(l): - if type(l)==list: + if isinstance(l, list): return reduce(lambda x,y,f=flatlist:x+f(y),l,[]) return [l] @@ -607,9 +607,9 @@ def stripcomma(s): return s def replace(str,d,defaultsep=''): - if type(d)==list: + if isinstance(d, list): return [replace(str, _m, defaultsep) for _m in d] - if type(str)==list: + if isinstance(str, list): return [replace(_m, d, defaultsep) for _m in str] for k in 2*list(d.keys()): if k=='separatorsfor': @@ -618,14 +618,14 @@ def replace(str,d,defaultsep=''): sep=d['separatorsfor'][k] else: sep=defaultsep - if type(d[k])==list: + if isinstance(d[k], list): str=str.replace('#%s#'%(k),sep.join(flatlist(d[k]))) else: str=str.replace('#%s#'%(k),d[k]) return str def dictappend(rd,ar): - if type(ar)==list: + if isinstance(ar, list): for a in ar: rd=dictappend(rd,a) return rd @@ -633,15 +633,15 @@ def dictappend(rd,ar): if k[0]=='_': continue if k in rd: - if type(rd[k])==str: + if isinstance(rd[k], str): rd[k]=[rd[k]] - if type(rd[k])==list: - if type(ar[k])==list: + if isinstance(rd[k], list): + if isinstance(ar[k], list): rd[k]=rd[k]+ar[k] else: rd[k].append(ar[k]) - elif type(rd[k])==dict: - if type(ar[k])==dict: + elif isinstance(rd[k], dict): + if isinstance(ar[k], dict): if k=='separatorsfor': for k1 in ar[k].keys(): if k1 not in rd[k]: @@ -654,7 +654,7 @@ def dictappend(rd,ar): def applyrules(rules,d,var={}): ret={} - if type(rules)==list: + if isinstance(rules, list): for r in rules: rr=applyrules(r,d,var) ret=dictappend(ret,rr) @@ -671,9 +671,9 @@ def applyrules(rules,d,var={}): for k in rules.keys(): if k=='separatorsfor': ret[k]=rules[k]; continue - if type(rules[k])==str: + if isinstance(rules[k], str): ret[k]=replace(rules[k],d) - elif type(rules[k])==list: + elif isinstance(rules[k], list): ret[k]=[] for i in rules[k]: ar=applyrules({k:i},d,var) @@ -681,13 +681,13 @@ def applyrules(rules,d,var={}): ret[k].append(ar[k]) elif k[0]=='_': continue - elif type(rules[k])==dict: + elif isinstance(rules[k], dict): ret[k]=[] for k1 in rules[k].keys(): - if type(k1)==types.FunctionType and k1(var): - if type(rules[k][k1])==list: + if isinstance(k1, types.FunctionType) and k1(var): + if isinstance(rules[k][k1], list): for i in rules[k][k1]: - if type(i)==dict: + if isinstance(i, dict): res=applyrules({'supertext':i},d,var) if 'supertext' in res: i=res['supertext'] @@ -695,7 +695,7 @@ def applyrules(rules,d,var={}): ret[k].append(replace(i,d)) else: i=rules[k][k1] - if type(i)==dict: + if isinstance(i, dict): res=applyrules({'supertext':i},d) if 'supertext' in res: i=res['supertext'] @@ -703,7 +703,7 @@ def applyrules(rules,d,var={}): ret[k].append(replace(i,d)) else: errmess('applyrules: ignoring rule %s.\n'%repr(rules[k])) - if type(ret[k])==list: + if isinstance(ret[k], list): if len(ret[k])==1: ret[k]=ret[k][0] if ret[k]==[]: diff --git a/numpy/f2py/cb_rules.py b/numpy/f2py/cb_rules.py index 85e679060..f80ab06f0 100644 --- a/numpy/f2py/cb_rules.py +++ b/numpy/f2py/cb_rules.py @@ -466,7 +466,7 @@ def buildcallback(rout,um): if '_break' in r: break if 'args' in rd and 'optargs' in rd: - if type(rd['optargs'])==type([]): + if isinstance(rd['optargs'], list): rd['optargs']=rd['optargs']+[""" #ifndef F2PY_CB_RETURNCOMPLEX , @@ -482,7 +482,7 @@ def buildcallback(rout,um): , #endif """] - if type(rd['docreturn'])==list: + if isinstance(rd['docreturn'], list): rd['docreturn']=stripcomma(replace('#docreturn#',{'docreturn':rd['docreturn']})) optargs=stripcomma(replace('#docsignopt#', {'docsignopt':rd['docsignopt']} @@ -499,10 +499,10 @@ def buildcallback(rout,um): rd['docstrsigns']=[] rd['latexdocstrsigns']=[] for k in ['docstrreq','docstropt','docstrout','docstrcbs']: - if k in rd and type(rd[k])==list: + if k in rd and isinstance(rd[k], list): rd['docstrsigns']=rd['docstrsigns']+rd[k] k='latex'+k - if k in rd and type(rd[k])==list: + if k in rd and isinstance(rd[k], list): rd['latexdocstrsigns']=rd['latexdocstrsigns']+rd[k][0:1]+\ ['\\begin{description}']+rd[k][1:]+\ ['\\end{description}'] @@ -515,7 +515,7 @@ def buildcallback(rout,um): ar=applyrules(cb_routine_rules,rd) cfuncs.callbacks[rd['name']]=ar['body'] - if type(ar['need'])==str: + if isinstance(ar['need'], str): ar['need']=[ar['need']] if 'need' in rd: diff --git a/numpy/f2py/cfuncs.py b/numpy/f2py/cfuncs.py index a16a07d59..2229c3e24 100644 --- a/numpy/f2py/cfuncs.py +++ b/numpy/f2py/cfuncs.py @@ -1128,10 +1128,10 @@ def buildcfuncs(): def append_needs(need,flag=1): global outneeds,needs - if type(need)==list: + if isinstance(need, list): for n in need: append_needs(n,flag) - elif type(need)==str: + elif isinstance(need, str): if not need: return if need in includes0: n = 'includes0' @@ -1160,7 +1160,7 @@ def append_needs(need,flag=1): if need in needs: for nn in needs[need]: t=append_needs(nn,0) - if type(t)==dict: + if isinstance(t, dict): for nnn in t.keys(): if nnn in tmp: tmp[nnn]=tmp[nnn]+t[nnn] @@ -1176,7 +1176,7 @@ def append_needs(need,flag=1): if need in needs: for nn in needs[need]: t=append_needs(nn,flag) - if type(t)==dict: + if isinstance(t, dict): for nnn in t.keys(): if nnn in tmp: tmp[nnn]=t[nnn]+tmp[nnn] diff --git a/numpy/f2py/common_rules.py b/numpy/f2py/common_rules.py index bfeaf4c9b..dd44e3326 100644 --- a/numpy/f2py/common_rules.py +++ b/numpy/f2py/common_rules.py @@ -121,7 +121,7 @@ def buildhooks(m): dadd('\\item[]{{}\\verb@%s@{}}'%(capi_maps.getarrdocsign(n,vars[n]))) if hasnote(vars[n]): note = vars[n]['note'] - if type(note) is type([]): note='\n'.join(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)))) diff --git a/numpy/f2py/crackfortran.py b/numpy/f2py/crackfortran.py index c86a15407..2ee8eb9a1 100755 --- a/numpy/f2py/crackfortran.py +++ b/numpy/f2py/crackfortran.py @@ -297,7 +297,7 @@ def readfortrancode(ffile,dowithline=show,istop=1): spacedigits=[' '] + [str(_m) for _m in range(10)] filepositiontext='' fin=fileinput.FileInput(ffile) - while 1: + while True: l=fin.readline() if not l: break if fin.isfirstline(): @@ -381,7 +381,7 @@ def readfortrancode(ffile,dowithline=show,istop=1): elif sourcecodeform=='free': if not cont and ext=='.pyf' and mline_mark.match(l): l = l + '\n' - while 1: + while True: lc = fin.readline() if not lc: errmess('Unexpected end of file when reading multiline\n') @@ -1167,7 +1167,7 @@ def analyzeline(m,case,line): groupcache[groupcounter]['f2pyenhancements'] = {} d = groupcache[groupcounter]['f2pyenhancements'] if m.group('this')=='usercode' and 'usercode' in d: - if type(d['usercode']) is type(''): + if isinstance(d['usercode'], str): d['usercode'] = [d['usercode']] d['usercode'].append(m.group('after')) else: @@ -1522,7 +1522,7 @@ def postcrack2(block,tab='',param_map=None): global f90modulevars if not f90modulevars: return block - if type(block)==list: + if isinstance(block, list): ret = [] for g in block: g = postcrack2(g,tab=tab+'\t',param_map=param_map) @@ -1559,7 +1559,7 @@ def postcrack(block,args=None,tab=''): determine expression types if in argument list """ global usermodules,onlyfunctions - if type(block)==list: + if isinstance(block, list): gret=[] uret=[] for g in block: @@ -1571,7 +1571,7 @@ def postcrack(block,args=None,tab=''): gret.append(g) return uret+gret setmesstext(block) - if (not type(block)==dict) and 'block' not in block: + if not isinstance(block, dict) and 'block' not in block: raise Exception('postcrack: Expected block dictionary instead of ' + \ str(block)) if 'name' in block and not block['name']=='unknown_interface': @@ -1819,12 +1819,12 @@ def getarrlen(dl,args,star='*'): except: edl.append(dl[0]) try: edl.append(myeval(dl[1],{},{})) except: edl.append(dl[1]) - if type(edl[0]) is type(0): + 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 type(edl[1]) is type(0): + elif isinstance(edl[1], int): p1 = 1+edl[1] if p1==0: d='-(%s)' % (dl[0]) else: d='%s-(%s)' % (p1,dl[0]) @@ -2042,7 +2042,7 @@ def get_parameters(vars, global_params={}): params[n] = v #print params outmess('get_parameters: got "%s" on %s\n' % (msg,repr(v))) - if isstring(vars[n]) and type(params[n]) is type(0): + if isstring(vars[n]) and isinstance(params[n], int): params[n] = chr(params[n]) nl = n.lower() if nl!=n: @@ -2458,14 +2458,15 @@ determineexprtype_re_3 = re.compile(r'\A[+-]?[\d.]+[\d+-de.]*(_(P<name>[\w]+)|)\ 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 type(r) is type(0): + if isinstance(r, int): return {'typespec':'integer'} - if type(r) is type(0.0): + if isinstance(r, float): return {'typespec':'real'} - if type(r) is type(0j): + if isinstance(r, complex): return {'typespec':'complex'} - assert type(r) is type({}),repr(r) - return r + if isinstance(r, dict): + return r + raise AssertionError(repr(r)) def determineexprtype(expr,vars,rules={}): if expr in vars: diff --git a/numpy/f2py/f2py2e.py b/numpy/f2py/f2py2e.py index 98f58e333..64c13fff0 100755 --- a/numpy/f2py/f2py2e.py +++ b/numpy/f2py/f2py2e.py @@ -339,7 +339,7 @@ def dict_append(d_out,d_in): for (k,v) in d_in.items(): if k not in d_out: d_out[k] = [] - if type(v) is list: + if isinstance(v, list): d_out[k] = d_out[k] + v else: d_out[k].append(v) diff --git a/numpy/f2py/f90mod_rules.py b/numpy/f2py/f90mod_rules.py index b68a79b64..7e25a4930 100644 --- a/numpy/f2py/f90mod_rules.py +++ b/numpy/f2py/f90mod_rules.py @@ -119,7 +119,7 @@ def buildhooks(pymod): dadd('\\subsection{Fortran 90/95 module \\texttt{%s}}\n'%(m['name'])) if hasnote(m): note = m['note'] - if type(note) is type([]): note='\n'.join(note) + if isinstance(note, list): note='\n'.join(note) dadd(note) if onlyvars: dadd('\\begin{description}') @@ -145,7 +145,7 @@ def buildhooks(pymod): dadd('\\item[]{{}\\verb@%s@{}}'%(capi_maps.getarrdocsign(n,var))) if hasnote(var): note = var['note'] - if type(note) is type([]): note='\n'.join(note) + if isinstance(note, list): note='\n'.join(note) dadd('--- %s'%(note)) if isallocatable(var): fargs.append('f2py_%s_getdims_%s'%(m['name'],n)) diff --git a/numpy/f2py/rules.py b/numpy/f2py/rules.py index a76401ac9..f7f82fc99 100644 --- a/numpy/f2py/rules.py +++ b/numpy/f2py/rules.py @@ -1388,9 +1388,9 @@ def buildapi(rout): vrd['check']=c ar=applyrules(check_rules,vrd,var[a]) rd=dictappend(rd,ar) - if type(rd['cleanupfrompyobj']) is list: + if isinstance(rd['cleanupfrompyobj'], list): rd['cleanupfrompyobj'].reverse() - if type(rd['closepyobjfrom']) is list: + if isinstance(rd['closepyobjfrom'], list): rd['closepyobjfrom'].reverse() rd['docsignature']=stripcomma(replace('#docsign##docsignopt##docsignxa#', {'docsign':rd['docsign'], @@ -1415,15 +1415,15 @@ def buildapi(rout): else: rd['callcompaqfortran']=cfs rd['callfortran']=cfs - if type(rd['docreturn'])==list: + if isinstance(rd['docreturn'], list): rd['docreturn']=stripcomma(replace('#docreturn#',{'docreturn':rd['docreturn']}))+' = ' rd['docstrsigns']=[] rd['latexdocstrsigns']=[] for k in ['docstrreq','docstropt','docstrout','docstrcbs']: - if k in rd and type(rd[k])==list: + if k in rd and isinstance(rd[k], list): rd['docstrsigns']=rd['docstrsigns']+rd[k] k='latex'+k - if k in rd and type(rd[k])==list: + if k in rd and isinstance(rd[k], list): rd['latexdocstrsigns']=rd['latexdocstrsigns']+rd[k][0:1]+\ ['\\begin{description}']+rd[k][1:]+\ ['\\end{description}'] |