[Numpy-discussion] isbuiltin - failure of understanding

Matthew Brett matthew.brett at gmail.com
Tue Feb 24 16:04:54 EST 2009


Hi,

I was just trying to write a docstring for np.dtype.isbuiltin, when I
realized I didn't understand it.

As far as I can see, isbuitin should return:

0 for structured array dtypes
1 for types compiled into numpy
2 for extension types using the numpy C-API type extension machinery.

Here's the C code:

static PyObject *
arraydescr_isbuiltin_get(PyArray_Descr *self)
{
    long val;
    val = 0;
    if (self->fields == Py_None) val = 1;
    if (PyTypeNum_ISUSERDEF(self->type_num)) val = 2;
    return PyInt_FromLong(val);
}

But, why is this?

In [2]: dt = np.dtype('S1')

In [3]: dt
Out[3]: dtype('|S1')

In [4]: dt.isbuiltin
Out[4]: 0

In [5]: print dt.fields
None

In [6]: print dt.fields == None
True

Same for np.dtype('U1')

Best,

Matthew



More information about the NumPy-Discussion mailing list