Handle completely empty veclists

master
Alinson S. Xavier 4 years ago
parent 3da8d532a8
commit a0f8bf15d6
No known key found for this signature in database
GPG Key ID: DCA0DAD4D2F58624

@ -238,7 +238,8 @@ class Hdf5Sample(Sample):
else: else:
data = np.array(padded) data = np.array(padded)
break break
assert data is not None if data is None:
data = np.array(padded)
ds = self._put(key, data) ds = self._put(key, data)
ds.attrs["lengths"] = lens ds.attrs["lengths"] = lens
@ -254,7 +255,7 @@ def _pad(veclist: VectorList) -> Tuple[VectorList, List[int]]:
maxlen = max(lens) maxlen = max(lens)
# Find appropriate constant to pad the vectors # Find appropriate constant to pad the vectors
constant: Union[int, float, str, None] = None constant: Union[int, float, str] = 0
for v in veclist: for v in veclist:
if v is None or len(v) == 0: if v is None or len(v) == 0:
continue continue
@ -266,7 +267,6 @@ def _pad(veclist: VectorList) -> Tuple[VectorList, List[int]]:
constant = "" constant = ""
else: else:
assert False, f"Unsupported data type: {v[0]}" assert False, f"Unsupported data type: {v[0]}"
assert constant is not None, "veclist must not be completely empty"
# Pad vectors # Pad vectors
for (i, vi) in enumerate(veclist): for (i, vi) in enumerate(veclist):

@ -34,6 +34,7 @@ def _test_sample(sample: Sample) -> None:
_assert_roundtrip_vector_list(sample, [[True], [False, False], None]) _assert_roundtrip_vector_list(sample, [[True], [False, False], None])
_assert_roundtrip_vector_list(sample, [[1], None, [2, 2], [3, 3, 3]]) _assert_roundtrip_vector_list(sample, [[1], None, [2, 2], [3, 3, 3]])
_assert_roundtrip_vector_list(sample, [[1.0], None, [2.0, 2.0], [3.0, 3.0, 3.0]]) _assert_roundtrip_vector_list(sample, [[1.0], None, [2.0, 2.0], [3.0, 3.0, 3.0]])
_assert_roundtrip_vector_list(sample, [None, None])
# Bytes # Bytes
_assert_roundtrip_bytes(sample, b"\x00\x01\x02\x03\x04\x05") _assert_roundtrip_bytes(sample, b"\x00\x01\x02\x03\x04\x05")
@ -68,6 +69,7 @@ def _assert_roundtrip_vector_list(sample: Sample, expected: Any) -> None:
actual = sample.get_vector_list("key") actual = sample.get_vector_list("key")
assert actual == expected assert actual == expected
assert actual is not None assert actual is not None
if actual[0] is not None:
_assert_same_type(actual[0][0], expected[0][0]) _assert_same_type(actual[0][0], expected[0][0])

Loading…
Cancel
Save