summaryrefslogtreecommitdiff
path: root/numpy/f2py/capi_maps.py
diff options
context:
space:
mode:
authorJarrod Millman <millman@berkeley.edu>2007-11-28 05:12:37 +0000
committerJarrod Millman <millman@berkeley.edu>2007-11-28 05:12:37 +0000
commit6c00b1141fdfa7d168a9b82e6ab493c77f7c1621 (patch)
tree0e9b0714a7d0a5e83ca3d321b4d9aca588347f4a /numpy/f2py/capi_maps.py
parent3fe715c0d0deb78ace46c3dbaf3165e8c4283e3c (diff)
downloadnumpy-6c00b1141fdfa7d168a9b82e6ab493c77f7c1621.tar.gz
use 'in' keyword to test dictionary membership
Diffstat (limited to 'numpy/f2py/capi_maps.py')
-rw-r--r--numpy/f2py/capi_maps.py121
1 files changed, 73 insertions, 48 deletions
diff --git a/numpy/f2py/capi_maps.py b/numpy/f2py/capi_maps.py
index 592b83505..3dba288c6 100644
--- a/numpy/f2py/capi_maps.py
+++ b/numpy/f2py/capi_maps.py
@@ -175,10 +175,11 @@ if os.path.isfile('.f2py_f2cmap'):
d1[k1.lower()] = d1[k1]
d[k.lower()] = d[k]
for k in d.keys():
- if not f2cmap_all.has_key(k): f2cmap_all[k]={}
+ if k not in f2cmap_all:
+ f2cmap_all[k]={}
for k1 in d[k].keys():
- if c2py_map.has_key(d[k][k1]):
- if f2cmap_all[k].has_key(k1):
+ 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]))
f2cmap_all[k][k1] = d[k][k1]
outmess('\tMapping "%s(kind=%s)" to "%s"\n' % (k,k1,d[k][k1]))
@@ -213,29 +214,33 @@ def getctype(var):
"""
ctype='void'
if isfunction(var):
- if var.has_key('result'): a=var['result']
- else: a=var['name']
- if var['vars'].has_key(a): return getctype(var['vars'][a])
- else: errmess('getctype: function %s has no return value?!\n'%a)
+ if 'result' in var:
+ a=var['result']
+ else:
+ a=var['name']
+ if a in var['vars']:
+ return getctype(var['vars'][a])
+ else:
+ errmess('getctype: function %s has no return value?!\n'%a)
elif issubroutine(var):
return ctype
- elif var.has_key('typespec') and f2cmap_all.has_key(var['typespec'].lower()):
+ elif 'typespec' in var and var['typespec'].lower() in f2cmap_all:
typespec = var['typespec'].lower()
f2cmap=f2cmap_all[typespec]
ctype=f2cmap[''] # default type
- if var.has_key('kindselector'):
- if var['kindselector'].has_key('*'):
+ if 'kindselector' in var:
+ if '*' in var['kindselector']:
try:
ctype=f2cmap[var['kindselector']['*']]
except KeyError:
errmess('getctype: "%s %s %s" not supported.\n'%(var['typespec'],'*',var['kindselector']['*']))
- elif var['kindselector'].has_key('kind'):
- if f2cmap_all.has_key(typespec+'kind'):
+ elif 'kind' in var['kindselector']:
+ if typespec+'kind' in f2cmap_all:
f2cmap=f2cmap_all[typespec+'kind']
try:
ctype=f2cmap[var['kindselector']['kind']]
except KeyError:
- if f2cmap_all.has_key(typespec):
+ if typespec in f2cmap_all:
f2cmap=f2cmap_all[typespec]
try:
ctype=f2cmap[str(var['kindselector']['kind'])]
@@ -247,25 +252,33 @@ def getctype(var):
if not isexternal(var):
errmess('getctype: No C-type found in "%s", assuming void.\n'%var)
return ctype
+
def getstrlength(var):
if isstringfunction(var):
- if var.has_key('result'): a=var['result']
- else: a=var['name']
- if var['vars'].has_key(a): return getstrlength(var['vars'][a])
- else: errmess('getstrlength: function %s has no return value?!\n'%a)
+ if 'result' in var:
+ a=var['result']
+ else:
+ a=var['name']
+ if a in var['vars']:
+ return getstrlength(var['vars'][a])
+ else:
+ errmess('getstrlength: function %s has no return value?!\n'%a)
if not isstring(var):
errmess('getstrlength: expected a signature of a string but got: %s\n'%(`var`))
len='1'
- if var.has_key('charselector'):
+ if 'charselector' in var:
a=var['charselector']
- if a.has_key('*'): len=a['*']
- elif a.has_key('len'): len=a['len']
+ if '*' in a:
+ len=a['*']
+ elif 'len' in a:
+ len=a['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'%(`var`))
len='-1'
return len
+
def getarrdims(a,var,verbose=0):
global depargs
ret={}
@@ -319,13 +332,18 @@ def getarrdims(a,var,verbose=0):
# if not isintent_c(var):
# var['dimension'].reverse()
return ret
+
def getpydocsign(a,var):
global lcb_map
if isfunction(var):
- if var.has_key('result'): af=var['result']
- else: af=var['name']
- if var['vars'].has_key(af): return getpydocsign(af,var['vars'][af])
- else: errmess('getctype: function %s has no return value?!\n'%af)
+ if 'result' in var:
+ af=var['result']
+ else:
+ af=var['name']
+ if af in var['vars']:
+ return getpydocsign(af,var['vars'][af])
+ else:
+ errmess('getctype: function %s has no return value?!\n'%af)
return '',''
sig,sigout=a,a
opt=''
@@ -370,7 +388,7 @@ def getpydocsign(a,var):
%(out_a,rank,c2pycode_map[ctype],','.join(dim),a)
elif isexternal(var):
ua=''
- if lcb_map.has_key(a) and lcb2_map.has_key(lcb_map[a]) and lcb2_map[lcb_map[a]].has_key('argname'):
+ 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=''
@@ -379,6 +397,7 @@ def getpydocsign(a,var):
else:
errmess('getpydocsign: Could not resolve docsignature for "%s".\\n'%a)
return sig,sigout
+
def getarrdocsign(a,var):
ctype=getctype(var)
if isstring(var) and (not isarray(var)):
@@ -446,7 +465,7 @@ def sign2map(a,var):
else:
ret['intent'] = 'F2PY_INTENT_IN'
if isarray(var): ret['varrformat']='N'
- elif c2buildvalue_map.has_key(ret['ctype']):
+ elif ret['ctype'] in c2buildvalue_map:
ret['varrformat']=c2buildvalue_map[ret['ctype']]
else: ret['varrformat']='O'
ret['init'],ret['showinit']=getinit(a,var)
@@ -454,7 +473,7 @@ def sign2map(a,var):
ret['init.r'],ret['init.i'] = markoutercomma(ret['init'][1:-1]).split('@,@')
if isexternal(var):
ret['cbnamekey']=a
- if lcb_map.has_key(a):
+ if a in lcb_map:
ret['cbname']=lcb_map[a]
ret['maxnofargs']=lcb2_map[lcb_map[a]]['maxnofargs']
ret['nofoptargs']=lcb2_map[lcb_map[a]]['nofoptargs']
@@ -468,7 +487,8 @@ def sign2map(a,var):
if isarray(var):
ret=dictappend(ret,getarrdims(a,var))
dim=copy.copy(var['dimension'])
- if c2capi_map.has_key(ret['ctype']): ret['atype']=c2capi_map[ret['ctype']]
+ if ret['ctype'] in c2capi_map:
+ ret['atype']=c2capi_map[ret['ctype']]
# Debug info
if debugcapi(var):
il=[isintent_in,'input',isintent_out,'output',
@@ -502,13 +522,13 @@ def sign2map(a,var):
else:
ret['vardebuginfo']='debug-capi:%s %s=%s:%s'%(ret['ctype'],a,ret['showinit'],','.join(rl))
if isscalar(var):
- if cformat_map.has_key(ret['ctype']):
+ if ret['ctype'] in cformat_map:
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)
if isexternal(var):
ret['vardebugshowvalue']='debug-capi:%s=%%p'%(a)
- if cformat_map.has_key(ret['ctype']):
+ if ret['ctype'] in cformat_map:
ret['varshowvalue']='#name#:%s=%s'%(a,cformat_map[ret['ctype']])
ret['showvalueformat']='%s'%(cformat_map[ret['ctype']])
if isstring(var):
@@ -548,36 +568,38 @@ def routsign2map(rout):
else:
ret['F_WRAPPEDFUNC'] = 'F_WRAPPEDFUNC'
lcb_map={}
- if rout.has_key('use'):
+ if 'use' in rout:
for u in rout['use'].keys():
- if cb_rules.cb_map.has_key(u):
+ if u in cb_rules.cb_map:
for un in cb_rules.cb_map[u]:
ln=un[0]
- if rout['use'][u].has_key('map'):
+ if 'map' in rout['use'][u]:
for k in rout['use'][u]['map'].keys():
if rout['use'][u]['map'][k]==un[0]: ln=k;break
lcb_map[ln]=un[1]
#else:
# errmess('routsign2map: cb_map does not contain module "%s" used in "use" statement.\n'%(u))
- elif rout.has_key('externals') and rout['externals']:
+ elif 'externals' in rout and rout['externals']:
errmess('routsign2map: Confused: function %s has externals %s but no "use" statement.\n'%(ret['name'],`rout['externals']`))
ret['callprotoargument'] = getcallprotoargument(rout,lcb_map) or ''
if isfunction(rout):
- if rout.has_key('result'): a=rout['result']
- else: a=rout['name']
+ if 'result' in rout:
+ a=rout['result']
+ else:
+ a=rout['name']
ret['rname']=a
ret['pydocsign'],ret['pydocsignout']=getpydocsign(a,rout)
ret['ctype']=getctype(rout['vars'][a])
if hasresultnote(rout):
ret['resultnote']=rout['vars'][a]['note']
rout['vars'][a]['note']=['See elsewhere.']
- if c2buildvalue_map.has_key(ret['ctype']):
+ if ret['ctype'] in c2buildvalue_map:
ret['rformat']=c2buildvalue_map[ret['ctype']]
else:
ret['rformat']='O'
errmess('routsign2map: no c2buildvalue key for type %s\n'%(`ret['ctype']`))
if debugcapi(rout):
- if cformat_map.has_key(ret['ctype']):
+ if ret['ctype'] in cformat_map:
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)
@@ -619,9 +641,9 @@ def modsign2map(m):
def cb_sign2map(a,var):
ret={'varname':a}
ret['ctype']=getctype(var)
- if c2capi_map.has_key(ret['ctype']):
+ if ret['ctype'] in c2capi_map:
ret['atype']=c2capi_map[ret['ctype']]
- if cformat_map.has_key(ret['ctype']):
+ if ret['ctype'] in cformat_map:
ret['showvalueformat']='%s'%(cformat_map[ret['ctype']])
if isarray(var):
ret=dictappend(ret,getarrdims(a,var))
@@ -669,13 +691,15 @@ return_value=
"""
else:
ret['returncptr'] = 'return_value='
- if cformat_map.has_key(ret['ctype']):
+ if ret['ctype'] in cformat_map:
ret['showvalueformat']='%s'%(cformat_map[ret['ctype']])
if isstringfunction(rout):
ret['strlength']=getstrlength(rout)
if isfunction(rout):
- if rout.has_key('result'): a=rout['result']
- else: a=rout['name']
+ if 'result' in rout:
+ a=rout['result']
+ else:
+ a=rout['name']
if hasnote(rout['vars'][a]):
ret['note']=rout['vars'][a]['note']
rout['vars'][a]['note']=['See elsewhere.']
@@ -695,7 +719,7 @@ void
rout['note']=['See elsewhere.']
nofargs=0
nofoptargs=0
- if rout.has_key('args') and rout.has_key('vars'):
+ 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):
@@ -704,7 +728,7 @@ void
nofoptargs=nofoptargs+1
ret['maxnofargs']=`nofargs`
ret['nofoptargs']=`nofoptargs`
- if hasnote(rout) and isfunction(rout) and rout.has_key('result'):
+ if hasnote(rout) and isfunction(rout) and 'result' in rout:
ret['routnote']=rout['note']
rout['note']=['See elsewhere.']
return ret
@@ -712,10 +736,11 @@ void
def common_sign2map(a,var): # obsolute
ret={'varname':a}
ret['ctype']=getctype(var)
- if isstringarray(var): ret['ctype']='char'
- if c2capi_map.has_key(ret['ctype']):
+ if isstringarray(var):
+ ret['ctype']='char'
+ if ret['ctype'] in c2capi_map:
ret['atype']=c2capi_map[ret['ctype']]
- if cformat_map.has_key(ret['ctype']):
+ if ret['ctype'] in cformat_map:
ret['showvalueformat']='%s'%(cformat_map[ret['ctype']])
if isarray(var):
ret=dictappend(ret,getarrdims(a,var))