diff --git a/example/example-numpy-dtypes.cpp b/example/example-numpy-dtypes.cpp index 7a4c1f6d8..245de4fde 100644 --- a/example/example-numpy-dtypes.cpp +++ b/example/example-numpy-dtypes.cpp @@ -200,6 +200,28 @@ py::array_t test_array_ctors(int i) { return arr_t(); } +py::list test_dtype_ctors() { + py::list list; + list.append(py::dtype("int32")); + list.append(py::dtype(std::string("float64"))); + list.append(py::dtype::from_args(py::str("bool"))); + py::list names, offsets, formats; + py::dict dict; + names.append(py::str("a")); names.append(py::str("b")); dict["names"] = names; + offsets.append(py::int_(1)); offsets.append(py::int_(10)); dict["offsets"] = offsets; + formats.append(py::dtype("int32")); formats.append(py::dtype("float64")); dict["formats"] = formats; + dict["itemsize"] = py::int_(20); + list.append(py::dtype::from_args(dict)); + list.append(py::dtype(names, formats, offsets, 20)); + list.append(py::dtype(py::buffer_info((void *) 0, 1, "I", 1))); + list.append(py::dtype(py::buffer_info((void *) 0, 1, "T{i:a:f:b:}", 1))); + return list; +} + +void test_dtype_methods() { + +} + void init_ex_numpy_dtypes(py::module &m) { PYBIND11_NUMPY_DTYPE(SimpleStruct, x, y, z); PYBIND11_NUMPY_DTYPE(PackedStruct, x, y, z); @@ -222,6 +244,8 @@ void init_ex_numpy_dtypes(py::module &m) { m.def("create_string_array", &create_string_array); m.def("print_string_array", &print_recarray); m.def("test_array_ctors", &test_array_ctors); + m.def("test_dtype_ctors", &test_dtype_ctors); + m.def("test_dtype_methods", &test_dtype_methods); } #undef PYBIND11_PACKED diff --git a/example/example-numpy-dtypes.py b/example/example-numpy-dtypes.py index 930364afb..f9c665318 100644 --- a/example/example-numpy-dtypes.py +++ b/example/example-numpy-dtypes.py @@ -7,7 +7,7 @@ from example import ( create_rec_simple, create_rec_packed, create_rec_nested, print_format_descriptors, print_rec_simple, print_rec_packed, print_rec_nested, print_dtypes, get_format_unbound, create_rec_partial, create_rec_partial_nested, create_string_array, print_string_array, - test_array_ctors + test_array_ctors, test_dtype_ctors ) @@ -86,3 +86,9 @@ data = np.arange(1, 7, dtype='int32') for i in range(13): expected = data if i >= 8 else data.reshape((3, 2)) np.testing.assert_array_equal(test_array_ctors(i), expected) + +d1 = np.dtype({'names': ['a', 'b'], 'formats': ['int32', 'float64'], + 'offsets': [1, 10], 'itemsize': 20}) +d2 = np.dtype([('a', 'i4'), ('b', 'f4')]) +assert test_dtype_ctors() == [np.dtype('int32'), np.dtype('float64'), + np.dtype('bool'), d1, d1, np.dtype('uint32'), d2]