Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ed6f173

Browse files
committed
Leave it to hdf5 if fill_time is not provided
1 parent 84ede6c commit ed6f173

File tree

2 files changed

+9
-24
lines changed

2 files changed

+9
-24
lines changed

h5py/_hl/filters.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -264,19 +264,14 @@ def rq_tuple(tpl, name):
264264
if chunks is not None:
265265
plist.set_chunk(chunks)
266266

267-
if fill_time is None:
268-
if chunks is None:
269-
fill_time = 'ifset'
267+
if fill_time is not None:
268+
if (ft := _FILL_TIME_ENUM.get(fill_time)) is not None:
269+
plist.set_fill_time(ft)
270270
else:
271-
fill_time = 'alloc' # prevent resize glitch
272-
else:
273-
if fill_time not in _FILL_TIME_ENUM:
274271
msg = ("fill_time must be one of the following choices: 'alloc', "
275272
f"'never' or 'ifset', but it is {fill_time}.")
276273
raise ValueError(msg)
277274

278-
plist.set_fill_time(_FILL_TIME_ENUM[fill_time])
279-
280275
# scale-offset must come before shuffle and compression
281276
if scaleoffset is not None:
282277
if dtype.kind in ('u', 'i'):

h5py/tests/test_dataset.py

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -482,29 +482,21 @@ class TestFillTime(BaseDataset):
482482
Feature: Datasets created with specified fill time property
483483
"""
484484

485-
def test_contiguous_default(self):
486-
""" Fill time default to IFSET for contiguous storage """
485+
def test_fill_time_default(self):
486+
""" Fill time default to IFSET """
487487
dset = self.f.create_dataset('foo', (10,), fillvalue=4.0)
488488
plist = dset.id.get_create_plist()
489489
self.assertEqual(plist.get_fill_time(), h5py.h5d.FILL_TIME_IFSET)
490490
self.assertEqual(dset[0], 4.0)
491491
self.assertEqual(dset[7], 4.0)
492492

493-
def test_chunk_default(self):
494-
""" Fill time default to ALLOC for chunked storage """
495-
dset = self.f.create_dataset('foo', (10,), chunks=(2,), fillvalue=4.0)
496-
plist = dset.id.get_create_plist()
497-
self.assertEqual(plist.get_fill_time(), h5py.h5d.FILL_TIME_ALLOC)
498-
self.assertEqual(dset[0], 4.0)
499-
self.assertEqual(dset[7], 4.0)
500-
501493
@ut.skipIf('gzip' not in h5py.filters.encode, "DEFLATE is not installed")
502494
def test_compressed_default(self):
503-
""" Fill time is ALLOC for compressed dataset (chunked) """
495+
""" Fill time is IFSET for compressed dataset (chunked) """
504496
dset = self.f.create_dataset('foo', (10,), compression='gzip',
505497
fillvalue=4.0)
506498
plist = dset.id.get_create_plist()
507-
self.assertEqual(plist.get_fill_time(), h5py.h5d.FILL_TIME_ALLOC)
499+
self.assertEqual(plist.get_fill_time(), h5py.h5d.FILL_TIME_IFSET)
508500
self.assertEqual(dset[0], 4.0)
509501
self.assertEqual(dset[7], 4.0)
510502

@@ -519,16 +511,14 @@ def test_fill_time_never(self):
519511
self.assertNotEqual(dset[7], 4.0)
520512

521513
def test_fill_time_alloc(self):
522-
""" Fill time explicitly set to ALLOC (default is IFSET for contiguous
523-
storage """
514+
""" Fill time explicitly set to ALLOC """
524515
dset = self.f.create_dataset('foo', (10,), fillvalue=4.0,
525516
fill_time='alloc')
526517
plist = dset.id.get_create_plist()
527518
self.assertEqual(plist.get_fill_time(), h5py.h5d.FILL_TIME_ALLOC)
528519

529520
def test_fill_time_ifset(self):
530-
""" Fill time explicitly set to IFSET (default is ALLOC for chunked
531-
storage """
521+
""" Fill time explicitly set to IFSET """
532522
dset = self.f.create_dataset('foo', (10,), chunks=(2,), fillvalue=4.0,
533523
fill_time='ifset')
534524
plist = dset.id.get_create_plist()

0 commit comments

Comments
 (0)