Spaces:
Sleeping
Sleeping
Claude
Claude Sonnet 5
Add rate limiting, tests, better extraction, and HF auto-deploy
ebab0e2 unverified Download tests/test_cache.py from Almaatla/web-scraper: direct link, hf CLI and curl.
- Browser
- Download file 1.83 kB
-
https://huggingface.co/spaces/Almaatla/web-scraper/resolve/main/tests/test_cache.py
- Command line
-
hf download hf://spaces/Almaatla/web-scraper/tests/test_cache.py
-
curl -L -o test_cache.py https://huggingface.co/spaces/Almaatla/web-scraper/resolve/main/tests/test_cache.py
1.83 kB
| from app.cache import TTLCache | |
| class FakeClock: | |
| def __init__(self, start: float = 0.0): | |
| self.now = start | |
| def __call__(self) -> float: | |
| return self.now | |
| def advance(self, seconds: float) -> None: | |
| self.now += seconds | |
| def test_get_missing_key_returns_none(): | |
| cache = TTLCache(ttl_seconds=60) | |
| assert cache.get("https://example.com/") is None | |
| def test_set_then_get_returns_the_value(): | |
| cache = TTLCache(ttl_seconds=60) | |
| cache.set("https://example.com/", ("Example", "some text")) | |
| assert cache.get("https://example.com/") == ("Example", "some text") | |
| def test_value_expires_after_ttl(): | |
| clock = FakeClock() | |
| cache = TTLCache(ttl_seconds=10, clock=clock) | |
| cache.set("https://example.com/", "value") | |
| clock.advance(9.9) | |
| assert cache.get("https://example.com/") == "value" | |
| clock.advance(0.2) # now past the 10s ttl | |
| assert cache.get("https://example.com/") is None | |
| def test_ttl_of_zero_disables_caching(): | |
| cache = TTLCache(ttl_seconds=0) | |
| cache.set("https://example.com/", "value") | |
| assert cache.get("https://example.com/") is None | |
| def test_evicts_oldest_entry_when_max_size_exceeded(): | |
| cache = TTLCache(ttl_seconds=60, max_size=2) | |
| cache.set("a", "1") | |
| cache.set("b", "2") | |
| cache.set("c", "3") # should evict "a", the least-recently-used | |
| assert cache.get("a") is None | |
| assert cache.get("b") == "2" | |
| assert cache.get("c") == "3" | |
| def test_getting_an_entry_refreshes_its_recency(): | |
| cache = TTLCache(ttl_seconds=60, max_size=2) | |
| cache.set("a", "1") | |
| cache.set("b", "2") | |
| cache.get("a") # touch "a" so it's no longer the least-recently-used | |
| cache.set("c", "3") # should evict "b" instead of "a" | |
| assert cache.get("a") == "1" | |
| assert cache.get("b") is None | |
| assert cache.get("c") == "3" | |