# -*- coding: utf-8 -*-
# Inspired by https://raw.githubusercontent.com/xeroc/python-graphenelib/master/graphenestorage/ram.py
from .interfaces import StoreInterface


# StoreInterface is done first, then dict which overwrites the interface
# methods
class InRamStore(StoreInterface):
    """The InRamStore inherits
    :class:`nectarstorage.interfaces.StoreInterface` and extends it by two
    further calls for wipe and delete.

    The store is syntactically equivalent to a regular dictionary.

    .. warning:: If you are trying to obtain a value for a key that does
        **not** exist in the store, the library will **NOT** raise but
        return a ``None`` value. This represents the biggest difference to
        a regular ``dict`` class.
    """

    # Specific for this library
    def delete(self, key):
        """Delete a key from the store"""
        self.pop(key, None)

    def wipe(self):
        """Wipe the store"""
        keys = list(self.keys()).copy()
        for key in keys:
            self.delete(key)
