Skip to content

Commit 1b03f63

Browse files
authored
Validate that global core:version is present. (#55)
Do not overwrite version info when reading files.
1 parent 2410874 commit 1b03f63

File tree

4 files changed

+9
-4
lines changed

4 files changed

+9
-4
lines changed

sigmf/sigmffile.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ def __init__(self, metadata=None, data_file=None, global_info=None, skip_checksu
174174
if metadata is None:
175175
self._metadata = {self.GLOBAL_KEY:{}, self.CAPTURE_KEY:[], self.ANNOTATION_KEY:[]}
176176
self._metadata[self.GLOBAL_KEY][self.NUM_CHANNELS_KEY] = 1
177+
self._metadata[self.GLOBAL_KEY][self.VERSION_KEY] = "1.0.0"
177178
elif isinstance(metadata, dict):
178179
self._metadata = metadata
179180
else:
@@ -183,8 +184,6 @@ def __init__(self, metadata=None, data_file=None, global_info=None, skip_checksu
183184
if data_file is not None:
184185
self.set_data_file(data_file, skip_checksum=skip_checksum, map_readonly=map_readonly)
185186

186-
self._metadata[self.GLOBAL_KEY][self.VERSION_KEY] = '1.0.0'
187-
188187
def __len__(self):
189188
return self._memmap.shape[0]
190189

@@ -724,8 +723,6 @@ def __init__(self, metafiles=None, metadata=None, skip_checksums=False):
724723
if not self.skip_checksums:
725724
self.verify_stream_hashes()
726725

727-
self._metadata[self.COLLECTION_KEY][self.VERSION_KEY] = '1.0.0'
728-
729726
def __len__(self):
730727
'''
731728
the length of a collection is the number of streams

tests/conftest.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ def test_sigmffile(test_data_file):
4040
"""If pytest uses this signature, will return valid SigMF file."""
4141
sigf = SigMFFile()
4242
sigf.set_global_field("core:datatype", "rf32_le")
43+
sigf.set_global_field("core:version", "1.0.0")
4344
sigf.add_annotation(start_index=0, length=len(TEST_FLOAT32_DATA))
4445
sigf.add_capture(start_index=0)
4546
sigf.set_data_file(test_data_file.name)

tests/test_archivereader.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ def test_access_data_without_untar(self):
4242
global_info={
4343
SigMFFile.DATATYPE_KEY: f"{complex_prefix}{key}_le",
4444
SigMFFile.NUM_CHANNELS_KEY: num_channels,
45+
SigMFFile.VERSION_KEY: "1.0.0",
4546
},
4647
)
4748
temp_meta.tofile(temp_archive, toarchive=True)

tests/test_validation.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ class FailingCases(unittest.TestCase):
3939
def setUp(self):
4040
self.metadata = dict(TEST_METADATA)
4141

42+
def test_no_version(self):
43+
'''core:version must be present'''
44+
del self.metadata[SigMFFile.GLOBAL_KEY][SigMFFile.VERSION_KEY]
45+
with self.assertRaises(ValidationError):
46+
SigMFFile(self.metadata).validate()
47+
4248
def test_extra_top_level_key(self):
4349
'''no extra keys allowed on the top level'''
4450
self.metadata['extra'] = 0

0 commit comments

Comments
 (0)