From 7b3e4ca843fc32922919055fbae2182091725078 Mon Sep 17 00:00:00 2001 From: Paul McCarthy <pauldmccarthy@gmail.com> Date: Fri, 31 May 2019 12:09:48 +0100 Subject: [PATCH] BF: makeWriteable will make a copy of an array if its base is a bytes object. Works around older numpy versions --- fsl/data/utils.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/fsl/data/utils.py b/fsl/data/utils.py index d902dc18a..13aae313b 100644 --- a/fsl/data/utils.py +++ b/fsl/data/utils.py @@ -84,7 +84,19 @@ def makeWriteable(array): is not possible, a copy is created and returned. """ try: + # Versions of numpy prior to 1.16 will + # happily mutate a bytes array, whcih + # is supposed to be immutable. So if + # is the case, let's force a copy. + if isinstance(array.base, bytes): + raise ValueError() + + # In versions of numpy 1.16 and newer, + # setting the WRITEABLE flag on an + # immutable array will cause a + # ValueError to be raised array.flags['WRITEABLE'] = True + except ValueError: array = np.array(array) return array -- GitLab