From f2c07b9ba015312a0c17705f6f665510af815306 Mon Sep 17 00:00:00 2001 From: Alexandru Ardelean Date: Sun, 29 Mar 2026 12:43:53 +0000 Subject: [PATCH] python-cachetools: bump to 7.0.5 Changes since 5.3.1: - v6.0: Drop Python 3.7 support; add Python 3.12/3.13 - v6.0: TTLCache now uses monotonic time for expiry - v7.0: Cache classes are now generic (PEP 585 type hints) - v7.0: New MRUCache (most-recently-used) eviction policy - Various performance improvements across all cache types Also add test.sh to verify LRU/LFU/TTL caches and @cached decorator. Link: https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst Signed-off-by: Alexandru Ardelean --- lang/python/python-cachetools/Makefile | 6 ++- lang/python/python-cachetools/test.sh | 51 ++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 2 deletions(-) create mode 100755 lang/python/python-cachetools/test.sh diff --git a/lang/python/python-cachetools/Makefile b/lang/python/python-cachetools/Makefile index fbe2dff94d..7462aeb819 100644 --- a/lang/python/python-cachetools/Makefile +++ b/lang/python/python-cachetools/Makefile @@ -8,16 +8,18 @@ include $(TOPDIR)/rules.mk PKG_NAME:=python-cachetools -PKG_VERSION:=5.3.1 +PKG_VERSION:=7.0.5 PKG_RELEASE:=1 PYPI_NAME:=cachetools -PKG_HASH:=dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b +PKG_HASH:=0cd042c24377200c1dcd225f8b7b12b0ca53cc2c961b43757e774ebe190fd990 PKG_MAINTAINER:=Josef Schlehofer PKG_LICENSE:=MIT PKG_LICENSE_FILES:=LICENSE +PKG_BUILD_DEPENDS:=python-setuptools/host + include ../pypi.mk include $(INCLUDE_DIR)/package.mk include ../python3-package.mk diff --git a/lang/python/python-cachetools/test.sh b/lang/python/python-cachetools/test.sh new file mode 100755 index 0000000000..9e9cbac28b --- /dev/null +++ b/lang/python/python-cachetools/test.sh @@ -0,0 +1,51 @@ +#!/bin/sh + +[ "$1" = "python3-cachetools" ] || exit 0 + +python3 - << EOF +import sys +import cachetools + +if cachetools.__version__ != "$2": + print("Wrong version: " + cachetools.__version__) + sys.exit(1) + +from cachetools import LRUCache, TTLCache, LFUCache, cached + +# LRUCache: evicts least recently used +cache = LRUCache(maxsize=2) +cache["a"] = 1 +cache["b"] = 2 +cache["c"] = 3 # evicts "a" +assert "a" not in cache +assert cache["b"] == 2 +assert cache["c"] == 3 + +# LFUCache: evicts least frequently used +lfu = LFUCache(maxsize=2) +lfu["x"] = 10 +lfu["y"] = 20 +_ = lfu["x"] # x accessed twice +lfu["z"] = 30 # evicts "y" (lower frequency) +assert "x" in lfu +assert "y" not in lfu + +# TTLCache: entries expire +ttl = TTLCache(maxsize=10, ttl=60) +ttl["key"] = "val" +assert ttl["key"] == "val" + +# @cached decorator +call_count = [0] + +@cached(cache=LRUCache(maxsize=4)) +def expensive(n): + call_count[0] += 1 + return n * n + +assert expensive(3) == 9 +assert expensive(3) == 9 # cached, no extra call +assert call_count[0] == 1 + +sys.exit(0) +EOF