mirror of
https://github.com/pybind/pybind11.git
synced 2026-05-21 13:30:26 +00:00
pybind11: implicitly convert NumPy integer scalars
The current integer caster was unnecessarily strict and rejected various kinds of NumPy integer types when calling C++ functions expecting normal integers. This relaxes the current behavior.
This commit is contained in:
@@ -443,7 +443,14 @@ public:
|
||||
(std::is_integral<T>::value && sizeof(py_type) != sizeof(T) &&
|
||||
(py_value < (py_type) std::numeric_limits<T>::min() ||
|
||||
py_value > (py_type) std::numeric_limits<T>::max()))) {
|
||||
#if PY_VERSION_HEX < 0x03000000
|
||||
bool type_error = PyErr_ExceptionMatches(PyExc_SystemError);
|
||||
#else
|
||||
bool type_error = PyErr_ExceptionMatches(PyExc_TypeError);
|
||||
#endif
|
||||
PyErr_Clear();
|
||||
if (type_error && PyNumber_Check(src.ptr()))
|
||||
return load(object(PyNumber_Long(src.ptr()), true), false);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user