Skip to content

Commit 33bb90b

Browse files
authored
Merge pull request #56 from InvestmentSystems/minor-improvements
Add test to assert on exception raised by resolve_dtype_iter
2 parents a7e1959 + 1d80519 commit 33bb90b

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

src/_arraykit.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ AK_ResolveDTypeIter(PyObject *dtypes)
120120
{
121121
PyObject *iterator = PyObject_GetIter(dtypes);
122122
if (iterator == NULL) {
123+
// No need to set exception here. GetIter already sets TypeError
123124
return NULL;
124125
}
125126
PyArray_Descr *resolved = NULL;
@@ -147,6 +148,10 @@ AK_ResolveDTypeIter(PyObject *dtypes)
147148
}
148149
}
149150
Py_DECREF(iterator);
151+
if (!resolved) {
152+
// this could happen if this function gets an empty tuple
153+
PyErr_SetString(PyExc_ValueError, "iterable passed to resolve dtypes is empty");
154+
}
150155
return resolved;
151156
}
152157

test/test_util.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import pytest
12
import collections
23
import datetime
34
import unittest
@@ -117,6 +118,14 @@ def test_resolve_dtype_iter_a(self) -> None:
117118
self.assertEqual(resolve_dtype_iter((a3.dtype, a5.dtype)).kind, 'U')
118119
self.assertEqual(resolve_dtype_iter((a3.dtype, a5.dtype)).itemsize, 40)
119120

121+
with pytest.raises(TypeError):
122+
resolve_dtype_iter((a3.dtype, int))
123+
124+
self.assertEqual(resolve_dtype_iter((a1.dtype,)), a1.dtype)
125+
126+
with pytest.raises(ValueError):
127+
resolve_dtype_iter(())
128+
120129
#---------------------------------------------------------------------------
121130

122131
def test_shape_filter_a(self) -> None:

0 commit comments

Comments
 (0)