Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions nibabel/cifti2/parse_cifti2.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@
#
### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ##

from distutils.version import LooseVersion

import numpy as np
from io import BytesIO

from packaging.version import Version, parse

from .cifti2 import (Cifti2MetaData, Cifti2Header, Cifti2Label,
Cifti2LabelTable, Cifti2VertexIndices,
Cifti2VoxelIndicesIJK, Cifti2BrainModel, Cifti2Matrix,
Expand Down Expand Up @@ -151,9 +151,9 @@ def StartElementHandler(self, name, attrs):
if name == 'CIFTI':
# create cifti2 image
self.header = Cifti2Header()
self.header.version = attrs['Version']
if LooseVersion(self.header.version) < LooseVersion('2'):
raise ValueError('Only CIFTI-2 files are supported')
self.header.version = ver = attrs['Version']
if parse(ver) < Version("2"):
raise ValueError(f'Only CIFTI-2 files are supported; found version {ver}')
self.fsm_state.append('CIFTI')
self.struct_state.append(self.header)

Expand Down
4 changes: 2 additions & 2 deletions nibabel/cifti2/tests/test_cifti2io_header.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from os.path import join as pjoin, dirname
import io

from distutils.version import LooseVersion
from packaging.version import Version

import nibabel as nib
from nibabel import cifti2 as ci
Expand Down Expand Up @@ -80,7 +80,7 @@ def test_read_and_proxies():
def test_version():
for i, dat in enumerate(datafiles):
img = nib.load(dat)
assert LooseVersion(img.header.version) == LooseVersion('2')
assert Version(img.header.version) == Version('2')


@needs_nibabel_data('nitest-cifti2')
Expand Down
7 changes: 3 additions & 4 deletions nibabel/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import glob
import sys
import configparser
from distutils.version import LooseVersion
from packaging.version import Version

from .environment import get_nipy_user_dir, get_nipy_system_dir

Expand Down Expand Up @@ -330,7 +330,7 @@ def datasource_or_bomber(pkg_def, **options):
Parameters
----------
pkg_def : dict
dict containing at least key 'relpath'. Can optioanlly have keys 'name'
dict containing at least key 'relpath'. Can optionally have keys 'name'
(package name), 'install hint' (for helpful error messages) and 'min
version' giving the minimum necessary version string for the package.
data_path : sequence of strings or None, optional
Expand All @@ -349,8 +349,7 @@ def datasource_or_bomber(pkg_def, **options):
except DataError as e:
return Bomber(sys_relpath, str(e))
# check version
if (version is None or
LooseVersion(ds.version) >= LooseVersion(version)):
if version is None or Version(ds.version) >= Version(version):
return ds
if 'name' in pkg_def:
pkg_name = pkg_def['name']
Expand Down
6 changes: 3 additions & 3 deletions nibabel/openers.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import gzip
import warnings
from os.path import splitext
from distutils.version import StrictVersion
from packaging.version import Version

from nibabel.optpkg import optional_package

Expand All @@ -25,11 +25,11 @@
HAVE_INDEXED_GZIP = True

# < 0.7 - no good
if StrictVersion(version) < StrictVersion('0.7.0'):
if Version(version) < Version('0.7.0'):
warnings.warn(f'indexed_gzip is present, but too old (>= 0.7.0 required): {version})')
HAVE_INDEXED_GZIP = False
# >= 0.8 SafeIndexedGzipFile renamed to IndexedGzipFile
elif StrictVersion(version) < StrictVersion('0.8.0'):
elif Version(version) < Version('0.8.0'):
IndexedGzipFile = igzip.SafeIndexedGzipFile
else:
IndexedGzipFile = igzip.IndexedGzipFile
Expand Down
10 changes: 5 additions & 5 deletions nibabel/optpkg.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
""" Routines to support optional packages """
from distutils.version import LooseVersion
from packaging.version import Version
from .tripwire import TripWire


def _check_pkg_version(pkg, min_version):
# Default version checking function
if isinstance(min_version, str):
min_version = LooseVersion(min_version)
min_version = Version(min_version)
try:
return min_version <= pkg.__version__
return min_version <= Version(pkg.__version__)
except AttributeError:
return False

Expand All @@ -24,9 +24,9 @@ def optional_package(name, trip_msg=None, min_version=None):
message to give when someone tries to use the return package, but we
could not import it at an acceptable version, and have returned a
TripWire object instead. Default message if None.
min_version : None or str or LooseVersion or callable
min_version : None or str or Version or callable
If None, do not specify a minimum version. If str, convert to a
`distutils.version.LooseVersion`. If str or LooseVersion` compare to
``packaging.version.Version``. If str or ``Version`` compare to
version of package `name` with ``min_version <= pkg.__version__``. If
callable, accepts imported ``pkg`` as argument, and returns value of
callable is True for acceptable package versions, False otherwise.
Expand Down
8 changes: 4 additions & 4 deletions nibabel/tests/test_h5py_compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"""
import sys
import os
from distutils.version import LooseVersion
from packaging.version import Version
import numpy as np

from ..optpkg import optional_package
Expand All @@ -25,7 +25,7 @@ def test_optpkg_equivalence():
if not have_h5py:
assert not compat.have_h5py
# Available when version is high enough
elif LooseVersion(h5py.__version__) >= '2.10':
elif Version(h5py.__version__) >= Version('2.10'):
assert compat.have_h5py


Expand All @@ -35,11 +35,11 @@ def test_disabled_h5py_cases():
# Recapitulate min_h5py conditions from _h5py_compat
assert os.name == 'nt'
assert (3,) <= sys.version_info < (3, 6)
assert LooseVersion(h5py.__version__) < '2.10'
assert Version(h5py.__version__) < Version('2.10')
# Verify that the root cause is present
# If any tests fail, they will likely be these, so they may be
# ill-advised...
if LooseVersion(np.__version__) < '1.18':
if Version(np.__version__) < Version('1.18'):
assert str(np.longdouble) == str(np.float64)
else:
assert str(np.longdouble) != str(np.float64)
Expand Down
4 changes: 2 additions & 2 deletions nibabel/tests/test_openers.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import contextlib
from gzip import GzipFile
from io import BytesIO, UnsupportedOperation
from distutils.version import StrictVersion
from packaging.version import Version
import hashlib
import time

Expand Down Expand Up @@ -106,7 +106,7 @@ def test_Opener_various():
# indexed gzip is used by default, and drops file
# handles by default, so we don't have a fileno.
elif input.endswith('gz') and HAVE_INDEXED_GZIP and \
StrictVersion(igzip.__version__) >= StrictVersion('0.7.0'):
Version(igzip.__version__) >= Version('0.7.0'):
with pytest.raises(igzip.NoHandleError):
fobj.fileno()
else:
Expand Down
6 changes: 3 additions & 3 deletions nibabel/tests/test_optpkg.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import types
import sys
import builtins
from distutils.version import LooseVersion
from packaging.version import Version

from unittest import SkipTest
import pytest
Expand Down Expand Up @@ -67,10 +67,10 @@ def test_versions():
# Now add a version
fake_pkg.__version__ = '2.0'
# We have fake_pkg > 1.0
for min_ver in (None, '1.0', LooseVersion('1.0'), lambda pkg: True):
for min_ver in (None, '1.0', Version('1.0'), lambda pkg: True):
assert_good(fake_name, min_ver)
# We never have fake_pkg > 100.0
for min_ver in ('100.0', LooseVersion('100.0'), lambda pkg: False):
for min_ver in ('100.0', Version('100.0'), lambda pkg: False):
assert_bad(fake_name, min_ver)
# Check error string for bad version
pkg, _, _ = optional_package(fake_name, min_version='3.0')
Expand Down