diff --git a/CHANGELOG b/CHANGELOG index f64effb..1f25324 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +- 0.0.9 + * Add optional overwrite of contents + * Add list all keys by state - 0.0.8 * Add single bit transition to aliases - 0.0.7 diff --git a/setup.cfg b/setup.cfg index 8b14be0..dd293cb 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = shep -version = 0.0.8 +version = 0.0.9 description = Multi-state key stores using bit masks author = Louis Holbrook author_email = dev@holbrook.no diff --git a/shep/persist.py b/shep/persist.py index 08e3d5d..9661de4 100644 --- a/shep/persist.py +++ b/shep/persist.py @@ -47,10 +47,3 @@ class PersistedState(State): self.__stores[k].remove(key) super(PersistedState, self).purge(key) - - - def get(self, key=None): - state = self.state(key) - k = self.name(state) - - return self.__stores[k].get(key) diff --git a/shep/state.py b/shep/state.py index a2d6557..4b08de4 100644 --- a/shep/state.py +++ b/shep/state.py @@ -249,5 +249,11 @@ class State: return state - def get(self, key): + def get(self, key=None): return self.__contents.get(key) + + + def list(self, state): + if self.__reverse.get(state) == None: + raise StateInvalid(state) + return self.__keys[state] diff --git a/tests/test_file.py b/tests/test_file.py index fa94b21..83b4bc5 100644 --- a/tests/test_file.py +++ b/tests/test_file.py @@ -50,5 +50,23 @@ class TestStateReport(unittest.TestCase): self.assertEqual(self.states.get('abcd'), 'bar') + def test_list(self): + self.states.put('abcd', state=self.states.FOO) + self.states.put('xx!', state=self.states.FOO) + self.states.put('1234', state=self.states.BAR) + keys = self.states.list(self.states.FOO) + self.assertIn('abcd', keys) + self.assertIn('xx!', keys) + self.assertNotIn('1234', keys) + + self.states.alias('xyzzy', self.states.BAR | self.states.FOO) + self.states.put('yyy', state=self.states.XYZZY) + + keys = self.states.list(self.states.XYZZY) + self.assertIn('yyy', keys) + self.assertNotIn('1234', keys) + self.assertNotIn('xx!', keys) + + if __name__ == '__main__': unittest.main()