diff options
author | Lars Wirzenius <liw@liw.fi> | 2019-07-14 15:47:24 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2019-08-03 21:06:50 +0300 |
commit | 471b9d6209dc51890c7724b7b57b9121ba30af7d (patch) | |
tree | 2588958603fa067487bcecb9a51770b82a5804d2 | |
parent | 581f6cd53f57599326439dccb355e882e7858faa (diff) | |
download | ick2-471b9d6209dc51890c7724b7b57b9121ba30af7d.tar.gz |
Add: placeholder for MuckPersistentState
-rw-r--r-- | ick2/__init__.py | 1 | ||||
-rw-r--r-- | ick2/persistent.py | 29 | ||||
-rw-r--r-- | ick2/persistent_tests.py | 6 |
3 files changed, 36 insertions, 0 deletions
diff --git a/ick2/__init__.py b/ick2/__init__.py index 0016f13..147d87a 100644 --- a/ick2/__init__.py +++ b/ick2/__init__.py @@ -17,6 +17,7 @@ from .version import __version__, __version_info__ from .logging import setup_logging, log from .persistent import ( MemoryPersistentState, + MuckPersistentState, NotFound, Resource, resource_from_dict, diff --git a/ick2/persistent.py b/ick2/persistent.py index bb0aeb6..31473ba 100644 --- a/ick2/persistent.py +++ b/ick2/persistent.py @@ -78,6 +78,35 @@ class MemoryPersistentState(PersistentStateInterface): del self._res[kind][rid] +class MuckPersistentState(PersistentStateInterface): + + def __init__(self): + self._res = {} + + def get_resource_ids(self, kind): + if kind not in self._res: + return [] + return list(self._res[kind].keys()) + + def has_resource(self, kind, rid): + return kind in self._res and rid in self._res[kind] + + def get_resource(self, kind, rid): + if kind not in self._res or rid not in self._res[kind]: + raise ick2.NotFound(kind=kind, rid=rid) + return self._res[kind][rid] + + def write_resource(self, kind, rid, resource): + if kind not in self._res: + self._res[kind] = {} + self._res[kind][rid] = resource + + def remove_resource(self, kind, rid): + if kind not in self._res or rid not in self._res[kind]: + raise ick2.NotFound(kind=kind, rid=rid) + del self._res[kind][rid] + + class NotFound(Exception): def __init__(self, kind, rid): diff --git a/ick2/persistent_tests.py b/ick2/persistent_tests.py index 61cd43f..3d72342 100644 --- a/ick2/persistent_tests.py +++ b/ick2/persistent_tests.py @@ -66,3 +66,9 @@ class MemoryPersistentStateTests(unittest.TestCase, PersistentStateTestsMixIn): def setUp(self): self.state = ick2.MemoryPersistentState() + + +class MuckPersistentStateTests(unittest.TestCase, PersistentStateTestsMixIn): + + def setUp(self): + self.state = ick2.MuckPersistentState() |