diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 7089e91b85792f7a94adde3dbd1dce993be5e56d..230bf25f33ff3e7070dfed5bbf7363ac8fc5489b 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -2,6 +2,30 @@ This document contains the ``fslpy`` release history in reverse chronological order. +2.3.0 (Under development) +------------------------- + + +Added +^^^^^ + + +* New :meth:`.LabelAtlas.get` and :meth:`ProbabilisticAtlas.get` methods, + which return an :class:`.Image` for a specific region. +* The :meth:`.AtlasDescription.find` method also now a ``name`` parameter, + allowing labels to be looked up by name. +* New :meth:`.FileTree.defines` and :meth:`.FileTree.on_disk` methods, to + replace the :func:`.FileTree.exists` method. + + +Fixed +^^^^^ + + +* The :func:`.makeWriteable` function will always create a copy of an + ``array`` if its base is a ``bytes`` object. + + 2.2.0 (Wednesday May 8th 2019) ------------------------------ diff --git a/fsl/data/utils.py b/fsl/data/utils.py index d902dc18a2b77c753c7d43f09d70398ebb25b71a..13aae313b3ea4d1dc927d7b1fffd029ccaf7f83c 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