torchcell.literature.with_zotero_retry

with_zotero_retry(call: ~collections.abc.Callable[[], T], *, max_tries: int = 3, base_delay: float = 2.0, sleep: ~collections.abc.Callable[[float], None] = <built-in function sleep>) → T[source]

Run a zero-arg Zotero call with bounded exponential-backoff retry.

Wrap a single read (lambda: zot.items(...), lambda: zot.file(k)). Transient failures (httpx timeout/transport, 5xx) retry up to max_tries with exponential backoff plus jitter; a 404 / other 4xx raises immediately.