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 <pepe.schlehofer@gmail.com>
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
--- /dev/null
+#!/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