{"id":23684,"library":"eth-retry","title":"eth-retry","description":"eth-retry provides a decorator that automatically catches known transient exceptions common in the Ethereum/EVM ecosystem (RPC errors, rate limits, timeouts) and retries the decorated function. Current version is 0.3.7, with an active release cadence. Requires Python >=3.10.","status":"active","version":"0.3.7","language":"python","source_language":"en","source_url":"https://github.com/BobTheBuidler/eth_retry","tags":["ethereum","retry","decorator","web3","rpc"],"install":[{"cmd":"pip install eth-retry","lang":"bash","label":"Install via pip"}],"dependencies":[],"imports":[{"wrong":"from eth_retry import eth_retry","symbol":"eth_retry","correct":"from eth_retry import eth_retry"}],"quickstart":{"code":"import os\nfrom eth_retry import eth_retry, eth_retry_async\n\n# Synchronous usage\n@eth_retry\ndef fetch_balance(address: str) -> int:\n    # Simulate RPC call that might fail\n    return 100\n\nresult = fetch_balance('0x...')\nprint(result)\n\n# Async usage\n@eth_retry_async\nasync def fetch_balance_async(address: str) -> int:\n    return 100\n\nimport asyncio\nasyncio.run(fetch_balance_async('0x...'))","lang":"python","description":"Basic usage of eth-retry for synchronous and asynchronous functions."},"warnings":[{"fix":"If you need to retry on other exceptions, pass them via exceptions=[...] in the decorator.","message":"The decorator only retries on specific known transient exceptions (e.g., RPC errors, rate limits, timeouts). Custom exceptions are not retried unless you use the `exceptions` parameter.","severity":"gotcha","affected_versions":"all"},{"fix":"Set environment variables before importing eth_retry, or use decorator kwargs to override.","message":"When using environment variables (e.g., ETH_RETRY_MAX_RETRIES), they are read at import time. Changes to environment variables after import will not affect behavior unless explicitly overridden in decorator kwargs.","severity":"gotcha","affected_versions":"all"},{"fix":"Upgrade to Python 3.10+ or pin eth-retry to <=0.3.5.","message":"Python 3.8 and 3.9 are no longer supported as of v0.3.6. v0.3.5 was the last version with Python 3.8/3.9 support.","severity":"breaking","affected_versions":">=0.3.6"}],"env_vars":null,"search_vec":"'0.3.7':34 '3.10':42 'activ':37 'automat':11 'cadenc':39 'catch':12 'common':16 'current':31 'decor':9,29,45 'ecosystem':20 'error':22 'eth':2,5 'eth-retri':1,4 'ethereum':43 'ethereum/evm':19 'except':15 'function':30 'known':13 'limit':24 'provid':7 'python':41 'rate':23 'releas':38 'requir':40 'retri':3,6,27,44 'rpc':21,47 'timeout':25 'transient':14 'version':32 'web3':46","created_at":"2026-05-01T08:09:04.830062+00:00","updated_at":"2026-05-01T08:09:04.830062+00:00","problems":{"verify_error":"Traceback (most recent call last):\n  File \"<string>\", line 1, in <module>\n  File \"/tmp/tmpxib771t_/venv/lib/python3.12/site-packages/eth_retry/__init__.py\", line 1, in <module>\n    from eth_retry.eth_retry import auto_retry\n  File \"/tmp/tmpxib771t_/venv/lib/python3.12/site-packages/eth_retry/eth_ret"},"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"0.3.7","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/BobTheBuidler/eth_retry","docs":"https://github.com/BobTheBuidler/eth_retry","changelog":null,"pypi":"https://pypi.org/project/eth-retry/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["http-networking","devops"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"import_fail","verified_at":"2026-07-03","last_verified":"2026-07-03","next_check":"2026-07-10","install_tag":null}}