docs: def _enforce_size_limit(self, capacity):
          """Shrink the cache if necessary, evicting the oldest items."""
          while len(self._cache) > capacity:
              key, value = self._cache.popitem(last=False)
              if self._on_evict is not None:
                  self._on_evict(key, value)