Пример #1
0
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))
Пример #2
0
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))
Пример #3
0
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))
Пример #4
0
    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])
Пример #5
0
    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])
Пример #6
0
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))
Пример #7
0
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))