def CachingFetcher(cache_path: str, timeout: int) -> Iterator[_SessionFetcher]:
with requests_cache.CachedSession(cache_path, cache_control=True) as session:
yield _SessionFetcher(session, timeout)
+
+
+class FakeFetcher(Fetcher):
+
+ def __init__(self, resources: dict[str, bytes]) -> None:
+ self._resources = resources
+ self._fetch_count = 0
+
+ def fetch(self, url: str) -> bytes:
+ self._fetch_count += 1
+ if url not in self._resources:
+ raise requests.HTTPError("URL not found")
+ return self._resources[url]
+
+ def request_count(self) -> int:
+ return self._fetch_count