def test_dynd_view_of_numpy_array(self):
        # Tests viewing a numpy array as a dynd.array
        nonnative = self.nonnative

        a = np.arange(10, dtype=np.int32)
        n = nd.view(a)
        self.assertEqual(nd.dtype_of(n), ndt.int32)
        self.assertEqual(nd.ndim_of(n), a.ndim)
        self.assertEqual(n.shape, a.shape)
        self.assertEqual(n.strides, a.strides)

        """
        a = np.arange(12, dtype=(nonnative + 'i4')).reshape(3,4)
        n = nd.view(a)
        self.assertEqual(nd.dtype_of(n), ndt.make_byteswap(ndt.int32))
        self.assertEqual(nd.ndim_of(n), a.ndim)
        self.assertEqual(n.shape, a.shape)
        self.assertEqual(n.strides, a.strides)
        """

        a = np.arange(49, dtype='i1')
        a = a[1:].view(dtype=np.int32).reshape(4,3)
        n = nd.view(a)
        self.assertEqual(nd.dtype_of(n), ndt.make_unaligned(ndt.int32))
        self.assertEqual(nd.ndim_of(n), a.ndim)
        self.assertEqual(n.shape, a.shape)
        self.assertEqual(n.strides, a.strides)

        """
    def test_dynd_view_of_numpy_array(self):
        # Tests viewing a numpy array as a dynd.array
        nonnative = self.nonnative

        a = np.arange(10, dtype=np.int32)
        n = nd.view(a)
        self.assertEqual(nd.dtype_of(n), ndt.int32)
        self.assertEqual(nd.ndim_of(n), a.ndim)
        self.assertEqual(n.shape, a.shape)
        self.assertEqual(n.strides, a.strides)

        a = np.arange(12, dtype=(nonnative + 'i4')).reshape(3,4)
        n = nd.view(a)
        self.assertEqual(nd.dtype_of(n), ndt.make_byteswap(ndt.int32))
        self.assertEqual(nd.ndim_of(n), a.ndim)
        self.assertEqual(n.shape, a.shape)
        self.assertEqual(n.strides, a.strides)

        a = np.arange(49, dtype='i1')
        a = a[1:].view(dtype=np.int32).reshape(4,3)
        n = nd.view(a)
        self.assertEqual(nd.dtype_of(n), ndt.make_unaligned(ndt.int32))
        self.assertEqual(nd.ndim_of(n), a.ndim)
        self.assertEqual(n.shape, a.shape)
        self.assertEqual(n.strides, a.strides)

        a = np.arange(49, dtype='i1')
        a = a[1:].view(dtype=(nonnative + 'i4')).reshape(2,2,3)
        n = nd.view(a)
        self.assertEqual(nd.dtype_of(n),
                ndt.make_unaligned(ndt.make_byteswap(ndt.int32)))
        self.assertEqual(nd.ndim_of(n), a.ndim)
        self.assertEqual(n.shape, a.shape)
        self.assertEqual(n.strides, a.strides)
    def test_numpy_view_of_dynd_array(self):
        # Tests viewing a dynd.array as a numpy array
        nonnative = self.nonnative

        n = nd.range(10, dtype=ndt.int32)
        a = np.asarray(n)
        self.assertEqual(a.dtype, np.dtype(np.int32))
        self.assertTrue(a.flags.aligned)
        self.assertEqual(a.ndim, nd.ndim_of(n))
        self.assertEqual(a.shape, n.shape)
        self.assertEqual(a.strides, n.strides)
        # Make sure it's a view
        a[1] = 100
        self.assertEqual(nd.as_py(n[1]), 100)

        n = nd.view(np.arange(12, dtype=(nonnative + 'i4')).reshape(3, 4))
        a = np.asarray(n)
        self.assertEqual(a.dtype, np.dtype(nonnative + 'i4'))
        self.assertTrue(a.flags.aligned)
        self.assertEqual(a.ndim, nd.ndim_of(n))
        self.assertEqual(a.shape, n.shape)
        self.assertEqual(a.strides, n.strides)
        # Make sure it's a view
        a[1, 2] = 100
        self.assertEqual(nd.as_py(n[1, 2]), 100)

        n = nd.view(
            np.arange(49, dtype='i1')[1:].view(dtype=np.int32).reshape(4, 3))
        a = np.asarray(n)
        self.assertEqual(a.dtype, np.dtype(np.int32))
        self.assertFalse(a.flags.aligned)
        self.assertEqual(a.ndim, nd.ndim_of(n))
        self.assertEqual(a.shape, n.shape)
        self.assertEqual(a.strides, n.strides)
        # Make sure it's a view
        a[1, 2] = 100
        self.assertEqual(nd.as_py(n[1, 2]), 100)

        n = nd.view(
            np.arange(49,
                      dtype='i1')[1:].view(dtype=(nonnative + 'i4')).reshape(
                          2, 2, 3))
        a = np.asarray(n)
        self.assertEqual(a.dtype, np.dtype(nonnative + 'i4'))
        self.assertFalse(a.flags.aligned)
        self.assertEqual(a.ndim, nd.ndim_of(n))
        self.assertEqual(a.shape, n.shape)
        self.assertEqual(a.strides, n.strides)
        # Make sure it's a view
        a[1, 1, 1] = 100
        self.assertEqual(nd.as_py(n[1, 1, 1]), 100)
    def test_numpy_view_of_dynd_array(self):
        # Tests viewing a dynd.array as a numpy array
        nonnative = self.nonnative

        n = nd.range(10, dtype=ndt.int32)
        a = np.asarray(n)
        self.assertEqual(a.dtype, np.dtype(np.int32))
        self.assertTrue(a.flags.aligned)
        self.assertEqual(a.ndim, nd.ndim_of(n))
        self.assertEqual(a.shape, n.shape)
        self.assertEqual(a.strides, n.strides)
        # Make sure it's a view
        a[1] = 100
        self.assertEqual(nd.as_py(n[1]), 100)

        n = nd.view(np.arange(12, dtype=(nonnative + 'i4')).reshape(3,4))
        a = np.asarray(n)
        self.assertEqual(a.dtype, np.dtype(nonnative + 'i4'))
        self.assertTrue(a.flags.aligned)
        self.assertEqual(a.ndim, nd.ndim_of(n))
        self.assertEqual(a.shape, n.shape)
        self.assertEqual(a.strides, n.strides)
        # Make sure it's a view
        a[1,2] = 100
        self.assertEqual(nd.as_py(n[1,2]), 100)

        n = nd.view(np.arange(49, dtype='i1')[1:].view(dtype=np.int32).reshape(4,3))
        a = np.asarray(n)
        self.assertEqual(a.dtype, np.dtype(np.int32))
        self.assertFalse(a.flags.aligned)
        self.assertEqual(a.ndim, nd.ndim_of(n))
        self.assertEqual(a.shape, n.shape)
        self.assertEqual(a.strides, n.strides)
        # Make sure it's a view
        a[1,2] = 100
        self.assertEqual(nd.as_py(n[1,2]), 100)

        n = nd.view(np.arange(49, dtype='i1')[1:].view(
                    dtype=(nonnative + 'i4')).reshape(2,2,3))
        a = np.asarray(n)
        self.assertEqual(a.dtype, np.dtype(nonnative + 'i4'))
        self.assertFalse(a.flags.aligned)
        self.assertEqual(a.ndim, nd.ndim_of(n))
        self.assertEqual(a.shape, n.shape)
        self.assertEqual(a.strides, n.strides)
        # Make sure it's a view
        a[1,1,1] = 100
        self.assertEqual(nd.as_py(n[1,1,1]), 100)
 def __init__(self, dyndarr, nindex):
     if nindex > nd.ndim_of(dyndarr):
         raise IndexError('Cannot have more indices than dimensions')
     self._nindex = nindex
     self._dshape = datashape.dshape(nd.dshape_of(dyndarr)).subarray(nindex)
     self._c_dtype = ndt.type(str(self._dshape))
     self._dyndarr = dyndarr
 def __init__(self, dyndarr):
     if nd.ndim_of(dyndarr) <= 0:
         raise IndexError('Need at least one dimension for iteration')
     self._index = 0
     self._len = len(dyndarr)
     self._dshape = datashape.dshape(nd.dshape_of(dyndarr)).subarray(1)
     self._c_dtype = ndt.type(str(self._dshape))
     self._dyndarr = dyndarr
 def test_numpy_view_of_noncontig_dynd_array(self):
     n = nd.range(10)[1::3]
     a = np.asarray(n)
     self.assertEqual(a.dtype, np.dtype('i4'))
     self.assertFalse(a.flags.c_contiguous)
     self.assertEqual(a.ndim, nd.ndim_of(n))
     self.assertEqual(a.shape, n.shape)
     self.assertEqual(a.strides, n.strides)
     # Make sure it's a view as needed
     a[1] = 100
     self.assertEqual(nd.as_py(n[1]), 100)
 def test_numpy_view_of_noncontig_dynd_array(self):
     n = nd.range(10)[1::3]
     a = np.asarray(n)
     self.assertEqual(a.dtype, np.dtype('i4'))
     self.assertFalse(a.flags.c_contiguous)
     self.assertEqual(a.ndim, nd.ndim_of(n))
     self.assertEqual(a.shape, n.shape)
     self.assertEqual(a.strides, n.strides)
     # Make sure it's a view as needed
     a[1] = 100
     self.assertEqual(nd.as_py(n[1]), 100)
 def __init__(self, dyndarr):
     if nd.ndim_of(dyndarr) <= 0:
         raise IndexError('Need at least one dimension for iteration')
     self._index = 0
     self._len = len(dyndarr)
     ds = datashape.dshape(nd.dshape_of(dyndarr))
     self._dshape = ds.subarray(1)
     self._c_dtype = ndt.type(str(self._dshape))
     self._usebuffer = (ndt.type(str(ds)) != nd.type_of(dyndarr))
     self._buffer = None
     self._buffer_index = -1
     self._dyndarr = dyndarr