Hi, I finished reading the doc I listed in the other thread. As the NA stuff will be marked as Experimental in numpy 1.7, why not define a new macro like NPY_NA_VERSION that will give the version of the NA C-api? That way, people will be able to detect if there is change in the c-api of NA when they write it. So this will allow to break this interface more easily. We would just need to make a big warning to do this check it.
The current NPY_VERSION and NPY_FEATURE_VERSION macro don't allow removing feature. Probably a function like PyArray_GetNACVersion would be useful too.[1] Continuing on my previous post, old code need to be changed to don't accept NA inputs. With the current trunk, this can be done like this: PyObject* an_input = ....; if (!PyArray_Check(an_input) { PyErr_SetString(PyExc_ValueError, "expected an ndarray"); %(fail)s } if (NPY_FEATURE_VERSION >= 0x00000008){ if(PyArray_HasNASupport((PyArrayObject*) an_input )){ PyErr_SetString(PyExc_ValueError, "masked array are not supported by this function"); %(fail)s } } In the 1.6.1 release, NPY_FEATURE_VERSION had value 0x00000007. This value wasn't changed in the trunk. I suppose it will be raised to 0x00000008 for numpy 1.7. Can we suppose that old code check input with PyArray_Check()? I think so, but it would be really helpful if people that are here for longer them me can confirm/deny this? Frédéric [1] http://docs.scipy.org/doc/numpy/reference/c-api.array.html#checking-the-api-version _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion