Intelegentny_Pszczelarz/.venv/Lib/site-packages/h5py/tests/test_filters.py

104 lines
3.2 KiB
Python
Raw Normal View History

2023-06-19 00:49:18 +02:00
# This file is part of h5py, a Python interface to the HDF5 library.
#
# http://www.h5py.org
#
# Copyright 2008-2013 Andrew Collette and contributors
#
# License: Standard 3-clause BSD; see "license.txt" for full license terms
# and contributor agreement.
"""
Tests the h5py._hl.filters module.
"""
import os
import numpy as np
import h5py
import pytest
from .common import ut, TestCase, insubprocess
class TestFilters(TestCase):
def setUp(self):
""" like TestCase.setUp but also store the file path """
self.path = self.mktemp()
self.f = h5py.File(self.path, 'w')
@ut.skipUnless(h5py.h5z.filter_avail(h5py.h5z.FILTER_SZIP), 'szip filter required')
def test_wr_szip_fletcher32_64bit(self):
""" test combination of szip, fletcher32, and 64bit arrays
The fletcher32 checksum must be computed after the szip
compression is applied.
References:
- GitHub issue #953
- https://lists.hdfgroup.org/pipermail/
hdf-forum_lists.hdfgroup.org/2018-January/010753.html
"""
self.f.create_dataset("test_data",
data=np.zeros(10000, dtype=np.float64),
fletcher32=True,
compression="szip",
)
self.f.close()
with h5py.File(self.path, "r") as h5:
# Access the data which will compute the fletcher32
# checksum and raise an OSError if something is wrong.
h5["test_data"][0]
def test_wr_scaleoffset_fletcher32(self):
""" make sure that scaleoffset + fletcher32 is prevented
"""
data = np.linspace(0, 1, 100)
with self.assertRaises(ValueError):
self.f.create_dataset("test_data",
data=data,
fletcher32=True,
# retain 3 digits after the decimal point
scaleoffset=3,
)
@ut.skipIf('gzip' not in h5py.filters.encode, "DEFLATE is not installed")
def test_filter_ref_obj(writable_file):
gzip8 = h5py.filters.Gzip(level=8)
# **kwargs unpacking (compatible with earlier h5py versions)
assert dict(**gzip8) == {
'compression': h5py.h5z.FILTER_DEFLATE,
'compression_opts': (8,)
}
# Pass object as compression argument (new in h5py 3.0)
ds = writable_file.create_dataset(
'x', shape=(100,), dtype=np.uint32, compression=gzip8
)
assert ds.compression == 'gzip'
assert ds.compression_opts == 8
def test_filter_ref_obj_eq():
gzip8 = h5py.filters.Gzip(level=8)
assert gzip8 == h5py.filters.Gzip(level=8)
assert gzip8 != h5py.filters.Gzip(level=7)
@pytest.mark.mpi_skip
@insubprocess
def test_unregister_filter(request):
if h5py.h5z.filter_avail(h5py.h5z.FILTER_LZF):
res = h5py.h5z.unregister_filter(h5py.h5z.FILTER_LZF)
assert res
@ut.skipIf(not os.getenv('H5PY_TEST_CHECK_FILTERS'), "H5PY_TEST_CHECK_FILTERS not set")
def test_filters_available():
assert 'gzip' in h5py.filters.decode
assert 'gzip' in h5py.filters.encode
assert 'lzf' in h5py.filters.decode
assert 'lzf' in h5py.filters.encode