Skip to content

Commit

Permalink
qctoolkit.serialization.PulseStorage: Fixes to __getitem__.
Browse files Browse the repository at this point in the history
Implementation was inconsistent with _temporary_storage usage in other places.
  • Loading branch information
lumip committed Jun 7, 2018
1 parent 6e42954 commit 65f568c
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 9 deletions.
19 changes: 13 additions & 6 deletions qctoolkit/serialization.py
Original file line number Diff line number Diff line change
Expand Up @@ -615,12 +615,19 @@ def __init__(self,
storage_backend: StorageBackend) -> None:
self._storage_backend = storage_backend

self._temporary_storage = dict()
self._temporary_storage = dict() # type: Dict[str, StorageEntry]

def _deserialize(self, identifier) -> Serializable:
serialized = self._storage_backend[identifier]
def _deserialize(self, serialization: str) -> Serializable:
decoder = JSONSerializableDecoder(storage=self)
return decoder.decode(serialized)
serializable = decoder.decode(serialization)
return serializable

def _load_and_deserialize(self, identifier: str) -> StorageEntry:
serialization = self._storage_backend[identifier]
serializable = self._deserialize(serialization)
self._temporary_storage[identifier] = PulseStorage.StorageEntry(serialization=serialization,
serializable=serializable)
return self._temporary_storage[identifier]

@property
def temporary_storage(self) -> Dict[str, StorageEntry]:
Expand All @@ -631,8 +638,8 @@ def __contains__(self, identifier) -> bool:

def __getitem__(self, identifier: str) -> Serializable:
if identifier not in self._temporary_storage:
self._temporary_storage[identifier] = self._deserialize(identifier)
return self._temporary_storage[identifier]
self._load_and_deserialize(identifier)
return self._temporary_storage[identifier].serializable

def __setitem__(self, identifier: str, serializable: Serializable) -> None:
if identifier in self._temporary_storage:
Expand Down
6 changes: 3 additions & 3 deletions tests/serialization_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -358,8 +358,8 @@ def setUp(self):

def test_deserialize(self):
obj = {'my_obj': 'tröt', 'wurst': [12, 3, 4]}
self.backend['asd'] = json.dumps(obj)
deserialized = self.storage._deserialize('asd')
serialized = json.dumps(obj)
deserialized = self.storage._deserialize(serialized)
self.assertEqual(deserialized, obj)

def test_contains(self):
Expand All @@ -379,7 +379,7 @@ def test_contains(self):
def test_getitem(self):
instance = DummySerializable(identifier='my_id')

self.storage.temporary_storage['asd'] = instance
self.storage.temporary_storage['asd'] = PulseStorage.StorageEntry(serialization='foobar', serializable=instance)

self.assertIs(self.storage['asd'], instance)
with self.assertRaises(KeyError):
Expand Down

0 comments on commit 65f568c

Please sign in to comment.