docs: def many_from_cache(self, preferences):
          """
          Return cached value for given preferences
          missing preferences will be skipped
          """
          keys = {
              p: self.get_cache_key(p.section.name, p.name)
              for p in preferences
          }
          cached = self.cache.get_many(list(keys.values()))
  
          for k, v in cached.items():
              # we replace dummy cached values by None here, if needed
              if v == preferences_settings.CACHE_NONE_VALUE:
                  cached[k] = None
  
          # we have to remap returned value since the underlying cached keys
          # are not usable for an end user
          return {
              p.identifier(): p.serializer.deserialize(cached[k])
              for p, k in keys.items()
              if k in cached
          }