Regarding my PR for PyObject_CheckBuffer

In my PR, the code reads,
( NEVERSUPPORTS_BUFFER_PROTOCOL(obj) )

as opposed to your,
(PyObject_CheckBuffer(obj) == 1)


where,
#define NEVERSUPPORTS_BUFFER_PROTOCOL(op) ( PyList_CheckExact(op) ||  (Py_None == op) || PyTuple_CheckExact(op) )

If I change to match what you have,
#define NEVERSUPPORTS_BUFFER_PROTOCOL(op) (PyObject_CheckBuffer(obj) == 1)


In my benchmark test all timings are the same Except for this particular test,
newarr = np.array(list1)

where,
list1 = [1.0, 2.0]

is now  only 2.1 faster than original numpy code as opposed to 4.2 times faster with my suggested approach.
In other words, this is good,
PyObject_CheckBuffer(obj) == 1

but,
 ( PyList_CheckExact(op) ||  (Py_None == op) || PyTuple_CheckExact(op) )
is better

I do not understand why. I compiled back and forth a few times to triple check my results are consistent.