https://llego.dev/posts/implement-lru-cache-python/