mirror of
https://github.com/pybind/pybind11.git
synced 2025-02-19 15:10:38 +00:00
Change array's writeable exception to a ValueError
Numpy raises ValueError when attempting to modify an array, while py::array is raising a RuntimeError. This changes the exception to a std::domain_error, which gets mapped to the expected ValueError in python.
This commit is contained in:
parent
f86dddf7ba
commit
fd7517037b
@ -536,7 +536,7 @@ protected:
|
|||||||
|
|
||||||
void check_writeable() const {
|
void check_writeable() const {
|
||||||
if (!writeable())
|
if (!writeable())
|
||||||
throw std::runtime_error("array is not writeable");
|
throw std::domain_error("array is not writeable");
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::vector<size_t> default_strides(const std::vector<size_t>& shape, size_t itemsize) {
|
static std::vector<size_t> default_strides(const std::vector<size_t>& shape, size_t itemsize) {
|
||||||
|
@ -92,7 +92,7 @@ def test_mutate_readonly(arr):
|
|||||||
from pybind11_tests.array import mutate_data, mutate_data_t, mutate_at_t
|
from pybind11_tests.array import mutate_data, mutate_data_t, mutate_at_t
|
||||||
arr.flags.writeable = False
|
arr.flags.writeable = False
|
||||||
for func, args in (mutate_data, ()), (mutate_data_t, ()), (mutate_at_t, (0, 0)):
|
for func, args in (mutate_data, ()), (mutate_data_t, ()), (mutate_at_t, (0, 0)):
|
||||||
with pytest.raises(RuntimeError) as excinfo:
|
with pytest.raises(ValueError) as excinfo:
|
||||||
func(arr, *args)
|
func(arr, *args)
|
||||||
assert str(excinfo.value) == 'array is not writeable'
|
assert str(excinfo.value) == 'array is not writeable'
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user