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

Function buildcallback

numpy/f2py/cb_rules.py:526–648  ·  view source on GitHub ↗
(rout, um)

Source from the content-addressed store, hash-verified

524
525
526def buildcallback(rout, um):
527 from . import capi_maps
528
529 outmess(f" Constructing call-back function \"cb_{rout['name']}_in_{um}\"\n")
530 args, depargs = getargs(rout)
531 capi_maps.depargs = depargs
532 var = rout['vars']
533 vrd = capi_maps.cb_routsign2map(rout, um)
534 rd = dictappend({}, vrd)
535 cb_map[um].append([rout['name'], rd['name']])
536 for r in cb_rout_rules:
537 if ('_check' in r and r['_check'](rout)) or ('_check' not in r):
538 ar = applyrules(r, vrd, rout)
539 rd = dictappend(rd, ar)
540 savevrd = {}
541 for i, a in enumerate(args):
542 vrd = capi_maps.cb_sign2map(a, var[a], index=i)
543 savevrd[a] = vrd
544 for r in cb_arg_rules:
545 if '_depend' in r:
546 continue
547 if '_optional' in r and isoptional(var[a]):
548 continue
549 if ('_check' in r and r['_check'](var[a])) or ('_check' not in r):
550 ar = applyrules(r, vrd, var[a])
551 rd = dictappend(rd, ar)
552 if '_break' in r:
553 break
554 for a in args:
555 vrd = savevrd[a]
556 for r in cb_arg_rules:
557 if '_depend' in r:
558 continue
559 if ('_optional' not in r) or ('_optional' in r and isrequired(var[a])):
560 continue
561 if ('_check' in r and r['_check'](var[a])) or ('_check' not in r):
562 ar = applyrules(r, vrd, var[a])
563 rd = dictappend(rd, ar)
564 if '_break' in r:
565 break
566 for a in depargs:
567 vrd = savevrd[a]
568 for r in cb_arg_rules:
569 if '_depend' not in r:
570 continue
571 if '_optional' in r:
572 continue
573 if ('_check' in r and r['_check'](var[a])) or ('_check' not in r):
574 ar = applyrules(r, vrd, var[a])
575 rd = dictappend(rd, ar)
576 if '_break' in r:
577 break
578 if 'args' in rd and 'optargs' in rd:
579 if isinstance(rd['optargs'], list):
580 rd['optargs'] = rd['optargs'] + ["""
581#ifndef F2PY_CB_RETURNCOMPLEX
582,
583#endif

Callers 1

buildcallbacksFunction · 0.85

Calls 11

dictappendFunction · 0.85
applyrulesFunction · 0.85
isoptionalFunction · 0.85
isrequiredFunction · 0.85
stripcommaFunction · 0.85
replaceMethod · 0.80
outmessFunction · 0.70
getargsFunction · 0.70
replaceFunction · 0.70
getMethod · 0.45
keysMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…