diff --git a/.mailmap b/.mailmap index 80c46f385..7b5dfa0d4 100644 --- a/.mailmap +++ b/.mailmap @@ -1,79 +1,87 @@ # Prevent git from showing duplicate names with commands like "git shortlog" # See the manpage of git-shortlog for details. # The syntax is: -# Name that should be used Bad name # -# You can skip Bad name if it is the same as the one that should be used, and is unique. +# Good Name [[Bad Name] ] +# +# If multiple names are mapped to the good email, a line without any bad +# emails will consolidate these names. +# Likewise, any name mapped to a bad email will be converted to the good name. +# +# A contributor with three emails and inconsistent names could be mapped like this: +# +# Good Name +# Good Name +# Good Name +# +# If a contributor uses an email that is not unique to them, you will need their +# name. +# +# Good Name +# Good Name Good Name # # This file is up-to-date if the command git log --format="%aN <%aE>" | sort -u # gives no duplicates. -Alexandre Gramfort Alexandre Gramfort +Alexandre Gramfort Anibal Sólon -Ariel Rokem arokem -B. Nolan Nichols Nolan Nichols -Basile Pinsard bpinsard -Basile Pinsard bpinsard -Ben Cipollini Ben Cipollini +Ariel Rokem +B. Nolan Nichols +Basile Pinsard +Basile Pinsard +Ben Cipollini Benjamin C Darwin -Bertrand Thirion bthirion +Bertrand Thirion Cameron Riddell <31414128+CRiddler@users.noreply.github.com> -Christian Haselgrove Christian Haselgrove -Christopher J. Markiewicz Chris Johnson -Christopher J. Markiewicz Chris Markiewicz -Christopher J. Markiewicz Chris Markiewicz -Christopher J. Markiewicz Christopher J. Markiewicz -Christopher J. Markiewicz Christopher J. Markiewicz -Cindee Madison CindeeM -Cindee Madison cindeem -Demian Wassermann Demian Wassermann +Christian Haselgrove +Christopher J. Markiewicz +Christopher J. Markiewicz +Christopher J. Markiewicz +Cindee Madison +Demian Wassermann Dimitri Papadopoulos Orfanos Dimitri Papadopoulos Orfanos <3234522+DimitriPapadopoulos@users.noreply.github.com> -Eric Larson Eric89GXL -Eric Larson larsoner +Eric Larson Fabian Perez -Fernando Pérez-García Fernando -Félix C. Morency Felix C. Morency -Félix C. Morency Félix C. Morency -Gael Varoquaux GaelVaroquaux -Gregory R. Lee Gregory R. Lee -Ian Nimmo-Smith Ian Nimmo-Smith -Jaakko Leppäkangas jaeilepp -Jacob Roberts +Fernando Pérez-García +Félix C. Morency +Gael Varoquaux +Gregory R. Lee +Ian Nimmo-Smith +Jaakko Leppäkangas Jacob Roberts -Jakub Kaczmarzyk Jakub Kaczmarzyk -Jasper J.F. van den Bosch Jasper -Jean-Baptiste Poline jbpoline +Jasper J.F. van den Bosch +Jean-Baptiste Poline Jérôme Dockès -Jon Haitz Legarreta Jon Haitz Legarreta Gorroño -Jonathan Daniel +Jon Haitz Legarreta Jonathan Daniel <36337649+jond01@users.noreply.github.com> -Kesshi Jordan kesshijordan -Kevin S. Hahn Kevin S. Hahn -Konstantinos Raktivan constracti -Krish Subramaniam Krish Subramaniam +Kesshi Jordan +Kevin S. Hahn +Konstantinos Raktivan +Krish Subramaniam Krzysztof J. Gorgolewski Krzysztof J. Gorgolewski -Marc-Alexandre Côté Marc-Alexandre Cote +Marc-Alexandre Côté Mathias Goncalves Mathias Goncalves -Matthew Cieslak Matt Cieslak +Mathieu Scheltienne +Matthew Cieslak Michael Hanke Michael Hanke -Michiel Cottaar Michiel Cottaar Michiel Cottaar -Ly Nguyen lxn2 -Oliver P. Hinds ohinds +Ly Nguyen +Oliver P. Hinds Or Duek Oscar Esteban -Paul McCarthy Paul McCarthy +Paul McCarthy +Reinder Vos de Wael Roberto Guidotti Roberto Guidotti -Satrajit Ghosh Satrajit Ghosh -Serge Koudoro skoudoro +Satrajit Ghosh +Serge Koudoro Stephan Gerhard Stephan Gerhard -Thomas Roos Roosted7 -Venkateswara Reddy Reddam R3DDY97 +Thomas Roos +Venkateswara Reddy Reddam +Yaroslav O. Halchenko Yaroslav O. Halchenko -Yaroslav O. Halchenko Yaroslav Halchenko diff --git a/.zenodo.json b/.zenodo.json index b96c10234..6cadd84a7 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -38,6 +38,11 @@ "name": "Cheng, Christopher P.", "orcid": "0000-0001-9112-9464" }, + { + "affiliation": "University of Washington: Seattle, WA, United States", + "name": "Larson, Eric", + "orcid": "0000-0003-4782-5360" + }, { "affiliation": "Dartmouth College: Hanover, NH, United States", "name": "Halchenko, Yaroslav O.", @@ -48,11 +53,6 @@ "name": "Cottaar, Michiel", "orcid": "0000-0003-4679-7724" }, - { - "affiliation": "University of Washington: Seattle, WA, United States", - "name": "Larson, Eric", - "orcid": "0000-0003-4782-5360" - }, { "affiliation": "MIT, HMS", "name": "Ghosh, Satrajit", @@ -81,6 +81,11 @@ "name": "Wang, Hao-Ting", "orcid": "0000-0003-4078-2038" }, + { + "affiliation": "CEA", + "name": "Papadopoulos Orfanos, Dimitri", + "orcid": "0000-0002-1242-8990" + }, { "affiliation": "Harvard University - Psychology", "name": "Kastman, Erik", @@ -108,12 +113,12 @@ "orcid": "0000-0003-0679-1985" }, { - "name": "Madison, Cindee" + "affiliation": "Human Neuroscience Platform, Fondation Campus Biotech Geneva, Geneva, Switzerland", + "name": "Mathieu Scheltienne", + "orcid": "0000-0001-8316-7436" }, { - "affiliation": "CEA", - "name": "Papadopoulos Orfanos, Dimitri", - "orcid": "0000-0002-1242-8990" + "name": "Madison, Cindee" }, { "name": "S\u00f3lon, Anibal" @@ -187,6 +192,9 @@ "name": "Klug, Julian", "orcid": "0000-0002-4849-9811" }, + { + "name": "Vos de Wael, Reinder" + }, { "affiliation": "SRI International", "name": "Nichols, B. Nolan", @@ -238,6 +246,9 @@ { "name": "Nguyen, Ly" }, + { + "name": "Suter, Peter" + }, { "affiliation": "BrainSpec, Boston, MA", "name": "Reddigari, Samir", @@ -277,6 +288,9 @@ { "name": "Fauber, Bennet" }, + { + "name": "Dewey, Blake" + }, { "name": "Perez, Fabian" }, @@ -377,15 +391,7 @@ }, { "name": "freec84" - }, - { - "name": "Suter, Peter" } - { - "affiliation": "Human Neuroscience Platform, Fondation Campus Biotech Geneva, Geneva, Switzerland", - "name": "Mathieu Scheltienne", - "orcid": "0000-0001-8316-7436" - }, ], "keywords": [ "neuroimaging" diff --git a/Changelog b/Changelog index cb30decc6..06cbf74fd 100644 --- a/Changelog +++ b/Changelog @@ -25,6 +25,79 @@ Eric Larson (EL), Demian Wassermann, Stephan Gerhard and Ross Markello (RM). References like "pr/298" refer to github pull request numbers. +5.2.0 (Monday 11 December 2023) +=============================== + +New feature release in the 5.2.x series. + +This release requires a minimum Python of 3.8 and NumPy 1.20, and has been +tested up to Python 3.12 and NumPy 1.26. + +New features +------------ +* Add generic :class:`~nibabel.pointset.Pointset` and regularly spaced + :class:`~nibabel.pointset.NDGrid` data structures in preparation for coordinate + transformation and resampling (pr/1251) (CM, reviewed by Oscar Esteban) + +Enhancements +------------ +* Add :meth:`~nibabel.arrayproxy.ArrayProxy.copy` method to + :class:`~nibabel.arrayproxy.ArrayProxy` (pr/1255) (CM, reviewed by Paul McCarthy) +* Permit :meth:`~nibabel.xmlutils.XmlSerializable.to_xml` to pass keyword + arguments to :meth:`~xml.etree.ElementTree.ElementTree.tostring` (pr/1258) + (CM) +* Allow user expansion (e.g., ``~/...``) in strings passed to functions that + accept paths (pr/1260) (Reinder Vos de Wael, reviewed by CM) +* Expand CIFTI-2 brain structures to permit synonyms (pr/1256) (CM, reviewed + by Mathias Goncalves) +* Annotate :class:`~nibabel.spatialimages.SpatialImage` as accepting + ``affine=None`` argument (pr/1253) (Blake Dewey, reviewed by CM) +* Warn on invalid MINC2 spacing declarations, treat as missing (pr/1237) + (Peter Suter, reviewed by CM) +* Refactor :func:`~nibabel.nicom.utils.find_private_element` for improved + readability and maintainability (pr/1228) (MB, reviewed by CM) + +Bug fixes +--------- +* Resolve test failure related to randomly generated invalid case (pr/1221) (CM) + +Documentation +------------- +* Remove references to NiPy data packages from documentation (pr/1275) + (Dimitri Papadopoulos, reviewed by CM, MB) + +Maintenance +----------- +* Quality of life improvements for CI, including color output and OIDC publishing + (pr/1282) (CM) +* Patch for NumPy 2.0 pre-release compatibility (pr/1250) (Mathieu + Scheltienne and EL, reviewed by CM) +* Add spellchecking to tox, CI and pre-commit (pr/1266) (CM) +* Add py312-dev-x64 environment to Tox to test NumPy 2.0 pre-release + compatibility (pr/1267) (CM, reviewed by EL) +* Resurrect tox configuration to cover development workflows and CI checks + (pr/1262) (CM) +* Updates for Python 3.12 support (pr/1247, pr/1261, pr/1273) (CM) +* Remove uses of deprecated ``numpy.compat.py3k`` module (pr/1243) (Eric + Larson, reviewed by CM) +* Various fixes for typos and style issues detected by Codespell, pyupgrade and + refurb (pr/1263, pr/1269, pr/1270, pr/1271, pr/1276) (Dimitri Papadopoulos, + reviewed by CM) +* Use stable argsorts in PARREC tests to ensure consistent behavior on systems + with AVX512 SIMD instructions and numpy 1.25 (pr/1234) (CM) +* Resolve CodeCov submission failures (pr/1224) (CM) +* Link to logo with full URL to avoid broken links in PyPI (pr/1218) (CM, + reviewed by Zvi Baratz) + +API changes and deprecations +---------------------------- +* The :mod:`nibabel.pydicom_compat` module is deprecated and will be removed + in NiBabel 7.0. (pr/1280) +* The :func:`~nibabel.casting.int_to_float` and :func:`~nibabel.casting.as_int` + functions are no longer needed to work around NumPy deficiencies and have been + deprecated (pr/1272) (CM, reviewed by EL) + + 5.1.0 (Monday 3 April 2023) =========================== diff --git a/README.rst b/README.rst index 77d6f5531..2043c1d22 100644 --- a/README.rst +++ b/README.rst @@ -123,6 +123,27 @@ For more information on previous releases, see the `release archive`_ or .. _release archive: https://github.com/nipy/NiBabel/releases .. _development changelog: https://nipy.org/nibabel/changelog.html +Testing +======= + +During development, we recommend using tox_ to run nibabel tests:: + + git clone https://github.com/nipy/nibabel.git + cd nibabel + tox + +To test an installed version of nibabel, install the test dependencies +and run pytest_:: + + pip install nibabel[test] + pytest --pyargs nibabel + +For more information, consult the `developer guidelines`_. + +.. _tox: https://tox.wiki +.. _pytest: https://docs.pytest.org +.. _developer guidelines: https://nipy.org/nibabel/devel/devguide.html + Mailing List ============ diff --git a/doc-requirements.txt b/doc-requirements.txt index 64830ca96..42400ea57 100644 --- a/doc-requirements.txt +++ b/doc-requirements.txt @@ -1,7 +1,7 @@ # Auto-generated by tools/update_requirements.py -r requirements.txt -matplotlib >= 1.5.3 +sphinx +matplotlib>=1.5.3 numpydoc -sphinx ~= 5.3 texext -tomli; python_version < "3.11" +tomli; python_version < '3.11' diff --git a/doc/source/index.rst b/doc/source/index.rst index 65e1aded4..72c731d25 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -55,6 +55,7 @@ contributed code and discussion (in rough order of appearance): * JB Poline * Basile Pinsard * `Satrajit Ghosh`_ +* Eric Larson * `Nolan Nichols`_ * Ly Nguyen * Philippe Gervais @@ -126,6 +127,9 @@ contributed code and discussion (in rough order of appearance): * Horea Christian * Fabian Perez * Mathieu Scheltienne +* Reinder Vos de Wael +* Peter Suter +* Blake Dewey License reprise =============== diff --git a/nibabel/openers.py b/nibabel/openers.py index 9a024680a..90c7774d1 100644 --- a/nibabel/openers.py +++ b/nibabel/openers.py @@ -78,12 +78,6 @@ def __init__( mtime=mtime, ) - def seek(self, pos: int, whence: int = 0, /) -> int: - # Work around bug (gh-180111) in Python 3.12rc1, where seeking without - # flushing can cause write of excess null bytes - self.flush() - return super().seek(pos, whence) - def _gzip_open( filename: str,