import copy


def get_value(cache_store, key):
    """
    It generates a deep copy of the requested value. It's needed because if a
    pointer is returned, the value can be changed. Which leads to a modified
    cache and unexpected results.

    Returns:
        Value matching given key inside given cache store
    """
    value = cache_store[key]["value"]
    return copy.deepcopy(value)