MCPcopy Create free account
hub / github.com/numpy/numpy / getarrdims

Function getarrdims

numpy/f2py/capi_maps.py:281–339  ·  view source on GitHub ↗
(a, var, verbose=0)

Source from the content-addressed store, hash-verified

279
280
281def getarrdims(a, var, verbose=0):
282 ret = {}
283 if isstring(var) and not isarray(var):
284 ret['size'] = getstrlength(var)
285 ret['rank'] = '0'
286 ret['dims'] = ''
287 elif isscalar(var):
288 ret['size'] = '1'
289 ret['rank'] = '0'
290 ret['dims'] = ''
291 elif isarray(var):
292 dim = copy.copy(var['dimension'])
293 ret['size'] = '*'.join(dim)
294 try:
295 ret['size'] = repr(eval(ret['size']))
296 except Exception:
297 pass
298 ret['dims'] = ','.join(dim)
299 ret['rank'] = repr(len(dim))
300 ret['rank*[-1]'] = repr(len(dim) * [-1])[1:-1]
301 for i in range(len(dim)): # solve dim for dependencies
302 v = []
303 if dim[i] in depargs:
304 v = [dim[i]]
305 else:
306 for va in depargs:
307 if re.match(r'.*?\b%s\b.*' % va, dim[i]):
308 v.append(va)
309 for va in v:
310 if depargs.index(va) > depargs.index(a):
311 dim[i] = '*'
312 break
313 ret['setdims'], i = '', -1
314 for d in dim:
315 i = i + 1
316 if d not in ['*', ':', '(*)', '(:)']:
317 ret['setdims'] = '%s#varname#_Dims[%d]=%s,' % (
318 ret['setdims'], i, d)
319 if ret['setdims']:
320 ret['setdims'] = ret['setdims'][:-1]
321 ret['cbsetdims'], i = '', -1
322 for d in var['dimension']:
323 i = i + 1
324 if d not in ['*', ':', '(*)', '(:)']:
325 ret['cbsetdims'] = '%s#varname#_Dims[%d]=%s,' % (
326 ret['cbsetdims'], i, d)
327 elif isintent_in(var):
328 outmess('getarrdims:warning: assumed shape array, using 0 instead of %r\n'
329 % (d))
330 ret['cbsetdims'] = '%s#varname#_Dims[%d]=%s,' % (
331 ret['cbsetdims'], i, 0)
332 elif verbose:
333 errmess(
334 'getarrdims: If in call-back function: array argument %s must have bounded dimensions: got %s\n' % (repr(a), repr(d)))
335 if ret['cbsetdims']:
336 ret['cbsetdims'] = ret['cbsetdims'][:-1]
337# if not isintent_c(var):
338# var['dimension'].reverse()

Callers 3

sign2mapFunction · 0.85
cb_sign2mapFunction · 0.85
common_sign2mapFunction · 0.85

Calls 9

isstringFunction · 0.85
isarrayFunction · 0.85
getstrlengthFunction · 0.85
isintent_inFunction · 0.85
isscalarFunction · 0.70
outmessFunction · 0.70
copyMethod · 0.45
joinMethod · 0.45
indexMethod · 0.45

Tested by

no test coverage detected