[eigen] Obey noconvert() in Eigen::Sparse type type caster (#69)

This commit is contained in:
Jeremy Nimmer 2023-11-11 12:43:40 -08:00 committed by Eric Cousineau
parent e250155afa
commit d222055544

View File

@ -649,7 +649,7 @@ struct type_caster<Type, enable_if_t<is_eigen_sparse<Type>::value>> {
using Index = typename Type::Index; using Index = typename Type::Index;
static constexpr bool rowMajor = Type::IsRowMajor; static constexpr bool rowMajor = Type::IsRowMajor;
bool load(handle src, bool) { bool load(handle src, bool convert) {
if (!src) { if (!src) {
return false; return false;
} }
@ -659,6 +659,9 @@ struct type_caster<Type, enable_if_t<is_eigen_sparse<Type>::value>> {
object matrix_type = sparse_module.attr(rowMajor ? "csr_matrix" : "csc_matrix"); object matrix_type = sparse_module.attr(rowMajor ? "csr_matrix" : "csc_matrix");
if (!type::handle_of(obj).is(matrix_type)) { if (!type::handle_of(obj).is(matrix_type)) {
if (!convert) {
return false;
}
try { try {
obj = matrix_type(obj); obj = matrix_type(obj);
} catch (const error_already_set &) { } catch (const error_already_set &) {