def ts_get_manifest(ts_path): """Reads in or makes up a manifest for the timestream at ``ts_path``, and returns it as a ``dict`` """ manifest = _ts_has_manifest(ts_path) if manifest: try: LOG.debug("Manifest for {} exists at {}".format(ts_path, manifest)) with open(manifest) as ifh: manifest = json.load(ifh) if isinstance(manifest, list): # it comes in as a list, we want a dict manifest = dict_unicode_to_str(manifest[0]) else: manifest = dict_unicode_to_str(manifest) manifest = validate_timestream_manifest(manifest) except (IOError, OSError, ValueError, MultipleInvalid): # We can't read manifest or it's invalid manifest = None if not manifest: LOG.debug("Manifest for {} doesn't exist (yet)".format(ts_path)) manifest = ts_guess_manifest(ts_path) manifest = validate_timestream_manifest(manifest) LOG.debug("Manifest for {} is {!r}".format(ts_path, manifest)) return manifest
def test_validate_invalid(self): """Test validate_timestream_manifest with invalid manfests""" with self.assertRaises(TypeError): validate_timestream_manifest(None) with self.assertRaises(MultipleInvalid): validate_timestream_manifest({"A": "b", })
def _set_metadata(self, **metadata): """Sets class members from ``metadata`` dict, first validating it.""" metadata = validate_timestream_manifest(metadata) for datum, value in metadata.items(): setattr(self, datum, value)
def test_validate_valid(self): """Test validate_timestream_manifest with valid manfests""" self.assertDictEqual(validate_timestream_manifest(self.str_dict), self.val_dict) self.assertDictEqual(validate_timestream_manifest(self.val_dict), self.val_dict)