annotate DEPENDENCIES/mingw32/Python27/Lib/site-packages/numpy/f2py/use_rules.py @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents 2a2c65a20a8b
children
rev   line source
Chris@87 1 #!/usr/bin/env python
Chris@87 2 """
Chris@87 3
Chris@87 4 Build 'use others module data' mechanism for f2py2e.
Chris@87 5
Chris@87 6 Unfinished.
Chris@87 7
Chris@87 8 Copyright 2000 Pearu Peterson all rights reserved,
Chris@87 9 Pearu Peterson <pearu@ioc.ee>
Chris@87 10 Permission to use, modify, and distribute this software is given under the
Chris@87 11 terms of the NumPy License.
Chris@87 12
Chris@87 13 NO WARRANTY IS EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
Chris@87 14 $Date: 2000/09/10 12:35:43 $
Chris@87 15 Pearu Peterson
Chris@87 16
Chris@87 17 """
Chris@87 18 from __future__ import division, absolute_import, print_function
Chris@87 19
Chris@87 20 __version__ = "$Revision: 1.3 $"[10:-1]
Chris@87 21
Chris@87 22 f2py_version='See `f2py -v`'
Chris@87 23
Chris@87 24 import pprint
Chris@87 25 import sys
Chris@87 26 errmess=sys.stderr.write
Chris@87 27 outmess=sys.stdout.write
Chris@87 28 show=pprint.pprint
Chris@87 29
Chris@87 30 from .auxfuncs import *
Chris@87 31 ##############
Chris@87 32
Chris@87 33 usemodule_rules={
Chris@87 34 'body':"""
Chris@87 35 #begintitle#
Chris@87 36 static char doc_#apiname#[] = \"\\\nVariable wrapper signature:\\n\\
Chris@87 37 \t #name# = get_#name#()\\n\\
Chris@87 38 Arguments:\\n\\
Chris@87 39 #docstr#\";
Chris@87 40 extern F_MODFUNC(#usemodulename#,#USEMODULENAME#,#realname#,#REALNAME#);
Chris@87 41 static PyObject *#apiname#(PyObject *capi_self, PyObject *capi_args) {
Chris@87 42 /*#decl#*/
Chris@87 43 \tif (!PyArg_ParseTuple(capi_args, \"\")) goto capi_fail;
Chris@87 44 printf(\"c: %d\\n\",F_MODFUNC(#usemodulename#,#USEMODULENAME#,#realname#,#REALNAME#));
Chris@87 45 \treturn Py_BuildValue(\"\");
Chris@87 46 capi_fail:
Chris@87 47 \treturn NULL;
Chris@87 48 }
Chris@87 49 """,
Chris@87 50 'method':'\t{\"get_#name#\",#apiname#,METH_VARARGS|METH_KEYWORDS,doc_#apiname#},',
Chris@87 51 'need':['F_MODFUNC']
Chris@87 52 }
Chris@87 53
Chris@87 54 ################
Chris@87 55
Chris@87 56 def buildusevars(m, r):
Chris@87 57 ret={}
Chris@87 58 outmess('\t\tBuilding use variable hooks for module "%s" (feature only for F90/F95)...\n'%(m['name']))
Chris@87 59 varsmap={}
Chris@87 60 revmap={}
Chris@87 61 if 'map' in r:
Chris@87 62 for k in r['map'].keys():
Chris@87 63 if r['map'][k] in revmap:
Chris@87 64 outmess('\t\t\tVariable "%s<=%s" is already mapped by "%s". Skipping.\n'%(r['map'][k], k, revmap[r['map'][k]]))
Chris@87 65 else:
Chris@87 66 revmap[r['map'][k]]=k
Chris@87 67 if 'only' in r and r['only']:
Chris@87 68 for v in r['map'].keys():
Chris@87 69 if r['map'][v] in m['vars']:
Chris@87 70
Chris@87 71 if revmap[r['map'][v]]==v:
Chris@87 72 varsmap[v]=r['map'][v]
Chris@87 73 else:
Chris@87 74 outmess('\t\t\tIgnoring map "%s=>%s". See above.\n'%(v, r['map'][v]))
Chris@87 75 else:
Chris@87 76 outmess('\t\t\tNo definition for variable "%s=>%s". Skipping.\n'%(v, r['map'][v]))
Chris@87 77 else:
Chris@87 78 for v in m['vars'].keys():
Chris@87 79 if v in revmap:
Chris@87 80 varsmap[v]=revmap[v]
Chris@87 81 else:
Chris@87 82 varsmap[v]=v
Chris@87 83 for v in varsmap.keys():
Chris@87 84 ret=dictappend(ret, buildusevar(v, varsmap[v], m['vars'], m['name']))
Chris@87 85 return ret
Chris@87 86 def buildusevar(name, realname, vars, usemodulename):
Chris@87 87 outmess('\t\t\tConstructing wrapper function for variable "%s=>%s"...\n'%(name, realname))
Chris@87 88 ret={}
Chris@87 89 vrd={'name':name,
Chris@87 90 'realname':realname,
Chris@87 91 'REALNAME':realname.upper(),
Chris@87 92 'usemodulename':usemodulename,
Chris@87 93 'USEMODULENAME':usemodulename.upper(),
Chris@87 94 'texname':name.replace('_', '\\_'),
Chris@87 95 'begintitle':gentitle('%s=>%s'%(name, realname)),
Chris@87 96 'endtitle':gentitle('end of %s=>%s'%(name, realname)),
Chris@87 97 'apiname':'#modulename#_use_%s_from_%s'%(realname, usemodulename)
Chris@87 98 }
Chris@87 99 nummap={0:'Ro',1:'Ri',2:'Rii',3:'Riii',4:'Riv',5:'Rv',6:'Rvi',7:'Rvii',8:'Rviii',9:'Rix'}
Chris@87 100 vrd['texnamename']=name
Chris@87 101 for i in nummap.keys():
Chris@87 102 vrd['texnamename']=vrd['texnamename'].replace(repr(i), nummap[i])
Chris@87 103 if hasnote(vars[realname]): vrd['note']=vars[realname]['note']
Chris@87 104 rd=dictappend({}, vrd)
Chris@87 105 var=vars[realname]
Chris@87 106
Chris@87 107 print(name, realname, vars[realname])
Chris@87 108 ret=applyrules(usemodule_rules, rd)
Chris@87 109 return ret