diff --git a/freqtrade/persistence/key_value_store.py b/freqtrade/persistence/key_value_store.py index 5ad98d69d..109f94fcc 100644 --- a/freqtrade/persistence/key_value_store.py +++ b/freqtrade/persistence/key_value_store.py @@ -38,11 +38,17 @@ class _KeyValueStoreModel(ModelBase): class KeyValueStore(): + """ + Generic bot-wide, persistent key-value store + Can be used to store generic values, e.g. very first bot startup time. + Supports the types str, datetime, float and int. + """ @staticmethod def get_value(key: str) -> Optional[ValueTypes]: """ Get the value for the given key. + :param key: Key to get the value for """ kv = _KeyValueStoreModel.session.query(_KeyValueStoreModel).filter( _KeyValueStoreModel.key == key).first() @@ -63,6 +69,8 @@ class KeyValueStore(): def store_value(key: str, value: ValueTypes) -> None: """ Store the given value for the given key. + :param key: Key to store the value for - can be used in get-value to retrieve the key + :param value: Value to store - can be str, datetime, float or int """ kv = _KeyValueStoreModel.session.query(_KeyValueStoreModel).filter( _KeyValueStoreModel.key == key).first() @@ -89,6 +97,7 @@ class KeyValueStore(): def delete_value(key: str) -> None: """ Delete the value for the given key. + :param key: Key to delete the value for """ kv = _KeyValueStoreModel.session.query(_KeyValueStoreModel).filter( _KeyValueStoreModel.key == key).first() diff --git a/tests/persistence/test_key_value_store.py b/tests/persistence/test_key_value_store.py index 27e56ba11..8da5e4659 100644 --- a/tests/persistence/test_key_value_store.py +++ b/tests/persistence/test_key_value_store.py @@ -32,6 +32,8 @@ def test_key_value_store(time_machine): # test deleting KeyValueStore.delete_value("test_float") assert KeyValueStore.get_value("test_float") is None + # Delete same value again (should not fail) + KeyValueStore.delete_value("test_float") with pytest.raises(ValueError, match=r"Unknown value type"): KeyValueStore.store_value("test_float", {'some': 'dict'})