Component · for humans & their agents
Tenacity Idempotency Policy
verified · first-partyactively maintained$0 during beta (was $59)
A retry layer that will retry anything will eventually retry a charge. This one refuses to retry a non-idempotent operation unless you supply a key.
by Code Recycle
Every claim on this page is refundable if it is untrue — refund policy.
Verified: 92 tests
For Tenacity -- not affiliated with or endorsed by its authors. Tenacity is a normal runtime dependency (tenacity>=9.1.0,<10.0.0 in pyproject.toml), never forked, vendored or redistributed. All credit for Tenacity's retry engine belongs to Julien Danjou and its contributors.
A POLICY LAYER FOR TENACITY that requires the caller to DECLARE IDEMPOTENCY and refuses to retry a non-idempotent operation unless an idempotency key is supplied.
For Tenacity -- not affiliated with or endorsed by its authors. Tenacity is a normal runtime dependency (tenacity>=9.1.0,<10.0.0 in pyproject.toml), never forked, vendored or redistributed. All credit for Tenacity's retry engine belongs to Julien Danjou and its contributors.
THE SILENT FAILURE. A retry decorator does not know what it is retrying. Wrapped around a charge, an email send or an insert, a retry after a timeout that actually SUCCEEDED server-side produces a second charge, a second email, a second row -- and the client only ever saw one failure. Nothing raises; the duplicate is invisible from the caller's side.
SO IDEMPOTENCY IS DECLARED, NOT ASSUMED. An operation must say which it is. A non-idempotent one without an idempotency key is REFUSED rather than retried, which turns a silent duplicate into a loud configuration error at the point where someone can still fix it.
IT ALSO CLASSIFIES EXCEPTIONS retryable / terminal / unknown, so a 400 is never retried into the budget -- retrying a request the server has already rejected as malformed spends the budget that the one recoverable failure needed. And it honours a server-supplied Retry-After over any locally computed backoff: a server that has told you when to come back has better information than your exponential curve.
VERIFIED: 92 tests, measured by running the suite.
DELIVERY: signed download of a hash-verified tarball, immediately on purchase. Permissive licence: unlimited products, unlimited clients, unlimited seats, no attribution, perpetual and irrevocable. One restriction, do not republish the source as source.
01Capabilities
Does
- + Idempotent fulfilment
- + Reliability
- + Retry and backoff policy
Doesn’t
- No exclusions declared
02Requirements & stack
Depends on
No declared dependencies
Credentials needed
None declared
Stack
03Community
No endorsements yetNo verified confirmations yet — be the first.
Confirmations come from verified purchasers, installers, vetted reviewers, or an installation outcome your org reported through the agent tools. They grade quality — security is verified separately, and community votes can never override the security gate.
Sign in to confirm — weight comes from verified usage, not vote count.
Issues 1
Open an issue0 open · 0 answered · 0 fixed · 1 said it worked
- closedWorked for me — 92/92 pytest on Python 3.12.13, macOS 26.4Worked for me
04Trust Passport
Full passport →0/0 automated components pass. An automated score is never a security guarantee.
- publisher identity Publisher status verified; 1 verification(s) on file
- malicious pattern scan No known malicious-behavior patterns across 17 source file(s) plus listing text
- capability contract All 0 observed capability reference(s) match the declared manifest
- agent safety scan No injection patterns in agent-readable content
- provenance No release signature or provenance attestation
- behavioral sandbox Not performed in this environment — requires the production isolated runner (docs/sandbox-requirements.md). No untrusted code is ever executed on the application host.
Every listing must pass this review before it can be sold, and it is re-run on every release. Verification describes what we checked — it is not a guarantee that the software is safe.
05Versions
Full history →| Version | Channel | Released | Notes |
|---|---|---|---|
| 1.0.0 | stable | Aug 6, 2026 | First public release. |