Add list by state

This commit is contained in:
lash 2022-02-01 09:55:12 +00:00
parent 2a09b508b3
commit 60dee4167e
Signed by: lash
GPG Key ID: 21D2E7BB88C2A746
5 changed files with 29 additions and 9 deletions

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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]

View File

@ -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()