From 471b9d6209dc51890c7724b7b57b9121ba30af7d Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sun, 14 Jul 2019 15:47:24 +0300 Subject: Add: placeholder for MuckPersistentState --- ick2/__init__.py | 1 + ick2/persistent.py | 29 +++++++++++++++++++++++++++++ ick2/persistent_tests.py | 6 ++++++ 3 files changed, 36 insertions(+) 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() -- cgit v1.2.1