summaryrefslogtreecommitdiff
path: root/numpy/f2py/capi_maps.py
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/f2py/capi_maps.py')
-rw-r--r--numpy/f2py/capi_maps.py905
1 files changed, 487 insertions, 418 deletions
diff --git a/numpy/f2py/capi_maps.py b/numpy/f2py/capi_maps.py
index ce7c0d90e..f6bb1b7dd 100644
--- a/numpy/f2py/capi_maps.py
+++ b/numpy/f2py/capi_maps.py
@@ -46,142 +46,144 @@ __all__ = [
# Numarray and Numeric users should set this False
using_newcore = True
-depargs=[]
-lcb_map={}
-lcb2_map={}
+depargs = []
+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',
- }
-c2capi_map={'double':'NPY_DOUBLE',
- 'float':'NPY_FLOAT',
- 'long_double':'NPY_DOUBLE', # forced casting
- 'char':'NPY_CHAR',
- 'unsigned_char':'NPY_UBYTE',
- 'signed_char':'NPY_BYTE',
- 'short':'NPY_SHORT',
- 'unsigned_short':'NPY_USHORT',
- 'int':'NPY_INT',
- 'unsigned':'NPY_UINT',
- 'long':'NPY_LONG',
- 'long_long':'NPY_LONG', # forced casting
- 'complex_float':'NPY_CFLOAT',
- 'complex_double':'NPY_CDOUBLE',
- 'complex_long_double':'NPY_CDOUBLE', # forced casting
- 'string':'NPY_CHAR'}
-
-#These new maps aren't used anyhere yet, but should be by default
+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',
+ 'long_double': 'NPY_DOUBLE', # forced casting
+ 'char': 'NPY_CHAR',
+ 'unsigned_char': 'NPY_UBYTE',
+ 'signed_char': 'NPY_BYTE',
+ 'short': 'NPY_SHORT',
+ 'unsigned_short': 'NPY_USHORT',
+ 'int': 'NPY_INT',
+ 'unsigned': 'NPY_UINT',
+ 'long': 'NPY_LONG',
+ 'long_long': 'NPY_LONG', # forced casting
+ 'complex_float': 'NPY_CFLOAT',
+ 'complex_double': 'NPY_CDOUBLE',
+ 'complex_long_double': 'NPY_CDOUBLE', # forced casting
+ 'string': 'NPY_CHAR'}
+
+# 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)
- #'string':'NPY_STRING'
-
+ 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',
+ # f2py 2e is not ready for NPY_STRING (must set itemisize
+ # etc)
+ 'string': 'NPY_CHAR',
+ #'string':'NPY_STRING'
+
+ }
+c2pycode_map = {'double': 'd',
+ 'float': 'f',
+ 'long_double': 'd', # forced casting
+ 'char': '1',
+ 'signed_char': '1',
+ 'unsigned_char': 'b',
+ 'short': 's',
+ 'unsigned_short': 'w',
+ 'int': 'i',
+ 'unsigned': 'u',
+ 'long': 'l',
+ 'long_long': 'L',
+ 'complex_float': 'F',
+ 'complex_double': 'D',
+ 'complex_long_double': 'D', # forced casting
+ 'string': 'c'
}
-c2pycode_map={'double':'d',
- 'float':'f',
- 'long_double':'d', # forced casting
- 'char':'1',
- 'signed_char':'1',
- 'unsigned_char':'b',
- 'short':'s',
- 'unsigned_short':'w',
- 'int':'i',
- 'unsigned':'u',
- 'long':'l',
- 'long_long':'L',
- 'complex_float':'F',
- 'complex_double':'D',
- 'complex_long_double':'D', # forced casting
- 'string':'c'
- }
if using_newcore:
- c2pycode_map={'double':'d',
- 'float':'f',
- 'long_double':'g',
- 'char':'b',
- 'unsigned_char':'B',
- 'signed_char':'b',
- 'short':'h',
- 'unsigned_short':'H',
- 'int':'i',
- 'unsigned':'I',
- 'long':'l',
- 'unsigned_long':'L',
- 'long_long':'q',
- 'unsigned_long_long':'Q',
- 'complex_float':'F',
- 'complex_double':'D',
- 'complex_long_double':'G',
- 'string':'S'}
-c2buildvalue_map={'double':'d',
- 'float':'f',
- 'char':'b',
- 'signed_char':'b',
- 'short':'h',
- 'int':'i',
- 'long':'l',
- 'long_long':'L',
- 'complex_float':'N',
- 'complex_double':'N',
- 'complex_long_double':'N',
- 'string':'z'}
+ c2pycode_map = {'double': 'd',
+ 'float': 'f',
+ 'long_double': 'g',
+ 'char': 'b',
+ 'unsigned_char': 'B',
+ 'signed_char': 'b',
+ 'short': 'h',
+ 'unsigned_short': 'H',
+ 'int': 'i',
+ 'unsigned': 'I',
+ 'long': 'l',
+ 'unsigned_long': 'L',
+ 'long_long': 'q',
+ 'unsigned_long_long': 'Q',
+ 'complex_float': 'F',
+ 'complex_double': 'D',
+ 'complex_long_double': 'G',
+ 'string': 'S'}
+c2buildvalue_map = {'double': 'd',
+ 'float': 'f',
+ 'char': 'b',
+ 'signed_char': 'b',
+ 'short': 'h',
+ 'int': 'i',
+ 'long': 'l',
+ 'long_long': 'L',
+ 'complex_float': 'N',
+ 'complex_double': 'N',
+ 'complex_long_double': 'N',
+ 'string': 'z'}
if sys.version_info[0] >= 3:
# Bytes, not Unicode strings
c2buildvalue_map['string'] = 'y'
if using_newcore:
- #c2buildvalue_map=???
+ # c2buildvalue_map=???
pass
-f2cmap_all={'real':{'':'float','4':'float','8':'double','12':'long_double','16':'long_double'},
- 'integer':{'':'int','1':'signed_char','2':'short','4':'int','8':'long_long',
- '-1':'unsigned_char','-2':'unsigned_short','-4':'unsigned',
- '-8':'unsigned_long_long'},
- 'complex':{'':'complex_float','8':'complex_float',
- '16':'complex_double','24':'complex_long_double',
- '32':'complex_long_double'},
- 'complexkind':{'':'complex_float','4':'complex_float',
- '8':'complex_double','12':'complex_long_double',
- '16':'complex_long_double'},
- 'logical':{'':'int','1':'char','2':'short','4':'int','8':'long_long'},
- 'double complex':{'':'complex_double'},
- 'double precision':{'':'double'},
- 'byte':{'':'char'},
- 'character':{'':'string'}
- }
+f2cmap_all = {'real': {'': 'float', '4': 'float', '8': 'double', '12': 'long_double', '16': 'long_double'},
+ 'integer': {'': 'int', '1': 'signed_char', '2': 'short', '4': 'int', '8': 'long_long',
+ '-1': 'unsigned_char', '-2': 'unsigned_short', '-4': 'unsigned',
+ '-8': 'unsigned_long_long'},
+ 'complex': {'': 'complex_float', '8': 'complex_float',
+ '16': 'complex_double', '24': 'complex_long_double',
+ '32': 'complex_long_double'},
+ 'complexkind': {'': 'complex_float', '4': 'complex_float',
+ '8': 'complex_double', '12': 'complex_long_double',
+ '16': 'complex_long_double'},
+ 'logical': {'': 'int', '1': 'char', '2': 'short', '4': 'int', '8': 'long_long'},
+ 'double complex': {'': 'complex_double'},
+ 'double precision': {'': 'double'},
+ 'byte': {'': 'char'},
+ 'character': {'': 'string'}
+ }
if os.path.isfile('.f2py_f2cmap'):
# User defined additions to f2cmap_all.
@@ -201,271 +203,313 @@ if os.path.isfile('.f2py_f2cmap'):
d[k.lower()] = d[k]
for k in list(d.keys()):
if k not in f2cmap_all:
- f2cmap_all[k]={}
+ f2cmap_all[k] = {}
for k1 in list(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',
- }
-
-############### Auxiliary functions
+ 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',
+ }
+
+# Auxiliary functions
+
+
def getctype(var):
"""
Determines C type
"""
- ctype='void'
+ ctype = 'void'
if isfunction(var):
if 'result' in var:
- a=var['result']
+ a = var['result']
else:
- a=var['name']
+ a = var['name']
if a in var['vars']:
return getctype(var['vars'][a])
else:
- errmess('getctype: function %s has no return value?!\n'%a)
+ errmess('getctype: function %s has no return value?!\n' % a)
elif issubroutine(var):
return ctype
elif 'typespec' in var and var['typespec'].lower() in f2cmap_all:
typespec = var['typespec'].lower()
- f2cmap=f2cmap_all[typespec]
- ctype=f2cmap[''] # default type
+ f2cmap = f2cmap_all[typespec]
+ ctype = f2cmap[''] # default type
if 'kindselector' in var:
if '*' in var['kindselector']:
try:
- ctype=f2cmap[var['kindselector']['*']]
+ 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']
+ if typespec + 'kind' in f2cmap_all:
+ f2cmap = f2cmap_all[typespec + 'kind']
try:
- ctype=f2cmap[var['kindselector']['kind']]
+ ctype = f2cmap[var['kindselector']['kind']]
except KeyError:
if typespec in f2cmap_all:
- f2cmap=f2cmap_all[typespec]
+ f2cmap = f2cmap_all[typespec]
try:
- ctype=f2cmap[str(var['kindselector']['kind'])]
+ 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()))
+ 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()))
else:
if not isexternal(var):
- errmess('getctype: No C-type found in "%s", assuming void.\n'%var)
+ errmess(
+ 'getctype: No C-type found in "%s", assuming void.\n' % var)
return ctype
+
def getstrlength(var):
if isstringfunction(var):
if 'result' in var:
- a=var['result']
+ a = var['result']
else:
- a=var['name']
+ a = var['name']
if a in var['vars']:
return getstrlength(var['vars'][a])
else:
- errmess('getstrlength: function %s has no return value?!\n'%a)
+ 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'%(repr(var)))
- len='1'
+ errmess(
+ 'getstrlength: expected a signature of a string but got: %s\n' % (repr(var)))
+ len = '1'
if 'charselector' in var:
- a=var['charselector']
+ a = var['charselector']
if '*' in a:
- len=a['*']
+ len = a['*']
elif 'len' in a:
- len=a['len']
+ len = a['len']
if re.match(r'\(\s*([*]|[:])\s*\)', len) or re.match(r'([*]|[:])', len):
- #if len in ['(*)','*','(:)',':']:
+ # if len in ['(*)','*','(:)',':']:
if isintent_hide(var):
- errmess('getstrlength:intent(hide): expected a string with defined length but got: %s\n'%(repr(var)))
- len='-1'
+ errmess('getstrlength:intent(hide): expected a string with defined length but got: %s\n' % (
+ repr(var)))
+ len = '-1'
return len
-def getarrdims(a,var,verbose=0):
+
+def getarrdims(a, var, verbose=0):
global depargs
- ret={}
+ ret = {}
if isstring(var) and not isarray(var):
- ret['dims']=getstrlength(var)
- ret['size']=ret['dims']
- ret['rank']='1'
+ ret['dims'] = getstrlength(var)
+ ret['size'] = ret['dims']
+ ret['rank'] = '1'
elif isscalar(var):
- ret['size']='1'
- ret['rank']='0'
- ret['dims']=''
+ ret['size'] = '1'
+ ret['rank'] = '0'
+ ret['dims'] = ''
elif isarray(var):
-# if not isintent_c(var):
-# var['dimension'].reverse()
- dim=copy.copy(var['dimension'])
- ret['size']='*'.join(dim)
- try: ret['size']=repr(eval(ret['size']))
- except: pass
- ret['dims']=','.join(dim)
- ret['rank']=repr(len(dim))
- ret['rank*[-1]']=repr(len(dim)*[-1])[1:-1]
- for i in range(len(dim)): # solve dim for dependecies
- v=[]
- if dim[i] in depargs: v=[dim[i]]
+ # if not isintent_c(var):
+ # var['dimension'].reverse()
+ dim = copy.copy(var['dimension'])
+ ret['size'] = '*'.join(dim)
+ try:
+ ret['size'] = repr(eval(ret['size']))
+ except:
+ pass
+ ret['dims'] = ','.join(dim)
+ ret['rank'] = repr(len(dim))
+ ret['rank*[-1]'] = repr(len(dim) * [-1])[1:-1]
+ for i in range(len(dim)): # solve dim for dependecies
+ v = []
+ 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]='*'
+ 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
+ i = i + 1
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['setdims'] = '%s#varname#_Dims[%d]=%s,' % (
+ ret['setdims'], i, d)
+ if ret['setdims']:
+ ret['setdims'] = ret['setdims'][:-1]
+ ret['cbsetdims'], i = '', -1
for d in var['dimension']:
- i=i+1
+ i = i + 1
if d not in ['*', ':', '(*)', '(:)']:
- ret['cbsetdims']='%s#varname#_Dims[%d]=%s,'%(ret['cbsetdims'], i, d)
+ 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' \
+ outmess('getarrdims:warning: assumed shape array, using 0 instead of %r\n'
% (d))
- 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)))
- if ret['cbsetdims']: ret['cbsetdims']=ret['cbsetdims'][:-1]
+ 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)))
+ if ret['cbsetdims']:
+ ret['cbsetdims'] = ret['cbsetdims'][:-1]
# if not isintent_c(var):
# var['dimension'].reverse()
return ret
+
def getpydocsign(a, var):
global lcb_map
if isfunction(var):
if 'result' in var:
- af=var['result']
+ af = var['result']
else:
- af=var['name']
+ 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)
+ errmess('getctype: function %s has no return value?!\n' % af)
return '', ''
- sig, sigout=a, a
- opt=''
- if isintent_in(var): opt='input'
- elif isintent_inout(var): opt='in/output'
+ sig, sigout = a, a
+ opt = ''
+ if isintent_in(var):
+ opt = 'input'
+ elif isintent_inout(var):
+ opt = 'in/output'
out_a = a
if isintent_out(var):
for k in var['intent']:
- if k[:4]=='out=':
+ if k[:4] == 'out=':
out_a = k[4:]
break
- init=''
- ctype=getctype(var)
+ init = ''
+ 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],
- c2pycode_map[ctype], init)
+ 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,
- 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))
+ dim = var['dimension']
+ rank = repr(len(dim))
+ 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))
else:
- sigout='%s : rank-%s array(\'%s\') with bounds (%s) and %s storage'\
- %(out_a, rank, c2pycode_map[ctype], ','.join(dim), a)
+ sigout = '%s : rank-%s array(\'%s\') with bounds (%s) and %s storage'\
+ % (out_a, rank, c2pycode_map[ctype], ','.join(dim), a)
elif isexternal(var):
- ua=''
+ 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)
- sigout=sig
+ ua = lcb2_map[lcb_map[a]]['argname']
+ if not ua == a:
+ ua = ' => %s' % ua
+ else:
+ ua = ''
+ sig = '%s : call-back function%s' % (a, ua)
+ sigout = sig
else:
- errmess('getpydocsign: Could not resolve docsignature for "%s".\\n'%a)
+ errmess(
+ 'getpydocsign: Could not resolve docsignature for "%s".\\n' % a)
return sig, sigout
+
def getarrdocsign(a, var):
- ctype=getctype(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],
- c2pycode_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,
- c2pycode_map[ctype],
- ','.join(dim))
+ dim = var['dimension']
+ rank = repr(len(dim))
+ 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='', ''
+ if isstring(var):
+ init, showinit = '""', "''"
+ else:
+ init, showinit = '', ''
if hasinitvalue(var):
- init=var['=']
- showinit=init
+ init = var['=']
+ showinit = init
if iscomplex(var) or iscomplexarray(var):
- ret={}
+ ret = {}
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)
+ 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))
+ 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 init[0]=="'":
- init='"%s"'%(init[1:-1].replace('"', '\\"'))
- if init[0]=='"': showinit="'%s'"%(init[1:-1])
+ if not init:
+ init, showinit = '""', "''"
+ if init[0] == "'":
+ init = '"%s"' % (init[1:-1].replace('"', '\\"'))
+ if init[0] == '"':
+ showinit = "'%s'" % (init[1:-1])
return init, showinit
+
def sign2map(a, var):
"""
varname,ctype,atype
@@ -478,93 +522,105 @@ def sign2map(a, var):
out_a = a
if isintent_out(var):
for k in var['intent']:
- if k[:4]=='out=':
+ if k[:4] == 'out=':
out_a = k[4:]
break
- ret={'varname':a,'outvarname':out_a}
- ret['ctype']=getctype(var)
+ ret = {'varname': a, 'outvarname': out_a}
+ ret['ctype'] = getctype(var)
intent_flags = []
for f, s in isintent_dict.items():
- if f(var): intent_flags.append('F2PY_%s'%s)
+ if f(var):
+ intent_flags.append('F2PY_%s' % s)
if intent_flags:
- #XXX: Evaluate intent_flags here.
+ # XXX: Evaluate intent_flags here.
ret['intent'] = '|'.join(intent_flags)
else:
ret['intent'] = 'F2PY_INTENT_IN'
- if isarray(var): ret['varrformat']='N'
+ if isarray(var):
+ ret['varrformat'] = 'N'
elif ret['ctype'] in c2buildvalue_map:
- ret['varrformat']=c2buildvalue_map[ret['ctype']]
- else: ret['varrformat']='O'
- ret['init'], ret['showinit']=getinit(a, var)
+ ret['varrformat'] = c2buildvalue_map[ret['ctype']]
+ else:
+ ret['varrformat'] = 'O'
+ 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
+ ret['cbnamekey'] = 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']
- ret['cbdocstr']=lcb2_map[lcb_map[a]]['docstr']
- ret['cblatexdocstr']=lcb2_map[lcb_map[a]]['latexdocstr']
+ ret['cbname'] = lcb_map[a]
+ ret['maxnofargs'] = lcb2_map[lcb_map[a]]['maxnofargs']
+ ret['nofoptargs'] = lcb2_map[lcb_map[a]]['nofoptargs']
+ ret['cbdocstr'] = lcb2_map[lcb_map[a]]['docstr']
+ 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())))
+ ret['cbname'] = a
+ errmess('sign2map: Confused: external %s is not in lcb_map%s.\n' % (
+ a, list(lcb_map.keys())))
if isstring(var):
- ret['length']=getstrlength(var)
+ ret['length'] = getstrlength(var)
if isarray(var):
- ret=dictappend(ret, getarrdims(a, var))
- dim=copy.copy(var['dimension'])
+ ret = dictappend(ret, getarrdims(a, var))
+ dim = copy.copy(var['dimension'])
if ret['ctype'] in c2capi_map:
- ret['atype']=c2capi_map[ret['ctype']]
+ 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',
- #ismutable,'mutable',l_not(ismutable),'immutable',
- ]
- rl=[]
+ 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):
- if il[i](var): rl.append(il[i+1])
+ 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))
- rl.append('dims(%s)'%ddim)
+ # if not isintent_c(var):
+ # var['dimension'].reverse()
+ 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)
+ ret['vardebugshowvalue'] = 'debug-capi:%s=%%p' % (a)
if ret['ctype'] in cformat_map:
- ret['varshowvalue']='#name#:%s=%s'%(a, cformat_map[ret['ctype']])
- ret['showvalueformat']='%s'%(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']
+ ret['note'] = var['note']
return ret
+
def routsign2map(rout):
"""
name,NAME,begintitle,endtitle
@@ -574,18 +630,18 @@ 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'
else:
@@ -594,67 +650,75 @@ def routsign2map(rout):
ret['F_WRAPPEDFUNC'] = 'F_WRAPPEDFUNC_US'
else:
ret['F_WRAPPEDFUNC'] = 'F_WRAPPEDFUNC'
- lcb_map={}
+ lcb_map = {}
if 'use' in rout:
for u in rout['use'].keys():
if u in cb_rules.cb_map:
for un in cb_rules.cb_map[u]:
- ln=un[0]
+ ln = un[0]
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:
+ 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 'externals' in rout and rout['externals']:
- errmess('routsign2map: Confused: function %s has externals %s but no "use" statement.\n'%(ret['name'], repr(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 ''
if isfunction(rout):
if 'result' in rout:
- a=rout['result']
+ a = rout['result']
else:
- a=rout['name']
- ret['rname']=a
- ret['pydocsign'], ret['pydocsignout']=getpydocsign(a, rout)
- ret['ctype']=getctype(rout['vars'][a])
+ 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.']
+ ret['resultnote'] = rout['vars'][a]['note']
+ rout['vars'][a]['note'] = ['See elsewhere.']
if ret['ctype'] in c2buildvalue_map:
- ret['rformat']=c2buildvalue_map[ret['ctype']]
+ ret['rformat'] = c2buildvalue_map[ret['ctype']]
else:
- ret['rformat']='O'
- errmess('routsign2map: no c2buildvalue key for type %s\n'%(repr(ret['ctype'])))
+ ret['rformat'] = 'O'
+ 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':
- errmess('routsign2map: expected explicit specification of the length of the string returned by the fortran function %s; taking 10.\n'%(repr(rout['name'])))
- ret['rlength']='10'
+ ret['rlength'] = getstrlength(rout['vars'][a])
+ if ret['rlength'] == '-1':
+ errmess('routsign2map: expected explicit specification of the length of the string returned by the fortran function %s; taking 10.\n' % (
+ repr(rout['name'])))
+ ret['rlength'] = '10'
if hasnote(rout):
- ret['note']=rout['note']
- rout['note']=['See elsewhere.']
+ ret['note'] = rout['note']
+ rout['note'] = ['See elsewhere.']
return ret
+
def modsign2map(m):
"""
modulename
"""
if ismodule(m):
- ret={'f90modulename':m['name'],
- 'F90MODULENAME':m['name'].upper(),
- 'texf90modulename':m['name'].replace('_', '\\_')}
+ ret = {'f90modulename': m['name'],
+ 'F90MODULENAME': m['name'].upper(),
+ 'texf90modulename': m['name'].replace('_', '\\_')}
else:
- ret={'modulename':m['name'],
- 'MODULENAME':m['name'].upper(),
- 'texmodulename':m['name'].replace('_', '\\_')}
+ ret = {'modulename': m['name'],
+ 'MODULENAME': m['name'].upper(),
+ 'texmodulename': m['name'].replace('_', '\\_')}
ret['restdoc'] = getrestdoc(m) or []
if hasnote(m):
- ret['note']=m['note']
+ ret['note'] = m['note']
#m['note']=['See elsewhere.']
ret['usercode'] = getusercode(m) or ''
ret['usercode1'] = getusercode1(m) or ''
@@ -669,37 +733,39 @@ def modsign2map(m):
ret['f2py_wrapper_output'] = m['f2py_wrapper_output']
return ret
-def cb_sign2map(a,var,index=None):
- ret={'varname':a}
- if index is None or 1: # disable 7712 patch
+
+def cb_sign2map(a, var, index=None):
+ ret = {'varname': a}
+ if index is None or 1: # disable 7712 patch
ret['varname_i'] = ret['varname']
else:
ret['varname_i'] = ret['varname'] + '_' + str(index)
- ret['ctype']=getctype(var)
+ ret['ctype'] = getctype(var)
if ret['ctype'] in c2capi_map:
- ret['atype']=c2capi_map[ret['ctype']]
+ ret['atype'] = c2capi_map[ret['ctype']]
if ret['ctype'] in cformat_map:
- ret['showvalueformat']='%s'%(cformat_map[ret['ctype']])
+ 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.']
+ ret['note'] = var['note']
+ var['note'] = ['See elsewhere.']
return ret
+
def cb_routsign2map(rout, um):
"""
name,begintitle,endtitle,argname
ctype,rctype,maxnofargs,nofoptargs,returncptr
"""
- ret={'name':'cb_%s_in_%s'%(rout['name'], um),
- 'returncptr':''}
+ ret = {'name': 'cb_%s_in_%s' % (rout['name'], um),
+ 'returncptr': ''}
if isintent_callback(rout):
if '_' in rout['name']:
- F_FUNC='F_FUNC_US'
+ F_FUNC = 'F_FUNC_US'
else:
- F_FUNC='F_FUNC'
+ F_FUNC = 'F_FUNC'
ret['callbackname'] = '%s(%s,%s)' \
% (F_FUNC,
rout['name'].lower(),
@@ -709,15 +775,16 @@ def cb_routsign2map(rout, um):
else:
ret['callbackname'] = ret['name']
ret['static'] = 'static'
- ret['argname']=rout['name']
- ret['begintitle']=gentitle(ret['name'])
- ret['endtitle']=gentitle('end of %s'%ret['name'])
- ret['ctype']=getctype(rout)
- ret['rctype']='void'
- if ret['ctype']=='string': ret['rctype']='void'
+ ret['argname'] = rout['name']
+ ret['begintitle'] = gentitle(ret['name'])
+ ret['endtitle'] = gentitle('end of %s' % ret['name'])
+ ret['ctype'] = getctype(rout)
+ ret['rctype'] = 'void'
+ if ret['ctype'] == 'string':
+ ret['rctype'] = 'void'
else:
- ret['rctype']=ret['ctype']
- if ret['rctype']!='void':
+ ret['rctype'] = ret['ctype']
+ if ret['rctype'] != 'void':
if iscomplexfunction(rout):
ret['returncptr'] = """
#ifdef F2PY_CB_RETURNCOMPLEX
@@ -727,21 +794,21 @@ return_value=
else:
ret['returncptr'] = 'return_value='
if ret['ctype'] in cformat_map:
- ret['showvalueformat']='%s'%(cformat_map[ret['ctype']])
+ ret['showvalueformat'] = '%s' % (cformat_map[ret['ctype']])
if isstringfunction(rout):
- ret['strlength']=getstrlength(rout)
+ ret['strlength'] = getstrlength(rout)
if isfunction(rout):
if 'result' in rout:
- a=rout['result']
+ a = rout['result']
else:
- a=rout['name']
+ a = rout['name']
if hasnote(rout['vars'][a]):
- ret['note']=rout['vars'][a]['note']
- rout['vars'][a]['note']=['See elsewhere.']
- ret['rname']=a
- ret['pydocsign'], ret['pydocsignout']=getpydocsign(a, rout)
+ ret['note'] = rout['vars'][a]['note']
+ rout['vars'][a]['note'] = ['See elsewhere.']
+ ret['rname'] = a
+ ret['pydocsign'], ret['pydocsignout'] = getpydocsign(a, rout)
if iscomplexfunction(rout):
- ret['rctype']="""
+ ret['rctype'] = """
#ifdef F2PY_CB_RETURNCOMPLEX
#ctype#
#else
@@ -750,41 +817,43 @@ void
"""
else:
if hasnote(rout):
- ret['note']=rout['note']
- rout['note']=['See elsewhere.']
- nofargs=0
- nofoptargs=0
+ ret['note'] = rout['note']
+ rout['note'] = ['See elsewhere.']
+ nofargs = 0
+ nofoptargs = 0
if 'args' in rout and 'vars' in rout:
for a in rout['args']:
- var=rout['vars'][a]
+ var = rout['vars'][a]
if l_or(isintent_in, isintent_inout)(var):
- nofargs=nofargs+1
+ nofargs = nofargs + 1
if isoptional(var):
- nofoptargs=nofoptargs+1
- ret['maxnofargs']=repr(nofargs)
- ret['nofoptargs']=repr(nofoptargs)
+ nofoptargs = nofoptargs + 1
+ ret['maxnofargs'] = repr(nofargs)
+ ret['nofoptargs'] = repr(nofoptargs)
if hasnote(rout) and isfunction(rout) and 'result' in rout:
- ret['routnote']=rout['note']
- rout['note']=['See elsewhere.']
+ ret['routnote'] = rout['note']
+ rout['note'] = ['See elsewhere.']
return ret
-def common_sign2map(a, var): # obsolute
- ret={'varname':a}
- ret['ctype']=getctype(var)
+
+def common_sign2map(a, var): # obsolute
+ ret = {'varname': a}
+ ret['ctype'] = getctype(var)
if isstringarray(var):
- ret['ctype']='char'
+ ret['ctype'] = 'char'
if ret['ctype'] in c2capi_map:
- ret['atype']=c2capi_map[ret['ctype']]
+ ret['atype'] = c2capi_map[ret['ctype']]
if ret['ctype'] in cformat_map:
- ret['showvalueformat']='%s'%(cformat_map[ret['ctype']])
+ 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['size'] = getstrlength(var)
+ ret['rank'] = '1'
+ 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['note'] = var['note']
+ var['note'] = ['See elsewhere.']
+ # for strings this returns 0-rank but actually is 1-rank
+ ret['arrdocstr'] = getarrdocsign(a, var)
return ret