#!/usr/bin/env python3
"""Offline companion to the SoldFetch draft. Standard library only; no API calls."""

def retry_action(status, code, error=""):
    if status is None:
        return "retry_same_key_after_backoff"
    if 200 <= status < 300:
        return "store_success"
    if status == 429 and code == "quota_exceeded":
        return "pause_for_allowance"
    if status == 409 and code == "idempotency_conflict":
        if error == "Previous request failed; use a new Idempotency-Key":
            return "retry_new_key_after_backoff"
        if error == "Equivalent request is still running":
            return "retry_same_key_after_backoff"
        return "stop_and_review_key"
    if status == 429 and code == "rate_limited":
        return "retry_after_confirmed_failure"
    if status in (502, 503, 504):
        return "review_transient_failure_before_retry"
    return "stop_and_review_request"


def offline_checks():
    cases = [
        (None, None, "", "retry_same_key_after_backoff"),
        (200, None, "", "store_success"),
        (429, "quota_exceeded", "", "pause_for_allowance"),
        (409, "idempotency_conflict", "Previous request failed; use a new Idempotency-Key", "retry_new_key_after_backoff"),
        (409, "idempotency_conflict", "Equivalent request is still running", "retry_same_key_after_backoff"),
        (409, "idempotency_conflict", "Idempotency-Key was used with different parameters", "stop_and_review_key"),
        (429, "rate_limited", "", "retry_after_confirmed_failure"),
        (502, "upstream_error", "", "review_transient_failure_before_retry"),
        (503, "upstream_rate_limited", "", "review_transient_failure_before_retry"),
        (503, "at_capacity", "eBay data access is not enabled", "review_transient_failure_before_retry"),
        (504, "timeout", "", "review_transient_failure_before_retry"),
        (400, "unsupported_capability", "", "stop_and_review_request"),
        (401, "unauthorized", "", "stop_and_review_request"),
    ]
    for status, code, message, expected in cases:
        assert retry_action(status, code, message) == expected
    print(f"{len(cases)} offline retry-policy checks passed; no network requests")

if __name__ == "__main__":
    offline_checks()
