"""Module used for handling cache""" from pymemcache import serde from pymemcache.client.base import Client from .constants import MEMCACHED_HOST_PATH class DummyClient: """ A dummy in-memory client that mimics the behavior of a memcached client. This class is designed to simulate the behavior of the `pymemcache.Client` for testing or development purposes. It stores data in a Python dictionary and provides methods to set, get, and update key-value pairs. Attributes: _data (dict): A dictionary that holds the key-value pairs. Methods: set(key, value, **kwargs): Stores the given key-value pair in the internal dictionary. set_many(data, **kwargs): Updates the internal dictionary with multiple key-value pairs. get(key, **kwargs): Retrieves the value associated with the given key from the internal dictionary. """ _data = {} def set(self, key, value, **kwargs): # pylint: disable=unused-argument """ Store a key-value pair in the internal dictionary. Args: key: The key for the item to be stored. value: The value to be stored under the given key. **kwargs: Additional keyword arguments (unused). """ self._data[key] = value def set_many(self, data, **kwargs): # pylint: disable=unused-argument """ Update the internal dictionary with multiple key-value pairs. Args: data: A dictionary containing key-value pairs to be added. **kwargs: Additional keyword arguments (unused). """ self._data.update(data) def get(self, key, **kwargs): # pylint: disable=unused-argument """ Retrieve the value associated with the given key. Args: key: The key for the item to be retrieved. **kwargs: Additional keyword arguments (unused). Returns: The value associated with the given key if it exists. """ return self._data[key] if MEMCACHED_HOST_PATH is None: client = DummyClient() else: client = Client( MEMCACHED_HOST_PATH, timeout=1, allow_unicode_keys=True, encoding='utf-8', serde=serde.pickle_serde )