Skip to content

Commit edccc81

Browse files
authored
Add __eq__ method to SigMFFile (#98)
1 parent 2311513 commit edccc81

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

sigmf/sigmffile.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,17 @@ def __init__(self, metadata=None, data_file=None, global_info=None, skip_checksu
192192
def __len__(self):
193193
return self._memmap.shape[0]
194194

195+
def __eq__(self, other):
196+
"""
197+
Define equality between two `SigMFFile`s.
198+
199+
Rely on the checksum value in the metadata to decide whether `data_file` is the same since the path of the
200+
dataset is immaterial to equivalency.
201+
"""
202+
if isinstance(other, SigMFFile):
203+
return self._metadata == other._metadata
204+
return False
205+
195206
def __next__(self):
196207
"""get next batch of samples"""
197208
if self.iter_position < len(self):

tests/test_sigmffile.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,14 @@ def test_checksum(self):
5959
with self.assertRaises(error.SigMFFileError):
6060
_ = SigMFFile(bad_checksum_metadata, self.temp_path_data)
6161

62+
def test_equality(self):
63+
"""Ensure __eq__ working as expected"""
64+
other = SigMFFile(copy.deepcopy(TEST_METADATA))
65+
self.assertEqual(self.sigmf_object, other)
66+
# different after changing any part of metadata
67+
other.add_annotation(start_index=0, metadata={"a": 0})
68+
self.assertNotEqual(self.sigmf_object, other)
69+
6270

6371
class TestAnnotationHandling(unittest.TestCase):
6472
def test_get_annotations_with_index(self):

0 commit comments

Comments
 (0)