def do_generate_api(targets, sources): header_file = targets[0] c_file = targets[1] doc_file = targets[2] ufunc_api_index = genapi.merge_api_dicts(( numpy_api.ufunc_funcs_api, numpy_api.ufunc_types_api)) genapi.check_api_dict(ufunc_api_index) ufunc_api_list = genapi.get_api_functions('UFUNC_API', numpy_api.ufunc_funcs_api) # Create dict name -> *Api instance ufunc_api_dict = {} api_name = 'PyUFunc_API' for f in ufunc_api_list: name = f.name index = ufunc_api_index[name] ufunc_api_dict[name] = FunctionApi(f.name, index, f.return_type, f.args, api_name) for name, index in numpy_api.ufunc_types_api.items(): ufunc_api_dict[name] = TypeApi(name, index, 'PyTypeObject', api_name) # set up object API module_list = [] extension_list = [] init_list = [] for name, index in genapi.order_dict(ufunc_api_index): api_item = ufunc_api_dict[name] extension_list.append(api_item.define_from_array_api_string()) init_list.append(api_item.array_api_define()) module_list.append(api_item.internal_define()) # Write to header fid = open(header_file, 'w') s = h_template % ('\n'.join(module_list), '\n'.join(extension_list)) fid.write(s) fid.close() # Write to c-code fid = open(c_file, 'w') s = c_template % ',\n'.join(init_list) fid.write(s) fid.close() # Write to documentation fid = open(doc_file, 'w') fid.write(''' ================= Numpy Ufunc C-API ================= ''') for func in ufunc_api_list: fid.write(func.to_ReST()) fid.write('\n\n') fid.close() return targets
def do_generate_api(targets, sources): header_file = targets[0] c_file = targets[1] doc_file = targets[2] numpyapi_list = genapi.get_api_functions('NUMPY_API', sources[0]) # API fixes for __arrayobject_api.h fixed = 10 numtypes = len(types) + fixed module_list = [] extension_list = [] init_list = [] # setup types for k, atype in enumerate(types): num = fixed + k astr = " (void *) &Py%sArrType_Type," % types[k] init_list.append(astr) astr = """\ #ifdef NPY_ENABLE_SEPARATE_COMPILATION extern NPY_NO_EXPORT PyTypeObject Py%(type)sArrType_Type; #else NPY_NO_EXPORT PyTypeObject Py%(type)sArrType_Type; #endif """ % {'type': types[k]} module_list.append(astr) astr = "#define Py%sArrType_Type (*(PyTypeObject *)PyArray_API[%d])" % \ (types[k], num) extension_list.append(astr) # set up object API genapi.add_api_list(numtypes, 'PyArray_API', numpyapi_list, module_list, extension_list, init_list) # Write to header fid = open(header_file, 'w') s = h_template % ('\n'.join(module_list), '\n'.join(extension_list)) fid.write(s) fid.close() # Write to c-code fid = open(c_file, 'w') s = c_template % '\n'.join(init_list) fid.write(s) fid.close() # write to documentation fid = open(doc_file, 'w') fid.write(c_api_header) for func in numpyapi_list: fid.write(func.to_ReST()) fid.write('\n\n') fid.close() return targets
def do_generate_api(targets, sources): header_file = targets[0] c_file = targets[1] doc_file = targets[2] numpyapi_list = genapi.get_api_functions('NUMPY_API', sources[0]) # API fixes for __arrayobject_api.h fixed = 10 numtypes = len(types) + fixed module_list = [] extension_list = [] init_list = [] # setup types for k, atype in enumerate(types): num = fixed + k astr = " (void *) &Py%sArrType_Type," % types[k] init_list.append(astr) astr = "static PyTypeObject Py%sArrType_Type;" % types[k] module_list.append(astr) astr = "#define Py%sArrType_Type (*(PyTypeObject *)PyArray_API[%d])" % \ (types[k], num) extension_list.append(astr) # set up object API genapi.add_api_list(numtypes, 'PyArray_API', numpyapi_list, module_list, extension_list, init_list) # Write to header fid = open(header_file, 'w') s = h_template % ('\n'.join(module_list), '\n'.join(extension_list)) fid.write(s) fid.close() # Write to c-code fid = open(c_file, 'w') s = c_template % '\n'.join(init_list) fid.write(s) fid.close() # write to documentation fid = open(doc_file, 'w') fid.write(c_api_header) for func in numpyapi_list: fid.write(func.to_ReST()) fid.write('\n\n') fid.close() return targets
def do_generate_api(targets, sources): header_file = targets[0] c_file = targets[1] doc_file = targets[2] ufunc_api_list = genapi.get_api_functions("UFUNC_API", sources[0]) # API fixes for __arrayobject_api.h fixed = 1 nummulti = len(ufunc_api_list) numtotal = fixed + nummulti module_list = [] extension_list = [] init_list = [] # set up object API genapi.add_api_list(fixed, "PyUFunc_API", ufunc_api_list, module_list, extension_list, init_list) # Write to header fid = open(header_file, "w") s = h_template % ("\n".join(module_list), "\n".join(extension_list)) fid.write(s) fid.close() # Write to c-code fid = open(c_file, "w") s = c_template % "\n".join(init_list) fid.write(s) fid.close() # Write to documentation fid = open(doc_file, "w") fid.write( """ ================= Numpy Ufunc C-API ================= """ ) for func in ufunc_api_list: fid.write(func.to_ReST()) fid.write("\n\n") fid.close() return targets
def do_generate_api(targets, sources): header_file = targets[0] c_file = targets[1] doc_file = targets[2] ufunc_api_list = genapi.get_api_functions('UFUNC_API', sources[0]) # API fixes for __arrayobject_api.h fixed = 1 nummulti = len(ufunc_api_list) numtotal = fixed + nummulti module_list = [] extension_list = [] init_list = [] # set up object API genapi.add_api_list(fixed, 'PyUFunc_API', ufunc_api_list, module_list, extension_list, init_list) # Write to header fid = open(header_file, 'w') s = h_template % ('\n'.join(module_list), '\n'.join(extension_list)) fid.write(s) fid.close() # Write to c-code fid = open(c_file, 'w') s = c_template % '\n'.join(init_list) fid.write(s) fid.close() # Write to documentation fid = open(doc_file, 'w') fid.write(''' ================= Numpy Ufunc C-API ================= ''') for func in ufunc_api_list: fid.write(func.to_ReST()) fid.write('\n\n') fid.close() return targets
def do_generate_api(targets, sources): header_file = targets[0] c_file = targets[1] doc_file = targets[2] global_vars = sources[0] scalar_bool_values = sources[1] types_api = sources[2] multiarray_funcs = sources[3] multiarray_api = sources[:] module_list = [] extension_list = [] init_list = [] # Check multiarray api indexes multiarray_api_index = genapi.merge_api_dicts(multiarray_api) genapi.check_api_dict(multiarray_api_index) numpyapi_list = genapi.get_api_functions('NUMPY_API', multiarray_funcs) ordered_funcs_api = genapi.order_dict(multiarray_funcs) # Create dict name -> *Api instance api_name = 'PyArray_API' multiarray_api_dict = {} for f in numpyapi_list: name = f.name index = multiarray_funcs[name][0] annotations = multiarray_funcs[name][1:] multiarray_api_dict[f.name] = FunctionApi(f.name, index, annotations, f.return_type, f.args, api_name) for name, val in global_vars.items(): index, type = val multiarray_api_dict[name] = GlobalVarApi(name, index, type, api_name) for name, val in scalar_bool_values.items(): index = val[0] multiarray_api_dict[name] = BoolValuesApi(name, index, api_name) for name, val in types_api.items(): index = val[0] multiarray_api_dict[name] = TypeApi(name, index, 'PyTypeObject', api_name) if len(multiarray_api_dict) != len(multiarray_api_index): keys_dict = set(multiarray_api_dict.keys()) keys_index = set(multiarray_api_index.keys()) raise AssertionError( "Multiarray API size mismatch - " "index has extra keys {}, dict has extra keys {}".format( keys_index - keys_dict, keys_dict - keys_index)) extension_list = [] for name, index in genapi.order_dict(multiarray_api_index): api_item = multiarray_api_dict[name] extension_list.append(api_item.define_from_array_api_string()) init_list.append(api_item.array_api_define()) module_list.append(api_item.internal_define()) # Write to header s = h_template % ('\n'.join(module_list), '\n'.join(extension_list)) genapi.write_file(header_file, s) # Write to c-code s = c_template % ',\n'.join(init_list) genapi.write_file(c_file, s) # write to documentation s = c_api_header for func in numpyapi_list: s += func.to_ReST() s += '\n\n' genapi.write_file(doc_file, s) return targets
def do_generate_api(targets, sources): header_file = targets[0] c_file = targets[1] doc_file = targets[2] global_vars = sources[0] global_vars_types = sources[1] scalar_bool_values = sources[2] types_api = sources[3] multiarray_funcs = sources[4] # Remove global_vars_type: not a api dict multiarray_api = sources[:1] + sources[2:] module_list = [] extension_list = [] init_list = [] # Check multiarray api indexes multiarray_api_index = genapi.merge_api_dicts(multiarray_api) genapi.check_api_dict(multiarray_api_index) numpyapi_list = genapi.get_api_functions('NUMPY_API', multiarray_funcs) ordered_funcs_api = genapi.order_dict(multiarray_funcs) # Create dict name -> *Api instance api_name = 'PyArray_API' multiarray_api_dict = {} for f in numpyapi_list: name = f.name index = multiarray_funcs[name] multiarray_api_dict[f.name] = FunctionApi(f.name, index, f.return_type, f.args, api_name) for name, index in global_vars.items(): type = global_vars_types[name] multiarray_api_dict[name] = GlobalVarApi(name, index, type, api_name) for name, index in scalar_bool_values.items(): multiarray_api_dict[name] = BoolValuesApi(name, index, api_name) for name, index in types_api.items(): multiarray_api_dict[name] = TypeApi(name, index, 'PyTypeObject', api_name) if len(multiarray_api_dict) != len(multiarray_api_index): raise AssertionError("Multiarray API size mismatch %d %d" % (len(multiarray_api_dict), len(multiarray_api_index))) extension_list = [] for name, index in genapi.order_dict(multiarray_api_index): api_item = multiarray_api_dict[name] extension_list.append(api_item.define_from_array_api_string()) init_list.append(api_item.array_api_define()) module_list.append(api_item.internal_define()) # Write to header fid = open(header_file, 'w') s = h_template % ('\n'.join(module_list), '\n'.join(extension_list)) fid.write(s) fid.close() # Write to c-code fid = open(c_file, 'w') s = c_template % ',\n'.join(init_list) fid.write(s) fid.close() # write to documentation fid = open(doc_file, 'w') fid.write(c_api_header) for func in numpyapi_list: fid.write(func.to_ReST()) fid.write('\n\n') fid.close() return targets
def do_generate_api(targets, sources): header_file = targets[0] c_file = targets[1] doc_file = targets[2] global_vars = sources[0] global_vars_types = sources[1] scalar_bool_values = sources[2] types_api = sources[3] multiarray_funcs = sources[4] # Remove global_vars_type: not a api dict multiarray_api = sources[:1] + sources[2:] module_list = [] extension_list = [] init_list = [] # Check multiarray api indexes multiarray_api_index = genapi.merge_api_dicts(multiarray_api) genapi.check_api_dict(multiarray_api_index) numpyapi_list = genapi.get_api_functions('NUMPY_API', multiarray_funcs) ordered_funcs_api = genapi.order_dict(multiarray_funcs) # Create dict name -> *Api instance api_name = 'PyArray_API' multiarray_api_dict = {} for f in numpyapi_list: name = f.name index = multiarray_funcs[name] multiarray_api_dict[f.name] = FunctionApi(f.name, index, f.return_type, f.args, api_name) for name, index in list(global_vars.items()): type = global_vars_types[name] multiarray_api_dict[name] = GlobalVarApi(name, index, type, api_name) for name, index in list(scalar_bool_values.items()): multiarray_api_dict[name] = BoolValuesApi(name, index, api_name) for name, index in list(types_api.items()): multiarray_api_dict[name] = TypeApi(name, index, 'PyTypeObject', api_name) if len(multiarray_api_dict) != len(multiarray_api_index): raise AssertionError("Multiarray API size mismatch %d %d" % \ (len(multiarray_api_dict), len(multiarray_api_index))) extension_list = [] for name, index in genapi.order_dict(multiarray_api_index): api_item = multiarray_api_dict[name] extension_list.append(api_item.define_from_array_api_string()) init_list.append(api_item.array_api_define()) module_list.append(api_item.internal_define()) # Write to header fid = open(header_file, 'w') s = h_template % ('\n'.join(module_list), '\n'.join(extension_list)) fid.write(s) fid.close() # Write to c-code fid = open(c_file, 'w') s = c_template % ',\n'.join(init_list) fid.write(s) fid.close() # write to documentation fid = open(doc_file, 'w') fid.write(c_api_header) for func in numpyapi_list: fid.write(func.to_ReST()) fid.write('\n\n') fid.close() return targets
def do_generate_api(targets, sources): header_file = targets[0] c_file = targets[1] doc_file = targets[2] global_vars = sources[0] scalar_bool_values = sources[1] types_api = sources[2] multiarray_funcs = sources[3] multiarray_api = sources[:] module_list = [] extension_list = [] init_list = [] # Check multiarray api indexes multiarray_api_index = genapi.merge_api_dicts(multiarray_api) genapi.check_api_dict(multiarray_api_index) numpyapi_list = genapi.get_api_functions("NUMPY_API", multiarray_funcs) ordered_funcs_api = genapi.order_dict(multiarray_funcs) # Create dict name -> *Api instance api_name = "PyArray_API" multiarray_api_dict = {} for f in numpyapi_list: name = f.name index = multiarray_funcs[name][0] annotations = multiarray_funcs[name][1:] multiarray_api_dict[f.name] = FunctionApi(f.name, index, annotations, f.return_type, f.args, api_name) for name, val in global_vars.items(): index, type = val multiarray_api_dict[name] = GlobalVarApi(name, index, type, api_name) for name, val in scalar_bool_values.items(): index = val[0] multiarray_api_dict[name] = BoolValuesApi(name, index, api_name) for name, val in types_api.items(): index = val[0] multiarray_api_dict[name] = TypeApi(name, index, "PyTypeObject", api_name) if len(multiarray_api_dict) != len(multiarray_api_index): raise AssertionError( "Multiarray API size mismatch %d %d" % (len(multiarray_api_dict), len(multiarray_api_index)) ) extension_list = [] for name, index in genapi.order_dict(multiarray_api_index): api_item = multiarray_api_dict[name] extension_list.append(api_item.define_from_array_api_string()) init_list.append(api_item.array_api_define()) module_list.append(api_item.internal_define()) # Write to header fid = open(header_file, "w") if "__pypy__" in sys.builtin_module_names: s = h_pypy_template else: s = h_template % ("\n".join(module_list), "\n".join(extension_list)) fid.write(s) fid.close() # Write to c-code fid = open(c_file, "w") if "__pypy__" not in sys.builtin_module_names: s = c_template % ",\n".join(init_list) fid.write(s) fid.close() # write to documentation fid = open(doc_file, "w") fid.write(c_api_header) for func in numpyapi_list: fid.write(func.to_ReST()) fid.write("\n\n") fid.close() return targets
def do_generate_api(targets, sources): header_file = targets[0] c_file = targets[1] doc_file = targets[2] global_vars = sources[0] scalar_bool_values = sources[1] types_api = sources[2] multiarray_funcs = sources[3] multiarray_api = sources[:] module_list = [] extension_list = [] init_list = [] # Check multiarray api indexes multiarray_api_index = genapi.merge_api_dicts(multiarray_api) genapi.check_api_dict(multiarray_api_index) numpyapi_list = genapi.get_api_functions('NUMPY_API', multiarray_funcs) # FIXME: ordered_funcs_api is unused ordered_funcs_api = genapi.order_dict(multiarray_funcs) # Create dict name -> *Api instance api_name = 'PyArray_API' multiarray_api_dict = {} for f in numpyapi_list: name = f.name index = multiarray_funcs[name][0] annotations = multiarray_funcs[name][1:] multiarray_api_dict[f.name] = FunctionApi(f.name, index, annotations, f.return_type, f.args, api_name) for name, val in global_vars.items(): index, type = val multiarray_api_dict[name] = GlobalVarApi(name, index, type, api_name) for name, val in scalar_bool_values.items(): index = val[0] multiarray_api_dict[name] = BoolValuesApi(name, index, api_name) for name, val in types_api.items(): index = val[0] multiarray_api_dict[name] = TypeApi(name, index, 'PyTypeObject', api_name) if len(multiarray_api_dict) != len(multiarray_api_index): keys_dict = set(multiarray_api_dict.keys()) keys_index = set(multiarray_api_index.keys()) raise AssertionError( "Multiarray API size mismatch - " "index has extra keys {}, dict has extra keys {}" .format(keys_index - keys_dict, keys_dict - keys_index) ) extension_list = [] for name, index in genapi.order_dict(multiarray_api_index): api_item = multiarray_api_dict[name] extension_list.append(api_item.define_from_array_api_string()) init_list.append(api_item.array_api_define()) module_list.append(api_item.internal_define()) # Write to header s = h_template % ('\n'.join(module_list), '\n'.join(extension_list)) genapi.write_file(header_file, s) # Write to c-code s = c_template % ',\n'.join(init_list) genapi.write_file(c_file, s) # write to documentation s = c_api_header for func in numpyapi_list: s += func.to_ReST() s += '\n\n' genapi.write_file(doc_file, s) return targets
def generate_api(output_dir, force=False): header_file = os.path.join(output_dir, "__multiarray_api.h") c_file = os.path.join(output_dir, "__multiarray_api.c") doc_file = os.path.join(output_dir, "multiarray_api.txt") targets = (header_file, c_file, doc_file) if not force and not genapi.should_rebuild(targets, [OBJECT_API_ORDER, MULTIARRAY_API_ORDER, __file__]): return targets objectapi_list = genapi.get_api_functions("OBJECT_API", OBJECT_API_ORDER) multiapi_list = genapi.get_api_functions("MULTIARRAY_API", MULTIARRAY_API_ORDER) # API fixes for __arrayobject_api.h fixed = 10 numtypes = len(types) + fixed numobject = len(objectapi_list) + numtypes nummulti = len(multiapi_list) numtotal = numobject + nummulti module_list = [] extension_list = [] init_list = [] # setup types for k, atype in enumerate(types): num = fixed + k astr = " (void *) &Py%sArrType_Type," % types[k] init_list.append(astr) astr = "static PyTypeObject Py%sArrType_Type;" % types[k] module_list.append(astr) astr = "#define Py%sArrType_Type (*(PyTypeObject *)PyArray_API[%d])" % (types[k], num) extension_list.append(astr) # set up object API genapi.add_api_list(numtypes, "PyArray_API", objectapi_list, module_list, extension_list, init_list) # set up multiarray module API genapi.add_api_list(numobject, "PyArray_API", multiapi_list, module_list, extension_list, init_list) # Write to header fid = open(header_file, "w") s = h_template % ("\n".join(module_list), "\n".join(extension_list)) fid.write(s) fid.close() # Write to c-code fid = open(c_file, "w") s = c_template % "\n".join(init_list) fid.write(s) fid.close() # write to documentation fid = open(doc_file, "w") fid.write( """ =========== Numpy C-API =========== Object API ========== """ ) for func in objectapi_list: fid.write(func.to_ReST()) fid.write("\n\n") fid.write( """ Multiarray API ============== """ ) for func in multiapi_list: fid.write(func.to_ReST()) fid.write("\n\n") fid.close() return targets
def generate_api(output_dir, force=False): header_file = os.path.join(output_dir, '__multiarray_api.h') c_file = os.path.join(output_dir,'__multiarray_api.c') doc_file = os.path.join(output_dir, 'multiarray_api.txt') targets = (header_file, c_file, doc_file) if (not force and not genapi.should_rebuild(targets, [OBJECT_API_ORDER, MULTIARRAY_API_ORDER, __file__])): return targets objectapi_list = genapi.get_api_functions('OBJECT_API', OBJECT_API_ORDER) multiapi_list = genapi.get_api_functions('MULTIARRAY_API', MULTIARRAY_API_ORDER) # API fixes for __arrayobject_api.h fixed = 10 numtypes = len(types) + fixed numobject = len(objectapi_list) + numtypes nummulti = len(multiapi_list) numtotal = numobject + nummulti module_list = [] extension_list = [] init_list = [] # setup types for k, atype in enumerate(types): num = fixed + k astr = " (void *) &Py%sArrType_Type," % types[k] init_list.append(astr) astr = "static PyTypeObject Py%sArrType_Type;" % types[k] module_list.append(astr) astr = "#define Py%sArrType_Type (*(PyTypeObject *)PyArray_API[%d])" % \ (types[k], num) extension_list.append(astr) # set up object API genapi.add_api_list(numtypes, 'PyArray_API', objectapi_list, module_list, extension_list, init_list) # set up multiarray module API genapi.add_api_list(numobject, 'PyArray_API', multiapi_list, module_list, extension_list, init_list) # Write to header fid = open(header_file, 'w') s = h_template % ('\n'.join(module_list), '\n'.join(extension_list)) fid.write(s) fid.close() # Write to c-code fid = open(c_file, 'w') s = c_template % '\n'.join(init_list) fid.write(s) fid.close() # write to documentation fid = open(doc_file, 'w') fid.write(''' =========== Numpy C-API =========== Object API ========== ''') for func in objectapi_list: fid.write(func.to_ReST()) fid.write('\n\n') fid.write(''' Multiarray API ============== ''') for func in multiapi_list: fid.write(func.to_ReST()) fid.write('\n\n') fid.close() return targets
def do_generate_api(targets, sources): header_file = targets[0] c_file = targets[1] doc_file = targets[2] objectapi_list = genapi.get_api_functions('OBJECT_API', sources[0]) multiapi_list = genapi.get_api_functions('MULTIARRAY_API', sources[1]) # API fixes for __arrayobject_api.h fixed = 10 numtypes = len(types) + fixed numobject = len(objectapi_list) + numtypes nummulti = len(multiapi_list) numtotal = numobject + nummulti module_list = [] extension_list = [] init_list = [] # setup types for k, atype in enumerate(types): num = fixed + k astr = " (void *) &Py%sArrType_Type," % types[k] init_list.append(astr) astr = "static PyTypeObject Py%sArrType_Type;" % types[k] module_list.append(astr) astr = "#define Py%sArrType_Type (*(PyTypeObject *)PyArray_API[%d])" % \ (types[k], num) extension_list.append(astr) # set up object API genapi.add_api_list(numtypes, 'PyArray_API', objectapi_list, module_list, extension_list, init_list) # set up multiarray module API genapi.add_api_list(numobject, 'PyArray_API', multiapi_list, module_list, extension_list, init_list) # Write to header fid = open(header_file, 'w') s = h_template % ('\n'.join(module_list), '\n'.join(extension_list)) fid.write(s) fid.close() # Write to c-code fid = open(c_file, 'w') s = c_template % '\n'.join(init_list) fid.write(s) fid.close() # write to documentation fid = open(doc_file, 'w') fid.write(''' =========== Numpy C-API =========== Object API ========== ''') for func in objectapi_list: fid.write(func.to_ReST()) fid.write('\n\n') fid.write(''' Multiarray API ============== ''') for func in multiapi_list: fid.write(func.to_ReST()) fid.write('\n\n') fid.close() return targets