Skip to content

Commit fcd489b

Browse files
committed
ENH: Throw in .zst while here
1 parent 8bad78f commit fcd489b

File tree

4 files changed

+11
-5
lines changed

4 files changed

+11
-5
lines changed

nibabel/filebasedimages.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ def _sniff_meta_for(klass, filename, sniff_nbytes, sniff=None):
430430
try:
431431
with ImageOpener(meta_fname, 'rb') as fobj:
432432
binaryblock = fobj.read(sniff_nbytes)
433-
except IOError:
433+
except (IOError, EOFError):
434434
return None
435435
return (binaryblock, meta_fname)
436436

nibabel/filename_parser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ def _iendswith(whole, end):
253253

254254

255255
def splitext_addext(filename,
256-
addexts=('.gz', '.bz2'),
256+
addexts=('.gz', '.bz2', '.zst'),
257257
match_case=False):
258258
""" Split ``/pth/fname.ext.gz`` into ``/pth/fname, .ext, .gz``
259259

nibabel/loadsave.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ def _signature_matches_extension(filename):
4444
"""
4545
signatures = {
4646
".gz": {"signature": b"\x1f\x8b", "format_name": "gzip"},
47-
".bz2": {"signature": b"BZh", "format_name": "bzip2"}
47+
".bz2": {"signature": b"BZh", "format_name": "bzip2"},
48+
".zst": {"signature": b"\x28\xb5\x2f\xfd", "format_name": "ztsd"},
4849
}
4950
filename = _stringify_path(filename)
5051
*_, ext = splitext_addext(filename)

nibabel/tests/test_loadsave.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
from ..optpkg import optional_package
1919
_, have_scipy, _ = optional_package('scipy')
20+
_, have_pyzstd, _ = optional_package('pyzstd')
2021

2122
from numpy.testing import (assert_almost_equal,
2223
assert_array_equal)
@@ -75,16 +76,20 @@ def test_load_empty_image():
7576
assert str(err.value).startswith('Empty file: ')
7677

7778

78-
@pytest.mark.parametrize("extension", [".gz", ".bz2"])
79+
@pytest.mark.parametrize("extension", [".gz", ".bz2", ".zst"])
7980
def test_load_bad_compressed_extension(tmp_path, extension):
81+
if extension == ".zst" and not have_pyzstd:
82+
pytest.skip()
8083
file_path = tmp_path / f"img.nii{extension}"
8184
file_path.write_bytes(b"bad")
8285
with pytest.raises(ImageFileError, match=".*is not a .* file"):
8386
load(file_path)
8487

8588

86-
@pytest.mark.parametrize("extension", [".gz", ".bz2"])
89+
@pytest.mark.parametrize("extension", [".gz", ".bz2", ".zst"])
8790
def test_load_good_extension_with_bad_data(tmp_path, extension):
91+
if extension == ".zst" and not have_pyzstd:
92+
pytest.skip()
8893
file_path = tmp_path / f"img.nii{extension}"
8994
with Opener(file_path, "wb") as fobj:
9095
fobj.write(b"bad")

0 commit comments

Comments
 (0)