|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
""" |
|
|
Tests the h5py.AttributeManager.create() method. |
|
|
""" |
|
|
|
|
|
import numpy as np |
|
|
from .. import h5t, h5a |
|
|
|
|
|
from .common import ut, TestCase |
|
|
|
|
|
class TestArray(TestCase): |
|
|
|
|
|
""" |
|
|
Check that top-level array types can be created and read. |
|
|
""" |
|
|
|
|
|
def test_int(self): |
|
|
|
|
|
|
|
|
dt = np.dtype('(3,)i') |
|
|
data = np.arange(3, dtype='i') |
|
|
|
|
|
self.f.attrs.create('x', data=data, dtype=dt) |
|
|
|
|
|
aid = h5a.open(self.f.id, b'x') |
|
|
|
|
|
htype = aid.get_type() |
|
|
self.assertEqual(htype.get_class(), h5t.ARRAY) |
|
|
|
|
|
out = self.f.attrs['x'] |
|
|
|
|
|
self.assertArrayEqual(out, data) |
|
|
|
|
|
def test_string_dtype(self): |
|
|
|
|
|
|
|
|
self.f.attrs.create('x', data=42, dtype='i8') |
|
|
|
|
|
def test_str(self): |
|
|
|
|
|
self.f.attrs.create('x', chr(0x03A9)) |
|
|
out = self.f.attrs['x'] |
|
|
self.assertEqual(out, chr(0x03A9)) |
|
|
self.assertIsInstance(out, str) |
|
|
|
|
|
def test_tuple_of_unicode(self): |
|
|
|
|
|
|
|
|
data = ('a', 'b') |
|
|
self.f.attrs.create('x', data=data) |
|
|
result = self.f.attrs['x'] |
|
|
self.assertTrue(all(result == data)) |
|
|
self.assertEqual(result.dtype, np.dtype('O')) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data_as_U_array = np.array(data) |
|
|
self.assertEqual(data_as_U_array.dtype, np.dtype('U1')) |
|
|
with self.assertRaises(TypeError): |
|
|
self.f.attrs.create('y', data=data_as_U_array) |
|
|
|
|
|
def test_shape(self): |
|
|
self.f.attrs.create('x', data=42, shape=1) |
|
|
result = self.f.attrs['x'] |
|
|
self.assertEqual(result.shape, (1,)) |
|
|
|
|
|
self.f.attrs.create('y', data=np.arange(3), shape=3) |
|
|
result = self.f.attrs['y'] |
|
|
self.assertEqual(result.shape, (3,)) |
|
|
|
|
|
def test_dtype(self): |
|
|
dt = np.dtype('(3,)i') |
|
|
array = np.arange(3, dtype='i') |
|
|
self.f.attrs.create('x', data=array, dtype=dt) |
|
|
|
|
|
array = np.arange(4, dtype='i') |
|
|
with self.assertRaises(ValueError): |
|
|
self.f.attrs.create('x', data=array, dtype=dt) |
|
|
|
|
|
dt = np.dtype('()i') |
|
|
with self.assertRaises(ValueError): |
|
|
self.f.attrs.create('x', data=array, shape=(5,), dtype=dt) |
|
|
|
|
|
def test_key_type(self): |
|
|
with self.assertRaises(TypeError): |
|
|
self.f.attrs.create(1, data=('a', 'b')) |
|
|
|