예제 #1
0
    def test_array_values(self):
        """
        Test special.typeof() with ndarray values.
        """
        def check(arr, ndim, layout, mutable, aligned):
            ty = typeof(arr)
            self.assertIsInstance(ty, types.Array)
            self.assertEqual(ty.ndim, ndim)
            self.assertEqual(ty.layout, layout)
            self.assertEqual(ty.mutable, mutable)
            self.assertEqual(ty.aligned, aligned)

        a1 = np.arange(10)
        check(a1, 1, 'C', True, True)
        a2 = np.arange(10).reshape(2, 5)
        check(a2, 2, 'C', True, True)
        check(a2.T, 2, 'F', True, True)
        a3 = (np.arange(60))[::2].reshape((2, 5, 3))
        check(a3, 3, 'A', True, True)
        a4 = np.arange(1).reshape(())
        check(a4, 0, 'C', True, True)
        a4.flags.writeable = False
        check(a4, 0, 'C', False, True)

        # Unsupported dtype
        a5 = a1.astype(a1.dtype.newbyteorder())
        with self.assertRaises(ValueError) as raises:
            typeof(a5)
        self.assertIn("Unsupported array dtype: %s" % (a5.dtype,),
                      str(raises.exception))
예제 #2
0
 def test_slices(self):
     for args in [(1, ), (1, 2), (1, 2, 1), (1, 2, None)]:
         v = slice(*args)
         self.assertIs(typeof(v), types.slice2_type)
     for args in [(1, 2, 2), (1, 2, -1), (None, None, -2)]:
         v = slice(*args)
         self.assertIs(typeof(v), types.slice3_type)
예제 #3
0
    def test_dtype(self):
        dtype = np.dtype("int64")
        self.assertEqual(typeof(dtype), types.DType(types.int64))

        dtype = np.dtype([("m", np.int32), ("n", "S5")])
        rec_ty = numpy_support.from_struct_dtype(dtype)
        self.assertEqual(typeof(dtype), types.DType(rec_ty))
예제 #4
0
 def test_slices(self):
     for args in [(1,), (1, 2), (1, 2, 1), (1, 2, None)]:
         v = slice(*args)
         self.assertIs(typeof(v), types.slice2_type)
     for args in [(1, 2, 2), (1, 2, -1), (None, None, -2)]:
         v = slice(*args)
         self.assertIs(typeof(v), types.slice3_type)
예제 #5
0
    def test_dtype(self):
        dtype = np.dtype('int64')
        self.assertEqual(typeof(dtype), types.DType(types.int64))

        dtype = np.dtype([('m', np.int32), ('n', 'S5')])
        rec_ty = numpy_support.from_struct_dtype(dtype)
        self.assertEqual(typeof(dtype), types.DType(rec_ty))
예제 #6
0
    def test_array_values(self):
        """
        Test special.typeof() with ndarray values.
        """
        def check(arr, ndim, layout, mutable, aligned):
            ty = typeof(arr)
            self.assertIsInstance(ty, types.Array)
            self.assertEqual(ty.ndim, ndim)
            self.assertEqual(ty.layout, layout)
            self.assertEqual(ty.mutable, mutable)
            self.assertEqual(ty.aligned, aligned)

        a1 = np.arange(10)
        check(a1, 1, 'C', True, True)
        a2 = np.arange(10).reshape(2, 5)
        check(a2, 2, 'C', True, True)
        check(a2.T, 2, 'F', True, True)
        a3 = (np.arange(60))[::2].reshape((2, 5, 3))
        check(a3, 3, 'A', True, True)
        a4 = np.arange(1).reshape(())
        check(a4, 0, 'C', True, True)
        a4.flags.writeable = False
        check(a4, 0, 'C', False, True)

        # Unsupported dtype
        a5 = a1.astype(a1.dtype.newbyteorder())
        with self.assertRaises(ValueError) as raises:
            typeof(a5)
        self.assertIn("Unsupported array dtype: %s" % (a5.dtype, ),
                      str(raises.exception))
예제 #7
0
    def test_dtype(self):
        dtype = np.dtype('int64')
        self.assertEqual(typeof(dtype), types.DType(types.int64))

        dtype = np.dtype([('m', np.int32), ('n', 'S5')])
        rec_ty = numpy_support.from_struct_dtype(dtype)
        self.assertEqual(typeof(dtype), types.DType(rec_ty))
예제 #8
0
 def test_tuples(self):
     v = (1, 2)
     self.assertEqual(typeof(v), types.UniTuple(types.intp, 2))
     v = (1, (2.0, 3))
     self.assertEqual(
         typeof(v),
         types.Tuple((types.intp, types.Tuple(
             (types.float64, types.intp)))))
예제 #9
0
 def test_number_values(self):
     """
     Test special.typeof() with scalar number values.
     """
     self.check_number_values(typeof)
     # These values mirror Dispatcher semantics
     self.assertEqual(typeof(1), types.int64)
     self.assertEqual(typeof(-1), types.int64)
예제 #10
0
 def test_ctypes(self):
     ty_cos = typeof(c_cos)
     ty_sin = typeof(c_sin)
     self.assertIsInstance(ty_cos, types.ExternalFunctionPointer)
     self.assertEqual(ty_cos.sig.args, (types.float64,))
     self.assertEqual(ty_cos.sig.return_type, types.float64)
     self.assertEqual(ty_cos, ty_sin)
     self.assertNotEqual(ty_cos.get_pointer(c_cos), ty_sin.get_pointer(c_sin))
예제 #11
0
 def test_tuples(self):
     v = (1, 2)
     self.assertEqual(typeof(v), types.UniTuple(types.intp, 2))
     v = (1, (2.0, 3))
     self.assertEqual(typeof(v),
                      types.Tuple((types.intp,
                                   types.Tuple((types.float64, types.intp))))
                      )
예제 #12
0
 def test_number_values(self):
     """
     Test special.typeof() with scalar number values.
     """
     self.check_number_values(typeof)
     # These values mirror Dispatcher semantics
     self.assertEqual(typeof(1), types.int64)
     self.assertEqual(typeof(-1), types.int64)
예제 #13
0
 def test_ctypes(self):
     ty_cos = typeof(c_cos)
     ty_sin = typeof(c_sin)
     self.assertIsInstance(ty_cos, types.ExternalFunctionPointer)
     self.assertEqual(ty_cos.sig.args, (types.float64, ))
     self.assertEqual(ty_cos.sig.return_type, types.float64)
     self.assertEqual(ty_cos, ty_sin)
     self.assertNotEqual(ty_cos.get_pointer(c_cos),
                         ty_sin.get_pointer(c_sin))
예제 #14
0
 def test_omitted_args(self):
     ty0 = typeof(OmittedArg(0.0))
     ty1 = typeof(OmittedArg(1))
     ty2 = typeof(OmittedArg(1.0))
     ty3 = typeof(OmittedArg(1.0))
     self.assertEqual(ty0, types.Omitted(0.0))
     self.assertEqual(ty1, types.Omitted(1))
     self.assertEqual(ty2, types.Omitted(1.0))
     self.assertEqual(len({ty0, ty1, ty2}), 3)
     self.assertEqual(ty3, ty2)
예제 #15
0
 def test_omitted_args(self):
     ty0 = typeof(OmittedArg(0.0))
     ty1 = typeof(OmittedArg(1))
     ty2 = typeof(OmittedArg(1.0))
     ty3 = typeof(OmittedArg(1.0))
     self.assertEqual(ty0, types.Omitted(0.0))
     self.assertEqual(ty1, types.Omitted(1))
     self.assertEqual(ty2, types.Omitted(1.0))
     self.assertEqual(len({ty0, ty1, ty2}), 3)
     self.assertEqual(ty3, ty2)
예제 #16
0
 def test_namedtuple(self):
     v = Point(1, 2)
     tp_point = typeof(v)
     self.assertEqual(tp_point, types.NamedUniTuple(types.intp, 2, Point))
     v = Point(1, 2.0)
     self.assertEqual(typeof(v), types.NamedTuple([types.intp, types.float64], Point))
     w = Rect(3, 4)
     tp_rect = typeof(w)
     self.assertEqual(tp_rect, types.NamedUniTuple(types.intp, 2, Rect))
     self.assertNotEqual(tp_rect, tp_point)
     self.assertNotEqual(tp_rect, types.UniTuple(tp_rect.dtype, tp_rect.count))
예제 #17
0
 def test_namedtuple(self):
     v = Point(1, 2)
     tp_point = typeof(v)
     self.assertEqual(tp_point, types.NamedUniTuple(types.intp, 2, Point))
     v = Point(1, 2.0)
     self.assertEqual(typeof(v),
                      types.NamedTuple([types.intp, types.float64], Point))
     w = Rect(3, 4)
     tp_rect = typeof(w)
     self.assertEqual(tp_rect, types.NamedUniTuple(types.intp, 2, Rect))
     self.assertNotEqual(tp_rect, tp_point)
     self.assertNotEqual(tp_rect,
                         types.UniTuple(tp_rect.dtype, tp_rect.count))
예제 #18
0
    def test_cffi(self):
        from .cffi_usecases import cffi_cos, cffi_sin

        ty_cffi_cos = typeof(cffi_cos)
        ty_cffi_sin = typeof(cffi_sin)
        self.assertIsInstance(ty_cffi_cos, types.ExternalFunctionPointer)
        self.assertEqual(ty_cffi_cos.sig.args, (types.float64,))
        self.assertEqual(ty_cffi_cos.sig.return_type, types.float64)
        self.assertEqual(ty_cffi_cos, ty_cffi_sin)
        ty_ctypes_cos = typeof(c_cos)
        self.assertNotEqual(ty_cffi_cos, ty_ctypes_cos)
        self.assertNotEqual(ty_cffi_cos.get_pointer(cffi_cos), ty_cffi_sin.get_pointer(cffi_sin))
        self.assertEqual(ty_cffi_cos.get_pointer(cffi_cos), ty_ctypes_cos.get_pointer(c_cos))
예제 #19
0
 def test_cffi(self):
     from .cffi_usecases import cffi_cos, cffi_sin
     ty_cffi_cos = typeof(cffi_cos)
     ty_cffi_sin = typeof(cffi_sin)
     self.assertIsInstance(ty_cffi_cos, types.ExternalFunctionPointer)
     self.assertEqual(ty_cffi_cos.sig.args, (types.float64, ))
     self.assertEqual(ty_cffi_cos.sig.return_type, types.float64)
     self.assertEqual(ty_cffi_cos, ty_cffi_sin)
     ty_ctypes_cos = typeof(c_cos)
     self.assertNotEqual(ty_cffi_cos, ty_ctypes_cos)
     self.assertNotEqual(ty_cffi_cos.get_pointer(cffi_cos),
                         ty_cffi_sin.get_pointer(cffi_sin))
     self.assertEqual(ty_cffi_cos.get_pointer(cffi_cos),
                      ty_ctypes_cos.get_pointer(c_cos))
예제 #20
0
 def check(arr, dtype, ndim, layout, aligned):
     ty = typeof(arr)
     self.assertIsInstance(ty, types.Array)
     self.assertEqual(ty.dtype, dtype)
     self.assertEqual(ty.ndim, ndim)
     self.assertEqual(ty.layout, layout)
     self.assertEqual(ty.aligned, aligned)
예제 #21
0
 def check(arr, ndim, layout, mutable, aligned):
     ty = typeof(arr)
     self.assertIsInstance(ty, types.Array)
     self.assertEqual(ty.ndim, ndim)
     self.assertEqual(ty.layout, layout)
     self.assertEqual(ty.mutable, mutable)
     self.assertEqual(ty.aligned, aligned)
예제 #22
0
    def test_buffers(self):
        if sys.version_info >= (3,):
            b = b"xx"
            ty = typeof(b)
            self.assertEqual(ty, types.Bytes(types.uint8, 1, "C"))
            self.assertFalse(ty.mutable)
            ty = typeof(memoryview(b))
            self.assertEqual(ty, types.MemoryView(types.uint8, 1, "C", readonly=True))
            self.assertFalse(ty.mutable)
            ty = typeof(array.array("i", [0, 1, 2]))
            self.assertEqual(ty, types.PyArray(types.int32, 1, "C"))
            self.assertTrue(ty.mutable)

        b = bytearray(10)
        ty = typeof(b)
        self.assertEqual(ty, types.ByteArray(types.uint8, 1, "C"))
        self.assertTrue(ty.mutable)
예제 #23
0
    def test_buffers(self):
        b = b"xx"
        ty = typeof(b)
        self.assertEqual(ty, types.Bytes(types.uint8, 1, "C"))
        self.assertFalse(ty.mutable)
        ty = typeof(memoryview(b))
        self.assertEqual(ty,
                         types.MemoryView(types.uint8, 1, "C", readonly=True))
        self.assertFalse(ty.mutable)
        ty = typeof(array.array('i', [0, 1, 2]))
        self.assertEqual(ty, types.PyArray(types.int32, 1, "C"))
        self.assertTrue(ty.mutable)

        b = bytearray(10)
        ty = typeof(b)
        self.assertEqual(ty, types.ByteArray(types.uint8, 1, "C"))
        self.assertTrue(ty.mutable)
예제 #24
0
    def test_enum(self):
        tp_red = typeof(Color.red)
        self.assertEqual(tp_red, types.EnumMember(Color, types.intp))
        self.assertEqual(tp_red, typeof(Color.blue))
        tp_choc = typeof(Shake.chocolate)
        self.assertEqual(tp_choc, types.EnumMember(Shake, types.intp))
        self.assertEqual(tp_choc, typeof(Shake.mint))
        self.assertNotEqual(tp_choc, tp_red)
        tp_404 = typeof(RequestError.not_found)
        self.assertEqual(tp_404, types.IntEnumMember(RequestError, types.intp))
        self.assertEqual(tp_404, typeof(RequestError.internal_error))

        with self.assertRaises(ValueError) as raises:
            typeof(HeterogenousEnum.red)
        self.assertEqual(str(raises.exception),
                         "Cannot type heterogenous enum: got value types complex128, float64")
예제 #25
0
    def test_enum(self):
        tp_red = typeof(Color.red)
        self.assertEqual(tp_red, types.EnumMember(Color, types.intp))
        self.assertEqual(tp_red, typeof(Color.blue))
        tp_choc = typeof(Shake.chocolate)
        self.assertEqual(tp_choc, types.EnumMember(Shake, types.intp))
        self.assertEqual(tp_choc, typeof(Shake.mint))
        self.assertNotEqual(tp_choc, tp_red)
        tp_404 = typeof(RequestError.not_found)
        self.assertEqual(tp_404, types.IntEnumMember(RequestError, types.intp))
        self.assertEqual(tp_404, typeof(RequestError.internal_error))

        with self.assertRaises(ValueError) as raises:
            typeof(HeterogeneousEnum.red)
        self.assertEqual(str(raises.exception),
                         "Cannot type heterogeneous enum: got value types complex128, float64")
예제 #26
0
    def test_enum_class(self):
        tp_color = typeof(Color)
        self.assertEqual(tp_color, types.EnumClass(Color, types.intp))
        tp_shake = typeof(Shake)
        self.assertEqual(tp_shake, types.EnumClass(Shake, types.intp))
        self.assertNotEqual(tp_shake, tp_color)
        tp_shape = typeof(Shape)
        self.assertEqual(tp_shape, types.IntEnumClass(Shape, types.intp))
        tp_error = typeof(RequestError)
        self.assertEqual(tp_error,
                         types.IntEnumClass(RequestError, types.intp))
        self.assertNotEqual(tp_error, tp_shape)

        with self.assertRaises(ValueError) as raises:
            typeof(HeterogenousEnum)
        self.assertEqual(str(raises.exception),
                         "Cannot type heterogenous enum: got value types complex128, float64")
예제 #27
0
    def test_enum_class(self):
        tp_color = typeof(Color)
        self.assertEqual(tp_color, types.EnumClass(Color, types.intp))
        tp_shake = typeof(Shake)
        self.assertEqual(tp_shake, types.EnumClass(Shake, types.intp))
        self.assertNotEqual(tp_shake, tp_color)
        tp_shape = typeof(Shape)
        self.assertEqual(tp_shape, types.IntEnumClass(Shape, types.intp))
        tp_error = typeof(RequestError)
        self.assertEqual(tp_error,
                         types.IntEnumClass(RequestError, types.intp))
        self.assertNotEqual(tp_error, tp_shape)

        with self.assertRaises(ValueError) as raises:
            typeof(HeterogeneousEnum)
        self.assertEqual(str(raises.exception),
                         "Cannot type heterogeneous enum: got value types complex128, float64")
예제 #28
0
 def test_lists(self):
     v = [1.0] * 100
     self.assertEqual(typeof(v), types.List(types.float64, reflected=True))
예제 #29
0
 def test_sets(self):
     v = set([1.0, 2.0, 3.0])
     self.assertEqual(typeof(v), types.Set(types.float64, reflected=True))
     v = frozenset(v)
     with self.assertRaises(ValueError):
         typeof(v)
예제 #30
0
 def test_lists(self):
     v = [1.0] * 100
     self.assertEqual(typeof(v), types.List(types.float64, reflected=True))
예제 #31
0
 def test_sets(self):
     v = set([1.0, 2.0, 3.0])
     self.assertEqual(typeof(v), types.Set(types.float64, reflected=True))
     v = frozenset(v)
     self.assertIs(typeof(v), None)
예제 #32
0
 def test_ellipsis(self):
     ty = typeof(Ellipsis)
     self.assertEqual(ty, types.ellipsis)
예제 #33
0
 def test_str(self):
     ty = typeof("abc")
     self.assertEqual(ty, types.string)
예제 #34
0
 def test_dtype_values(self):
     self.assertEqual(typeof(np.int64), types.NumberClass(types.int64))
     self.assertEqual(typeof(np.float64), types.NumberClass(types.float64))
     self.assertEqual(typeof(np.int32), types.NumberClass(types.int32))
     self.assertEqual(typeof(np.int8), types.NumberClass(types.int8))
예제 #35
0
 def test_str(self):
     ty = typeof("abc")
     self.assertEqual(ty, types.string)
예제 #36
0
 def test_custom(self):
     ty = typeof(Custom())
     self.assertEqual(ty, types.UniTuple(types.boolean, 42))
예제 #37
0
 def test_custom(self):
     ty = typeof(Custom())
     self.assertEqual(ty, types.UniTuple(types.boolean, 42))
예제 #38
0
 def test_sets(self):
     v = set([1.0, 2.0, 3.0])
     self.assertEqual(typeof(v), types.Set(types.float64, reflected=True))
     v = frozenset(v)
     with self.assertRaises(ValueError):
         typeof(v)
예제 #39
0
파일: test_typeof.py 프로젝트: esc/numba
 def test_dtype_values(self):
     self.assertEqual(typeof(np.int64), types.NumberClass(types.int64))
     self.assertEqual(typeof(np.float64), types.NumberClass(types.float64))
     self.assertEqual(typeof(np.int32), types.NumberClass(types.int32))
     self.assertEqual(typeof(np.int8), types.NumberClass(types.int8))
예제 #40
0
 def check(arr, ndim, layout, mutable):
     ty = special.typeof(arr)
     self.assertIsInstance(ty, types.Array)
     self.assertEqual(ty.ndim, ndim)
     self.assertEqual(ty.layout, layout)
     self.assertEqual(ty.mutable, mutable)
예제 #41
0
 def check(arr, dtype, ndim, layout):
     ty = typeof(arr)
     self.assertIsInstance(ty, types.Array)
     self.assertEqual(ty.dtype, dtype)
     self.assertEqual(ty.ndim, ndim)
     self.assertEqual(ty.layout, layout)
예제 #42
0
 def test_typeof(self):
     self.assertEqual(typeof(numpy.int8(1)), types.int8)
     self.assertEqual(typeof(numpy.uint16(1)), types.uint16)
     self.assertEqual(typeof(numpy.float64(1)), types.float64)
     self.assertEqual(typeof(numpy.complex128(1)), types.complex128)
예제 #43
0
 def check(arr, ndim, layout, mutable):
     ty = typeof(arr)
     self.assertIsInstance(ty, types.Array)
     self.assertEqual(ty.ndim, ndim)
     self.assertEqual(ty.layout, layout)
     self.assertEqual(ty.mutable, mutable)
예제 #44
0
파일: test_typeof.py 프로젝트: EGQM/numba
 def test_sets(self):
     v = set([1.0, 2.0, 3.0])
     self.assertEqual(typeof(v), types.Set(types.float64, reflected=True))
     v = frozenset(v)
     self.assertIs(typeof(v), None)
예제 #45
0
 def test_none(self):
     ty = typeof(None)
     self.assertEqual(ty, types.none)
예제 #46
0
 def test_ellipsis(self):
     ty = typeof(Ellipsis)
     self.assertEqual(ty, types.ellipsis)
예제 #47
0
 def test_none(self):
     ty = typeof(None)
     self.assertEqual(ty, types.none)
예제 #48
0
 def test_typeof(self):
     self.assertEqual(typeof(numpy.int8(1)), types.int8)
     self.assertEqual(typeof(numpy.uint16(1)), types.uint16)
     self.assertEqual(typeof(numpy.float64(1)), types.float64)
     self.assertEqual(typeof(numpy.complex128(1)), types.complex128)