code: def put(self, item, *args, **kwargs):
          
          if not self.enabled:
              return
          # Check for a timeout keyword, store and remove it.
          timeout = kwargs.pop('timeout', None)
          if timeout is None:
              timeout = self.default_timeout
          cache_key = self.make_key(args, kwargs)
          # Store the item, along with the time at which it will expire
          with self._cache_lock:
              self._cache[cache_key] = (time() + timeout, item)
docs: Put an item into the cache, for this combination of args and kwargs.
  
          Args:
              *args: any arguments.
              **kwargs: any keyword arguments. If ``timeout`` is specified as one
                   of the keyword arguments, the item will remain available
                   for retrieval for ``timeout`` seconds. If ``timeout`` is
                   `None` or not specified, the ``default_timeout`` for this
                   cache will be used. Specify a ``timeout`` of 0 (or ensure that
                   the ``default_timeout`` for this cache is 0) if this item is
                   not to be cached.