Skip to content

Commit 44f4b64

Browse files
committed
fix dtype python constructor args
1 parent d64f9ce commit 44f4b64

2 files changed

Lines changed: 52 additions & 45 deletions

File tree

src/libs/conduit/python/conduit_python.cpp

Lines changed: 11 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -284,22 +284,10 @@ static PyObject* PyConduit_Convert_Node_To_Python(Node& node);
284284
//---------------------------------------------------------------------------//
285285
static PyObject *
286286
PyConduit_DataType_new(PyTypeObject* type,
287-
PyObject* args,
288-
PyObject* kwds)
287+
PyObject*, // args -- unused
288+
PyObject*) // kwds -- unused
289289
{
290-
/// TODO: args and kwargs
291-
292-
static const char *kwlist[] = {"value", NULL};
293-
PyObject* value = NULL;
294-
if (!PyArg_ParseTupleAndKeywords(args,
295-
kwds,
296-
"|O",
297-
const_cast<char**>(kwlist),
298-
&value))
299-
{
300-
return (NULL);
301-
}
302-
290+
// `_new` is used to alloc the object, `_init` is effectively the constructor
303291
PyConduit_DataType* self = (PyConduit_DataType*)PyType_GenericAlloc(type,0);
304292
return ((PyObject*)self);
305293
}
@@ -3297,6 +3285,7 @@ PyConduit_Generator_new(PyTypeObject *type,
32973285
PyObject*, // args -- unused
32983286
PyObject*) // kwds -- unused
32993287
{
3288+
// `_new` is used to alloc the object, `_init` is effectively the constructor
33003289
PyConduit_Generator *self = (PyConduit_Generator*)PyType_GenericAlloc(type,0);
33013290

33023291
if (self)
@@ -3591,7 +3580,7 @@ PyConduit_Schema_new(PyTypeObject* type,
35913580
PyObject*, // args -- unused
35923581
PyObject*) // kwds -- unused
35933582
{
3594-
3583+
// `_new` is used to alloc the object, `_init` is effectively the constructor
35953584
PyConduit_Schema *self = (PyConduit_Schema*)PyType_GenericAlloc(type,0);
35963585

35973586
if (self)
@@ -4652,20 +4641,10 @@ static PyTypeObject PyConduit_Schema_TYPE = {
46524641
//---------------------------------------------------------------------------//
46534642
static PyObject *
46544643
PyConduit_NodeIterator_new(PyTypeObject *type,
4655-
PyObject *args,
4656-
PyObject *kwds)
4644+
PyObject*, // args -- unused
4645+
PyObject*) // kwds -- unused
46574646
{
4658-
static const char *kwlist[] = {"value", NULL};
4659-
PyObject* value = NULL;
4660-
if (!PyArg_ParseTupleAndKeywords(args,
4661-
kwds,
4662-
"|O",
4663-
const_cast<char**>(kwlist),
4664-
&value))
4665-
{
4666-
return (NULL);
4667-
}
4668-
4647+
// `_new` is used to alloc the object, `_init` is effectively the constructor
46694648
PyConduit_DataType *self = (PyConduit_DataType*)PyType_GenericAlloc(type,0);
46704649
return ((PyObject*)self);
46714650
}
@@ -5154,20 +5133,10 @@ PyConduit_Fill_DataArray_From_PyArray(DataArray<T> &conduit_array,
51545133
//---------------------------------------------------------------------------//
51555134
static PyObject *
51565135
PyConduit_Node_new(PyTypeObject* type,
5157-
PyObject* args,
5158-
PyObject* kwds)
5136+
PyObject*, // args -- unused
5137+
PyObject*) // kwds -- unused
51595138
{
5160-
static const char *kwlist[] = {"value", NULL};
5161-
PyObject* value = NULL;
5162-
if (!PyArg_ParseTupleAndKeywords(args,
5163-
kwds,
5164-
"|O",
5165-
const_cast<char**>(kwlist),
5166-
&value))
5167-
{
5168-
return (NULL);
5169-
}
5170-
5139+
// `_new` is used to alloc the object, `_init` is effectively the constructor
51715140
PyConduit_Node* self = (PyConduit_Node*)PyType_GenericAlloc(type,0);
51725141

51735142
if (self)

src/tests/conduit/python/t_python_conduit_datatype.py

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,13 @@ def test_construction(self):
5858
dt.set_offset(0);
5959
dt.set_stride(4);
6060
dt.set_element_bytes(4);
61-
61+
6262
dt2 = DataType(dt)
6363
self.assertEqual(dt.id(),dt2.id())
6464
self.assertEqual(dt.number_of_elements(),dt2.number_of_elements())
6565
self.assertEqual(dt.offset(),dt2.offset())
6666
self.assertEqual(dt.stride(),dt2.stride())
67-
self.assertEqual(dt.element_bytes(),dt2.element_bytes())
67+
self.assertEqual(dt.element_bytes(),dt2.element_bytes())
6868
self.assertEqual(dt.endianness(),dt2.endianness())
6969

7070
dt3 = DataType()
@@ -79,7 +79,7 @@ def test_construction(self):
7979
self.assertEqual(dt2.stride(),dt3.stride())
8080
self.assertEqual(dt2.element_bytes(),dt3.element_bytes())
8181
self.assertEqual(dt2.endianness(),dt3.endianness())
82-
82+
8383
print(dt)
8484
print(dt2)
8585
print(dt3)
@@ -241,6 +241,44 @@ def test_enum_ids(self):
241241
self.assertEqual(DataType.float32().id(), DataType.float32_id())
242242
self.assertEqual(DataType.float64().id(), DataType.float64_id())
243243

244+
def test_construct_from_args(self):
245+
# string case
246+
dt = DataType("int64",
247+
7, # num ele
248+
10, # offset
249+
16, # stride
250+
8, # ele bytes
251+
0) # endianness id
252+
self.assertTrue(dt.is_int64())
253+
self.assertEqual(dt.number_of_elements(),7)
254+
self.assertEqual(dt.offset(),10)
255+
self.assertEqual(dt.stride(),16)
256+
self.assertEqual(dt.element_bytes(),8)
257+
self.assertEqual(dt.endianness(),0)
258+
# id case
259+
dt = DataType(DataType.name_to_id("int64"),
260+
7, # num ele
261+
10, # offset
262+
16, # stride
263+
8, # ele bytes
264+
0) # endianness id
265+
dt = DataType.int64(7,10,16,8)
266+
self.assertTrue(dt.is_int64())
267+
self.assertEqual(dt.number_of_elements(),7)
268+
self.assertEqual(dt.offset(),10)
269+
self.assertEqual(dt.stride(),16)
270+
self.assertEqual(dt.element_bytes(),8)
271+
self.assertEqual(dt.endianness(),0)
272+
273+
# helper func case
274+
dt = DataType.int64(7,10,16,8,0)
275+
self.assertTrue(dt.is_int64())
276+
self.assertEqual(dt.number_of_elements(),7)
277+
self.assertEqual(dt.offset(),10)
278+
self.assertEqual(dt.stride(),16)
279+
self.assertEqual(dt.element_bytes(),8)
280+
self.assertEqual(dt.endianness(),0)
281+
244282
def test_to_string_and_friends(self):
245283
dtypes = [ DataType.float64(),
246284
DataType.object(),

0 commit comments

Comments
 (0)