def set(self, key: CacheKey, value: Optional[CacheValue]) -> None:
        r"""Create or update a cache.

        :param key: A key string to create or update.
        :type key: :const:`CacheKey`
        :param value: A value to cache.  :const:`None` to remove cache.
        :type value: :class:`~typing.Optional`\ [:const:`CacheValue`]

        """
        raise NotImplementedError(
            'Concreate subclasses of {0.__module__}.{0.__qualname__} have to '
            'override .set() method'.format(CachePolicy)
        )
def set ( self , key : CacheKey , value : Optional [ CacheValue ] ) -> None : raise NotImplementedError ( 'Concreate subclasses of {0.__module__}.{0.__qualname__} have to ' 'override .set() method' . format ( CachePolicy ) )
r"""Create or update a cache.

        :param key: A key string to create or update.
        :type key: :const:`CacheKey`
        :param value: A value to cache.  :const:`None` to remove cache.
        :type value: :class:`~typing.Optional`\ [:const:`CacheValue`]