1
0

- Remove numpy upper bound.

- Add patch support-numpy-2.patch:
  * Use np.asarray() to support NumPy 2 as well.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:numeric/python-nibabel?expand=0&rev=26
This commit is contained in:
Steve Kowalik 2024-07-25 02:06:49 +00:00 committed by Git OBS Bridge
commit 7fb68bda45
7 changed files with 443 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

3
nibabel-5.2.1.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b6c80b2e728e4bc2b65f1142d9b8d2287a9102a8bf8477e115ef0d8334559975
size 4503320

213
python-nibabel.changes Normal file
View File

@ -0,0 +1,213 @@
-------------------------------------------------------------------
Thu Jul 25 02:05:50 UTC 2024 - Steve Kowalik <steven.kowalik@suse.com>
- Remove numpy upper bound.
- Add patch support-numpy-2.patch:
* Use np.asarray() to support NumPy 2 as well.
-------------------------------------------------------------------
Mon Jul 22 05:51:49 UTC 2024 - Steve Kowalik <steven.kowalik@suse.com>
- Switch to autosetup macro.
- Restrict numpy to < 2 because it isn't currently supported.
- Add patch support-pytest-8.patch:
* Use pytest setup/teardown methods.
-------------------------------------------------------------------
Mon Mar 25 20:12:25 UTC 2024 - Dirk Müller <dmueller@suse.com>
- update to 5.2.1:
* Support "flat" ASCII-encoded GIFTI DataArrays (pr/1298) (PM,
reviewed by CM)
* Tolerate missing ``git`` when reporting version info
(pr/1286)
* Handle Siemens XA30 derived DWI DICOMs (pr/1296)
* Add tool for generating GitHub-friendly release notes
* Accommodate pytest 8 changes (pr/1297) (CM)
-------------------------------------------------------------------
Thu Feb 15 16:13:37 UTC 2024 - Ben Greiner <code@bnavigator.de>
- Update to 5.2.0
## New features
* Add generic Pointset and regularly spaced Grid data structures
in preparation for coordinate transformation and resampling
(#1251) (CM, reviewed by Oscar Esteban)
## Enhancements
* Add copy method to ArrayProxy (#1255) (CM, reviewed by Paul
McCarthy)
* Permit to_xml to pass keyword arguments to tostring (#1258)
(CM)
* Allow user expansion (e.g., ~/...) in strings passed to
functions that accept paths (#1260) (Reinder Vos de Wael,
reviewed by CM)
* Expand CIFTI-2 brain structures to permit synonyms (#1256) (CM,
reviewed by Mathias Goncalves)
* Annotate SpatialImage as accepting affine=None argument (#1253)
(Blake Dewey, reviewed by CM)
* Warn on invalid MINC2 spacing declarations, treat as missing
(#1237) (Peter Suter, reviewed by CM)
* Refactor find_private_section for improved readability and
maintainability (#1228) (MB, reviewed by CM)
## API changes and deprecations
* The nibabel.pydicom_compat module is deprecated and will be
removed in NiBabel 7.0. (#1280)
* The int_to_float and as_int functions are no longer needed to
work around NumPy deficiencies and have been deprecated (#1272)
(CM, reviewed by EL)
- Release 5.1
## Enhancements
* Make imagestats available with import nibabel (pr/1208) (Fabian
Perez, reviewed by CM)
* Use symmetric threshold for identifying unit quaternions on
qform calculations (pr/1182) (CM, reviewed by MB)
* Type annotations for nibabel.loadsave (pr/1213) and
nibabel.spatialimages.SpatialImage APIs (pr/1179),
nibabel.deprecated, nibabel.deprecator, nibabel.onetime and
nibabel.optpkg modules (pr/1188), nibabel.volumeutils
(pr/1189), nibabel.filename_parser and nibabel.openers
(pr/1197) (CM, reviewed by Zvi Baratz)
- Release 5.0
## New features
* SerializableImage now has to_stream() and from_stream() methods
to read/write streams implementing the io.IOBase interface. A
from_url() method enables loading images from URLs. (pr/1129)
(CM, reviewed by MB)
* TrkFile supports TRKv3, an undocumented but generally
compatible variant of TRKv2. (pr/1125) (CM)
## Enhancements
* Support multiline header fields in TCKFile (pr/1175) (CM,
reviewed by Matt Cieslak)
* Make layout order an initialization parameter of ArrayProxy
(pr/1131) (CM, reviewed by MB)
* Initial support for type annotations. (pr/1115, pr/1178) (CM,
reviewed by Zvi Baratz)
## API changes and deprecations
* Passing an int64 array to Nifti1Image without a header or dtype
argument will raise a ValueError. (pr/1173) (CM)
* tmpdirs.TemporaryDirectory is deprecated in favor of
tempfile.TemporaryDirectory. (pr/1172) (CM, reviewed by Zvi
Baratz)
* The nisext package is deprecated and will be removed in NiBabel
6.0. (pr/1170) (CM, reviewed by MB)
* Drop support for Python 3.7, Numpy < 1.19 (pr/1177) (CM)
* The following deprecated functions and methods will now raise
ExpiredDeprecationErrors
- nibabel.loadsave.read_img_data
- nibabel.dataobj_images.DataobjImage.get_data
- nibabel.loadsave.guessed_image_type
- nibabel.onetime.setattr_on_read
- nibabel.orientations.flip_axis
* Modules, classes and functions that expired at 4.0 were fully
removed. ExpiredDeprecationError will now be
AttributeError.
-------------------------------------------------------------------
Thu Oct 6 14:07:18 UTC 2022 - Markéta Machová <mmachova@suse.com>
- Update to 4.0.2
* many changes, see Changelog
* nib-convert CLI tool to make image type and data dtype conversion
accessible via the command line.
* Allow dtypes to be passed to Analyze-like images at __init__()
and to_filename()
* Allow compressed GIFTI images
* Add zstd compression support
* Test on Python 3.10
* Passing (u)int64 arrays to Nifti1Image and subclasses will warn
unless a header or dtype option is passed; in the future this will
become an error. Additionally, passing int or 'int' to set_data_dtype()
now raises an error, requiring an explicit numpy dtype to make 64-bit
integer images.
* Drop support for Python 3.6, Numpy < 1.17
* Fully removed the APIs, which have raised errors on use since 3.0
- Drop upstreamed 983.patch and purge-nose.patch
-------------------------------------------------------------------
Wed Mar 31 09:09:56 UTC 2021 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Add upstream patch to fix test on Backports:SLE-15-SP3:
* 983.patch
-------------------------------------------------------------------
Fri Feb 12 14:37:36 UTC 2021 - Dirk Müller <dmueller@suse.com>
- skip python 36
-------------------------------------------------------------------
Fri Jul 10 09:06:52 UTC 2020 - Marketa Calabkova <mcalabkova@suse.com>
- Update to 3.1.1
* Conformation function (``processing.conform``) and CLI tool
(``nib-conform``) to apply shape, orientation and zooms (pr/853) (Jakub
Kaczmarzyk, reviewed by CM, YOH)
* Affine rescaling function (``affines.rescale_affine``) to update
dimensions and voxel sizes (pr/853) (CM, reviewed by Jakub Kaczmarzyk)
* ``kw_only_meth``/``kw_only_func`` decorators are deprecated (pr/848)
(RM, reviewed by CM)
- Add patch purge-nose.patch
-------------------------------------------------------------------
Thu May 21 10:56:36 UTC 2020 - Petr Gajdos <pgajdos@suse.com>
- %python3_only -> %python_alternative
-------------------------------------------------------------------
Fri Mar 6 08:07:25 UTC 2020 - Tomáš Chvátal <tchvatal@suse.com>
- Update to 3.0.1:
* Test failed by using array method on tuple. (pr/860) (Ben Darwin, reviewed by CM)
* Validate ExpiredDeprecationErrors, promoted by 3.0 release from DeprecationWarnings. (pr/857) (CM)
* Improve testing of data scaling in ArrayProxy API (pr/847) (CM, reviewed by Alejandro de la Vega)
* Document SpatialImage.slicer interface (pr/846) (CM)
* get_fdata(dtype=np.float32) will attempt to avoid casting data to np.float64 when scaling parameters would otherwise promote the data type unnecessarily. (pr/833) (CM, reviewed by Ross Markello)
* ArraySequence now supports a large set of Python operators to combine or update in-place. (pr/811) (MC, reviewed by Serge Koudoro, Philippe Poulin, CM, MB)
* Warn, rather than fail, on DICOMs with unreadable Siemens CSA tags (pr/818) (Henry Braun, reviewed by CM)
* Improve clarity of coordinate system tutorial (pr/823) (Egor Panfilov, reviewed by MB)
-------------------------------------------------------------------
Tue Nov 19 20:41:07 UTC 2019 - Todd R <toddrme2178@gmail.com>
- Update to version 2.5.1
+ Enhancements
* Ignore endianness in ``nib-diff`` if values match
+ Bug fixes
* Correctly handle Philips DICOMs w/ derived volume
* Raise CSA tag limit to 1000, parametrize for future relaxing
* Coerce data types to match NIfTI intent codes when writing GIFTI data
arrays
+ Maintenance
* Require h5py 2.10 for Windows + Python < 3.6 to resolve unexpected dtypes
in Minc2 data
+ API changes and deprecations
* Deprecate ``nicom.dicomwrappers.Wrapper.get_affine()`` in favor of ``affine``
property; final removal in nibabel 4.0
- Update to version 2.5.0
+ Enhancements
* Add SerializableImage class with to/from_bytes methods
* Check CIFTI-2 data shape matches shape described by header
+ Bug fixes
* Handle stricter numpy casting rules in tests
* TRK header fields flipped in files written on big-endian systems
* Load multiframe ECAT images with Python 3
+ Maintenance
* Fix CodeCov paths on Appveyor for more accurate coverage
* Move to setuptools and reduce use ``nisext`` functions
* Better handle test setup/teardown
+ API changes and deprecations
* Effect threatened warnings and set some deprecation timelines
* Trackvis methods now default to v2 formats
* ``nibabel.trackvis`` scheduled for removal in nibabel 4.0
* ``nibabel.minc`` and ``nibabel.MincImage`` will be removed in nibabel 3.0
- Drop upstream-included fix_numpy_1_17.patch
-------------------------------------------------------------------
Mon Jul 29 18:56:10 UTC 2019 - Todd R <toddrme2178@gmail.com>
- Add fix_numpy_1_17.patch to fix building with numpy 1.17.0
From: gh#/nipy/nibabel#768
-------------------------------------------------------------------
Fri Jul 26 14:21:33 UTC 2019 - Todd R <toddrme2178@gmail.com>
- Initial version

107
python-nibabel.spec Normal file
View File

@ -0,0 +1,107 @@
#
# spec file for package python-nibabel
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define binaries nib-conform nib-convert nib-dicomfs nib-diff nib-ls nib-nifti-dx nib-roi nib-stats nib-tck2trk nib-trk2tck parrec2nii
Name: python-nibabel
Version: 5.2.1
Release: 0
Summary: Tool to access multiple neuroimaging data formats
License: MIT
URL: https://nipy.org/nibabel
# SourceRepository: https://github.com/nipy/nibabel
Source: https://files.pythonhosted.org/packages/source/n/nibabel/nibabel-%{version}.tar.gz
# PATCH-FIX-UPSTREAM gh#nipy/nibabel#1325
Patch0: support-pytest-8.patch
# PATCH-FIX-UPSTREAM gh#nipy/nibabel#1304
Patch1: support-numpy-2.patch
BuildRequires: %{python_module base >= 3.8}
BuildRequires: %{python_module hatch-vcs}
BuildRequires: %{python_module hatchling}
BuildRequires: %{python_module pip}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-numpy >= 1.20
Requires: python-packaging => 17
Requires: (python-importlib-resources >= 1.3 if python-base < 3.9)
Requires(post): update-alternatives
Requires(postun): update-alternatives
Recommends: python-Pillow
Recommends: python-h5py
Recommends: python-pydicom >= 1
Recommends: python-scipy
BuildArch: noarch
# SECTION test requirements
BuildRequires: %{python_module Pillow}
BuildRequires: %{python_module h5py}
BuildRequires: %{python_module importlib-resources >= 1.3 if %python-base < 3.9}
BuildRequires: %{python_module numpy >= 1.20}
BuildRequires: %{python_module packaging >= 17}
BuildRequires: %{python_module pydicom >= 1}
BuildRequires: %{python_module pytest-doctestplus}
BuildRequires: %{python_module pytest-httpserver}
BuildRequires: %{python_module pytest-xdist}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module scipy}
BuildRequires: %{pythons}
BuildRequires: git-core
# /SECTION
%python_subpackages
%description
This package provides read +/- write access to some common medical and
neuroimaging file formats, including: ANALYZE (plain, SPM99, SPM2 and
later), GIFTI, NIfTI1, NIfTI2, CIFTI-2, MINC1, MINC2, AFNI BRIK/HEAD,
MGH and ECAT as well as Philips PAR/REC. We can read and write
FreeSurfer geometry, annotation and morphometry files. There is some
very limited support for DICOM.
%prep
%autosetup -p1 -n nibabel-%{version}
find nibabel -name .gitignore -delete
sed -i '1{/^!#/d}' nibabel/cmdline/*.py
chmod a-x nibabel/cmdline/*.py
chmod a-x nibabel/tests/data/umass_anonymized.PAR nibabel/gifti/tests/data/gzipbase64.gii nibabel/nicom/dicomwrappers.py nibabel/nicom/tests/test_dicomwrappers.py
%build
%pyproject_wheel
%install
%pyproject_install
for b in %{binaries}; do
%python_clone -a %{buildroot}%{_bindir}/$b
done
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
%pytest -n auto -rsfE
%post
%{expand:%(for b in %{binaries}; do echo "%%python_install_alternative $b"; done)}
%postun
%{expand:%(for b in %{binaries}; do echo "%%python_uninstall_alternative $b"; done)}
%files %{python_files}
%doc AUTHOR Changelog README.rst
%license COPYING
%{expand:%(for b in %{binaries}; do echo "%%python_alternative %%{_bindir}/$b"; done)}
%{python_sitelib}/nibabel
%{python_sitelib}/nisext
%{python_sitelib}/nibabel-%{version}.dist-info
%changelog

36
support-numpy-2.patch Normal file
View File

@ -0,0 +1,36 @@
From 2bad8cce331976af3e8b42cecaed76bb075ee8b3 Mon Sep 17 00:00:00 2001
From: Chris Markiewicz <effigies@gmail.com>
Date: Tue, 5 Mar 2024 08:16:05 -0500
Subject: [PATCH] FIX: Use np.asarray instead of np.array(..., copy=False)
---
nibabel/affines.py | 2 +-
nibabel/casting.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/nibabel/affines.py b/nibabel/affines.py
index 05fdd7bb5..1478fd2dc 100644
--- a/nibabel/affines.py
+++ b/nibabel/affines.py
@@ -365,7 +365,7 @@ def rescale_affine(affine, shape, zooms, new_shape=None):
A new affine transform with the specified voxel sizes
"""
- shape = np.array(shape, copy=False)
+ shape = np.asarray(shape)
new_shape = np.array(new_shape if new_shape is not None else shape)
s = voxel_sizes(affine)
diff --git a/nibabel/casting.py b/nibabel/casting.py
index f3e04f30f..09015135f 100644
--- a/nibabel/casting.py
+++ b/nibabel/casting.py
@@ -611,7 +611,7 @@ def int_abs(arr):
>>> int_abs(np.array([-128, 127], dtype=np.float32))
array([128., 127.], dtype=float32)
"""
- arr = np.array(arr, copy=False)
+ arr = np.asarray(arr)
dt = arr.dtype
if dt.kind == 'u':
return arr

60
support-pytest-8.patch Normal file
View File

@ -0,0 +1,60 @@
From 82c8588528d5a06fd0dfc99e3cbb83d5cc299e2b Mon Sep 17 00:00:00 2001
From: Sandro <devel@penguinpee.nl>
Date: Wed, 29 May 2024 00:20:34 +0200
Subject: [PATCH] Replace deprecated setup() and teardown()
Those were compatibility functions for porting from nose. They are now
deprecated and have been removed from pytest.
This will make all tests compatible with pytests 8.x.
---
nibabel/streamlines/tests/test_streamlines.py | 2 +-
nibabel/tests/test_deprecated.py | 4 ++--
nibabel/tests/test_dft.py | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/nibabel/streamlines/tests/test_streamlines.py b/nibabel/streamlines/tests/test_streamlines.py
index f0bd9c7c4..53a43c393 100644
--- a/nibabel/streamlines/tests/test_streamlines.py
+++ b/nibabel/streamlines/tests/test_streamlines.py
@@ -20,7 +20,7 @@
DATA = {}
-def setup():
+def setup_module():
global DATA
DATA['empty_filenames'] = [pjoin(data_path, 'empty' + ext) for ext in FORMATS.keys()]
DATA['simple_filenames'] = [pjoin(data_path, 'simple' + ext) for ext in FORMATS.keys()]
diff --git a/nibabel/tests/test_deprecated.py b/nibabel/tests/test_deprecated.py
index f1c3d517c..01636632e 100644
--- a/nibabel/tests/test_deprecated.py
+++ b/nibabel/tests/test_deprecated.py
@@ -14,12 +14,12 @@
from nibabel.tests.test_deprecator import TestDeprecatorFunc as _TestDF
-def setup():
+def setup_module():
# Hack nibabel version string
pkg_info.cmp_pkg_version.__defaults__ = ('2.0',)
-def teardown():
+def teardown_module():
# Hack nibabel version string back again
pkg_info.cmp_pkg_version.__defaults__ = (pkg_info.__version__,)
diff --git a/nibabel/tests/test_dft.py b/nibabel/tests/test_dft.py
index 654af9827..6c6695b16 100644
--- a/nibabel/tests/test_dft.py
+++ b/nibabel/tests/test_dft.py
@@ -26,7 +26,7 @@
data_dir = pjoin(dirname(__file__), 'data')
-def setUpModule():
+def setup_module():
if os.name == 'nt':
raise unittest.SkipTest('FUSE not available for windows, skipping dft tests')
if not have_dicom: