summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2019-07-14 15:47:24 +0300
committerLars Wirzenius <liw@liw.fi>2019-08-03 21:06:50 +0300
commit471b9d6209dc51890c7724b7b57b9121ba30af7d (patch)
tree2588958603fa067487bcecb9a51770b82a5804d2
parent581f6cd53f57599326439dccb355e882e7858faa (diff)
downloadick2-471b9d6209dc51890c7724b7b57b9121ba30af7d.tar.gz
Add: placeholder for MuckPersistentState
-rw-r--r--ick2/__init__.py1
-rw-r--r--ick2/persistent.py29
-rw-r--r--ick2/persistent_tests.py6
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()