MCPcopy Index your code
hub / github.com/numpy/numpy / getarrdims

Function getarrdims

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

Source from the content-addressed store, hash-verified

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

Callers 3

sign2mapFunction · 0.85
cb_sign2mapFunction · 0.85
common_sign2mapFunction · 0.85

Calls 10

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

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…