def fix_python_api(): """ Execute once to install special symbols into the LLVM symbol table """ c_helpers = _helperlib.c_helpers le.dylib_add_symbol("Py_None", ctypes.addressof(_PyNone)) le.dylib_add_symbol("NumbaArrayAdaptor", _numpyadapt.get_ndarray_adaptor()) le.dylib_add_symbol("NumbaNDArrayNew", _numpyadapt.get_ndarray_new()) le.dylib_add_symbol("NumbaComplexAdaptor", c_helpers["complex_adaptor"]) le.dylib_add_symbol("NumbaNativeError", id(NativeError)) le.dylib_add_symbol("NumbaExtractRecordData", c_helpers["extract_record_data"]) le.dylib_add_symbol("NumbaReleaseRecordBuffer", c_helpers["release_record_buffer"]) le.dylib_add_symbol("NumbaRecreateRecord", c_helpers["recreate_record"]) le.dylib_add_symbol("NumbaGILEnsure", c_helpers["gil_ensure"]) le.dylib_add_symbol("NumbaGILRelease", c_helpers["gil_release"]) # Add all built-in exception classes for obj in utils.builtins.__dict__.values(): if isinstance(obj, type) and issubclass(obj, BaseException): le.dylib_add_symbol("PyExc_%s" % (obj.__name__), id(obj))
def fix_python_api(): """ Execute once to install special symbols into the LLVM symbol table """ le.dylib_add_symbol("Py_None", ctypes.addressof(_PyNone)) le.dylib_add_symbol("NumbaArrayAdaptor", _numpyadapt.get_ndarray_adaptor()) le.dylib_add_symbol("NumbaComplexAdaptor", _helperlib.get_complex_adaptor()) le.dylib_add_symbol("NumbaNativeError", id(NativeError)) le.dylib_add_symbol("PyExc_NameError", id(NameError))
def test_array_adaptor(self): arystruct = ArrayStruct3D() adaptorptr = get_ndarray_adaptor() adaptor = PYFUNCTYPE(c_int, py_object, c_void_p)(adaptorptr) ary = numpy.arange(60).reshape(2, 3, 10) status = adaptor(ary, byref(arystruct)) self.assertEqual(status, 0) self.assertEqual(arystruct.data, ary.ctypes.data) for i in range(3): self.assertEqual(arystruct.shape[i], ary.ctypes.shape[i]) self.assertEqual(arystruct.strides[i], ary.ctypes.strides[i])
def fix_python_api(): """ Execute once to install special symbols into the LLVM symbol table """ le.dylib_add_symbol("Py_None", ctypes.addressof(_PyNone)) le.dylib_add_symbol("NumbaArrayAdaptor", _numpyadapt.get_ndarray_adaptor()) le.dylib_add_symbol("NumbaComplexAdaptor", _helperlib.get_complex_adaptor()) le.dylib_add_symbol("NumbaNativeError", id(NativeError)) le.dylib_add_symbol("NumbaExtractRecordData", _helperlib.get_extract_record_data()) le.dylib_add_symbol("NumbaReleaseRecordBuffer", _helperlib.get_release_record_buffer()) le.dylib_add_symbol("NumbaRecreateRecord", _helperlib.get_recreate_record()) le.dylib_add_symbol("PyExc_NameError", id(NameError))