web3 7.0.0b6__py3-none-any.whl → 7.0.0b8__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. ens/__init__.py +13 -2
  2. web3/__init__.py +21 -5
  3. web3/_utils/contract_sources/contract_data/arrays_contract.py +3 -3
  4. web3/_utils/contract_sources/contract_data/bytes_contracts.py +5 -5
  5. web3/_utils/contract_sources/contract_data/constructor_contracts.py +7 -7
  6. web3/_utils/contract_sources/contract_data/contract_caller_tester.py +3 -3
  7. web3/_utils/contract_sources/contract_data/emitter_contract.py +3 -3
  8. web3/_utils/contract_sources/contract_data/event_contracts.py +5 -5
  9. web3/_utils/contract_sources/contract_data/extended_resolver.py +3 -3
  10. web3/_utils/contract_sources/contract_data/fallback_function_contract.py +3 -3
  11. web3/_utils/contract_sources/contract_data/function_name_tester_contract.py +3 -3
  12. web3/_utils/contract_sources/contract_data/math_contract.py +3 -3
  13. web3/_utils/contract_sources/contract_data/offchain_lookup.py +3 -3
  14. web3/_utils/contract_sources/contract_data/offchain_resolver.py +3 -3
  15. web3/_utils/contract_sources/contract_data/panic_errors_contract.py +3 -3
  16. web3/_utils/contract_sources/contract_data/payable_tester.py +3 -3
  17. web3/_utils/contract_sources/contract_data/receive_function_contracts.py +5 -5
  18. web3/_utils/contract_sources/contract_data/reflector_contracts.py +3 -3
  19. web3/_utils/contract_sources/contract_data/revert_contract.py +3 -3
  20. web3/_utils/contract_sources/contract_data/simple_resolver.py +3 -3
  21. web3/_utils/contract_sources/contract_data/storage_contract.py +3 -3
  22. web3/_utils/contract_sources/contract_data/string_contract.py +3 -3
  23. web3/_utils/contract_sources/contract_data/tuple_contracts.py +5 -5
  24. web3/_utils/http.py +3 -0
  25. web3/_utils/http_session_manager.py +280 -0
  26. web3/_utils/method_formatters.py +19 -3
  27. web3/_utils/module_testing/eth_module.py +84 -111
  28. web3/_utils/module_testing/module_testing_utils.py +22 -18
  29. web3/_utils/module_testing/persistent_connection_provider.py +45 -16
  30. web3/_utils/rpc_abi.py +0 -3
  31. web3/beacon/__init__.py +5 -0
  32. web3/beacon/async_beacon.py +9 -5
  33. web3/beacon/beacon.py +7 -5
  34. web3/contract/__init__.py +7 -0
  35. web3/contract/base_contract.py +10 -1
  36. web3/eth/__init__.py +7 -0
  37. web3/eth/async_eth.py +0 -33
  38. web3/eth/eth.py +2 -53
  39. web3/exceptions.py +6 -0
  40. web3/manager.py +34 -11
  41. web3/middleware/__init__.py +17 -0
  42. web3/module.py +1 -1
  43. web3/providers/__init__.py +21 -0
  44. web3/providers/eth_tester/__init__.py +5 -0
  45. web3/providers/eth_tester/defaults.py +0 -6
  46. web3/providers/eth_tester/middleware.py +3 -8
  47. web3/providers/persistent/__init__.py +7 -0
  48. web3/providers/persistent/async_ipc.py +34 -79
  49. web3/providers/persistent/persistent.py +76 -7
  50. web3/providers/persistent/persistent_connection.py +47 -5
  51. web3/providers/persistent/websocket.py +19 -59
  52. web3/providers/rpc/__init__.py +5 -0
  53. web3/providers/rpc/async_rpc.py +16 -12
  54. web3/providers/rpc/rpc.py +16 -12
  55. web3/providers/rpc/utils.py +0 -3
  56. web3/tools/benchmark/main.py +7 -6
  57. web3/tools/benchmark/node.py +1 -1
  58. web3/utils/__init__.py +14 -5
  59. web3/utils/async_exception_handling.py +19 -7
  60. web3/utils/caching.py +24 -0
  61. web3/utils/exception_handling.py +7 -5
  62. {web3-7.0.0b6.dist-info → web3-7.0.0b8.dist-info}/METADATA +14 -8
  63. {web3-7.0.0b6.dist-info → web3-7.0.0b8.dist-info}/RECORD +66 -67
  64. {web3-7.0.0b6.dist-info → web3-7.0.0b8.dist-info}/WHEEL +1 -1
  65. web3/_utils/contract_sources/contract_data/address_reflector.py +0 -29
  66. web3/_utils/request.py +0 -265
  67. {web3-7.0.0b6.dist-info → web3-7.0.0b8.dist-info}/LICENSE +0 -0
  68. {web3-7.0.0b6.dist-info → web3-7.0.0b8.dist-info}/top_level.txt +0 -0
@@ -1,11 +1,11 @@
1
1
  """
2
2
  Generated by `compile_contracts.py` script.
3
- Compiled with Solidity v0.8.24.
3
+ Compiled with Solidity v0.8.26.
4
4
  """
5
5
 
6
6
  # source: web3/_utils/contract_sources/StringContract.sol:StringContract
7
- STRING_CONTRACT_BYTECODE = "0x608060405234801562000010575f80fd5b5060405162000cb638038062000cb68339818101604052810190620000369190620001d3565b805f908162000046919062000459565b50506200053d565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620000af8262000067565b810181811067ffffffffffffffff82111715620000d157620000d062000077565b5b80604052505050565b5f620000e56200004e565b9050620000f38282620000a4565b919050565b5f67ffffffffffffffff82111562000115576200011462000077565b5b620001208262000067565b9050602081019050919050565b5f5b838110156200014c5780820151818401526020810190506200012f565b5f8484015250505050565b5f6200016d6200016784620000f8565b620000da565b9050828152602081018484840111156200018c576200018b62000063565b5b620001998482856200012d565b509392505050565b5f82601f830112620001b857620001b76200005f565b5b8151620001ca84826020860162000157565b91505092915050565b5f60208284031215620001eb57620001ea62000057565b5b5f82015167ffffffffffffffff8111156200020b576200020a6200005b565b5b6200021984828501620001a1565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200027157607f821691505b6020821081036200028757620002866200022c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620002eb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002ae565b620002f78683620002ae565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620003416200033b62000335846200030f565b62000318565b6200030f565b9050919050565b5f819050919050565b6200035c8362000321565b620003746200036b8262000348565b848454620002ba565b825550505050565b5f90565b6200038a6200037c565b6200039781848462000351565b505050565b5b81811015620003be57620003b25f8262000380565b6001810190506200039d565b5050565b601f8211156200040d57620003d7816200028d565b620003e2846200029f565b81016020851015620003f2578190505b6200040a62000401856200029f565b8301826200039c565b50505b505050565b5f82821c905092915050565b5f6200042f5f198460080262000412565b1980831691505092915050565b5f6200044983836200041e565b9150826002028217905092915050565b620004648262000222565b67ffffffffffffffff81111562000480576200047f62000077565b5b6200048c825462000259565b62000499828285620003c2565b5f60209050601f831160018114620004cf575f8415620004ba578287015190505b620004c685826200043c565b86555062000535565b601f198416620004df866200028d565b5f5b828110156200050857848901518255600182019150602085019450602081019050620004e1565b8683101562000528578489015162000524601f8916826200041e565b8355505b6001600288020188555050505b505050505050565b61076b806200054b5f395ff3fe608060405260043610610037575f3560e01c806320965255146100995780633fa4f245146100b757806393a09352146100e157610038565b5b348015610043575f80fd5b505f36606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050509050915050805190602001f35b6100a1610109565b6040516100ae91906102bf565b60405180910390f35b3480156100c2575f80fd5b506100cb610198565b6040516100d891906102bf565b60405180910390f35b3480156100ec575f80fd5b506101076004803603810190610102919061041c565b610223565b005b60605f805461011790610490565b80601f016020809104026020016040519081016040528092919081815260200182805461014390610490565b801561018e5780601f106101655761010080835404028352916020019161018e565b820191905f5260205f20905b81548152906001019060200180831161017157829003601f168201915b5050505050905090565b5f80546101a490610490565b80601f01602080910402602001604051908101604052809291908181526020018280546101d090610490565b801561021b5780601f106101f25761010080835404028352916020019161021b565b820191905f5260205f20905b8154815290600101906020018083116101fe57829003601f168201915b505050505081565b805f90816102319190610666565b5050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561026c578082015181840152602081019050610251565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61029182610235565b61029b818561023f565b93506102ab81856020860161024f565b6102b481610277565b840191505092915050565b5f6020820190508181035f8301526102d78184610287565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61032e82610277565b810181811067ffffffffffffffff8211171561034d5761034c6102f8565b5b80604052505050565b5f61035f6102df565b905061036b8282610325565b919050565b5f67ffffffffffffffff82111561038a576103896102f8565b5b61039382610277565b9050602081019050919050565b828183375f83830152505050565b5f6103c06103bb84610370565b610356565b9050828152602081018484840111156103dc576103db6102f4565b5b6103e78482856103a0565b509392505050565b5f82601f830112610403576104026102f0565b5b81356104138482602086016103ae565b91505092915050565b5f60208284031215610431576104306102e8565b5b5f82013567ffffffffffffffff81111561044e5761044d6102ec565b5b61045a848285016103ef565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806104a757607f821691505b6020821081036104ba576104b9610463565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261051c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826104e1565b61052686836104e1565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61056a6105656105608461053e565b610547565b61053e565b9050919050565b5f819050919050565b61058383610550565b61059761058f82610571565b8484546104ed565b825550505050565b5f90565b6105ab61059f565b6105b681848461057a565b505050565b5b818110156105d9576105ce5f826105a3565b6001810190506105bc565b5050565b601f82111561061e576105ef816104c0565b6105f8846104d2565b81016020851015610607578190505b61061b610613856104d2565b8301826105bb565b50505b505050565b5f82821c905092915050565b5f61063e5f1984600802610623565b1980831691505092915050565b5f610656838361062f565b9150826002028217905092915050565b61066f82610235565b67ffffffffffffffff811115610688576106876102f8565b5b6106928254610490565b61069d8282856105dd565b5f60209050601f8311600181146106ce575f84156106bc578287015190505b6106c6858261064b565b86555061072d565b601f1984166106dc866104c0565b5f5b82811015610703578489015182556001820191506020850194506020810190506106de565b86831015610720578489015161071c601f89168261062f565b8355505b6001600288020188555050505b50505050505056fea2646970667358221220851a804ffa4d98dd67a1695441f86438704a07da83e61f85106471dcc5e64c2564736f6c63430008180033" # noqa: E501
8
- STRING_CONTRACT_RUNTIME = "0x608060405260043610610037575f3560e01c806320965255146100995780633fa4f245146100b757806393a09352146100e157610038565b5b348015610043575f80fd5b505f36606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050509050915050805190602001f35b6100a1610109565b6040516100ae91906102bf565b60405180910390f35b3480156100c2575f80fd5b506100cb610198565b6040516100d891906102bf565b60405180910390f35b3480156100ec575f80fd5b506101076004803603810190610102919061041c565b610223565b005b60605f805461011790610490565b80601f016020809104026020016040519081016040528092919081815260200182805461014390610490565b801561018e5780601f106101655761010080835404028352916020019161018e565b820191905f5260205f20905b81548152906001019060200180831161017157829003601f168201915b5050505050905090565b5f80546101a490610490565b80601f01602080910402602001604051908101604052809291908181526020018280546101d090610490565b801561021b5780601f106101f25761010080835404028352916020019161021b565b820191905f5260205f20905b8154815290600101906020018083116101fe57829003601f168201915b505050505081565b805f90816102319190610666565b5050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561026c578082015181840152602081019050610251565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61029182610235565b61029b818561023f565b93506102ab81856020860161024f565b6102b481610277565b840191505092915050565b5f6020820190508181035f8301526102d78184610287565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61032e82610277565b810181811067ffffffffffffffff8211171561034d5761034c6102f8565b5b80604052505050565b5f61035f6102df565b905061036b8282610325565b919050565b5f67ffffffffffffffff82111561038a576103896102f8565b5b61039382610277565b9050602081019050919050565b828183375f83830152505050565b5f6103c06103bb84610370565b610356565b9050828152602081018484840111156103dc576103db6102f4565b5b6103e78482856103a0565b509392505050565b5f82601f830112610403576104026102f0565b5b81356104138482602086016103ae565b91505092915050565b5f60208284031215610431576104306102e8565b5b5f82013567ffffffffffffffff81111561044e5761044d6102ec565b5b61045a848285016103ef565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806104a757607f821691505b6020821081036104ba576104b9610463565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261051c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826104e1565b61052686836104e1565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61056a6105656105608461053e565b610547565b61053e565b9050919050565b5f819050919050565b61058383610550565b61059761058f82610571565b8484546104ed565b825550505050565b5f90565b6105ab61059f565b6105b681848461057a565b505050565b5b818110156105d9576105ce5f826105a3565b6001810190506105bc565b5050565b601f82111561061e576105ef816104c0565b6105f8846104d2565b81016020851015610607578190505b61061b610613856104d2565b8301826105bb565b50505b505050565b5f82821c905092915050565b5f61063e5f1984600802610623565b1980831691505092915050565b5f610656838361062f565b9150826002028217905092915050565b61066f82610235565b67ffffffffffffffff811115610688576106876102f8565b5b6106928254610490565b61069d8282856105dd565b5f60209050601f8311600181146106ce575f84156106bc578287015190505b6106c6858261064b565b86555061072d565b601f1984166106dc866104c0565b5f5b82811015610703578489015182556001820191506020850194506020810190506106de565b86831015610720578489015161071c601f89168261062f565b8355505b6001600288020188555050505b50505050505056fea2646970667358221220851a804ffa4d98dd67a1695441f86438704a07da83e61f85106471dcc5e64c2564736f6c63430008180033" # noqa: E501
7
+ STRING_CONTRACT_BYTECODE = "0x608060405234801561000f575f80fd5b50604051610c14380380610c1483398181016040528101906100319190610193565b805f908161003f91906103e7565b50506104b6565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6100a58261005f565b810181811067ffffffffffffffff821117156100c4576100c361006f565b5b80604052505050565b5f6100d6610046565b90506100e2828261009c565b919050565b5f67ffffffffffffffff8211156101015761010061006f565b5b61010a8261005f565b9050602081019050919050565b8281835e5f83830152505050565b5f610137610132846100e7565b6100cd565b9050828152602081018484840111156101535761015261005b565b5b61015e848285610117565b509392505050565b5f82601f83011261017a57610179610057565b5b815161018a848260208601610125565b91505092915050565b5f602082840312156101a8576101a761004f565b5b5f82015167ffffffffffffffff8111156101c5576101c4610053565b5b6101d184828501610166565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061022857607f821691505b60208210810361023b5761023a6101e4565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261029d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610262565b6102a78683610262565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6102eb6102e66102e1846102bf565b6102c8565b6102bf565b9050919050565b5f819050919050565b610304836102d1565b610318610310826102f2565b84845461026e565b825550505050565b5f90565b61032c610320565b6103378184846102fb565b505050565b5b8181101561035a5761034f5f82610324565b60018101905061033d565b5050565b601f82111561039f5761037081610241565b61037984610253565b81016020851015610388578190505b61039c61039485610253565b83018261033c565b50505b505050565b5f82821c905092915050565b5f6103bf5f19846008026103a4565b1980831691505092915050565b5f6103d783836103b0565b9150826002028217905092915050565b6103f0826101da565b67ffffffffffffffff8111156104095761040861006f565b5b6104138254610211565b61041e82828561035e565b5f60209050601f83116001811461044f575f841561043d578287015190505b61044785826103cc565b8655506104ae565b601f19841661045d86610241565b5f5b828110156104845784890151825560018201915060208501945060208101905061045f565b868310156104a1578489015161049d601f8916826103b0565b8355505b6001600288020188555050505b505050505050565b610751806104c35f395ff3fe608060405260043610610037575f3560e01c806320965255146100995780633fa4f245146100b757806393a09352146100e157610038565b5b348015610043575f80fd5b505f36606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050509050915050805190602001f35b6100a1610109565b6040516100ae91906102a5565b60405180910390f35b3480156100c2575f80fd5b506100cb610198565b6040516100d891906102a5565b60405180910390f35b3480156100ec575f80fd5b5061010760048036038101906101029190610402565b610223565b005b60605f805461011790610476565b80601f016020809104026020016040519081016040528092919081815260200182805461014390610476565b801561018e5780601f106101655761010080835404028352916020019161018e565b820191905f5260205f20905b81548152906001019060200180831161017157829003601f168201915b5050505050905090565b5f80546101a490610476565b80601f01602080910402602001604051908101604052809291908181526020018280546101d090610476565b801561021b5780601f106101f25761010080835404028352916020019161021b565b820191905f5260205f20905b8154815290600101906020018083116101fe57829003601f168201915b505050505081565b805f9081610231919061064c565b5050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61027782610235565b610281818561023f565b935061029181856020860161024f565b61029a8161025d565b840191505092915050565b5f6020820190508181035f8301526102bd818461026d565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6103148261025d565b810181811067ffffffffffffffff82111715610333576103326102de565b5b80604052505050565b5f6103456102c5565b9050610351828261030b565b919050565b5f67ffffffffffffffff8211156103705761036f6102de565b5b6103798261025d565b9050602081019050919050565b828183375f83830152505050565b5f6103a66103a184610356565b61033c565b9050828152602081018484840111156103c2576103c16102da565b5b6103cd848285610386565b509392505050565b5f82601f8301126103e9576103e86102d6565b5b81356103f9848260208601610394565b91505092915050565b5f60208284031215610417576104166102ce565b5b5f82013567ffffffffffffffff811115610434576104336102d2565b5b610440848285016103d5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061048d57607f821691505b6020821081036104a05761049f610449565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026105027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826104c7565b61050c86836104c7565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61055061054b61054684610524565b61052d565b610524565b9050919050565b5f819050919050565b61056983610536565b61057d61057582610557565b8484546104d3565b825550505050565b5f90565b610591610585565b61059c818484610560565b505050565b5b818110156105bf576105b45f82610589565b6001810190506105a2565b5050565b601f821115610604576105d5816104a6565b6105de846104b8565b810160208510156105ed578190505b6106016105f9856104b8565b8301826105a1565b50505b505050565b5f82821c905092915050565b5f6106245f1984600802610609565b1980831691505092915050565b5f61063c8383610615565b9150826002028217905092915050565b61065582610235565b67ffffffffffffffff81111561066e5761066d6102de565b5b6106788254610476565b6106838282856105c3565b5f60209050601f8311600181146106b4575f84156106a2578287015190505b6106ac8582610631565b865550610713565b601f1984166106c2866104a6565b5f5b828110156106e9578489015182556001820191506020850194506020810190506106c4565b868310156107065784890151610702601f891682610615565b8355505b6001600288020188555050505b50505050505056fea26469706673582212200089bffb23fab2a7ae42baabe7de4eb043620f9b009ac78a7598e872960fad1664736f6c634300081a0033" # noqa: E501
8
+ STRING_CONTRACT_RUNTIME = "0x608060405260043610610037575f3560e01c806320965255146100995780633fa4f245146100b757806393a09352146100e157610038565b5b348015610043575f80fd5b505f36606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050509050915050805190602001f35b6100a1610109565b6040516100ae91906102a5565b60405180910390f35b3480156100c2575f80fd5b506100cb610198565b6040516100d891906102a5565b60405180910390f35b3480156100ec575f80fd5b5061010760048036038101906101029190610402565b610223565b005b60605f805461011790610476565b80601f016020809104026020016040519081016040528092919081815260200182805461014390610476565b801561018e5780601f106101655761010080835404028352916020019161018e565b820191905f5260205f20905b81548152906001019060200180831161017157829003601f168201915b5050505050905090565b5f80546101a490610476565b80601f01602080910402602001604051908101604052809291908181526020018280546101d090610476565b801561021b5780601f106101f25761010080835404028352916020019161021b565b820191905f5260205f20905b8154815290600101906020018083116101fe57829003601f168201915b505050505081565b805f9081610231919061064c565b5050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61027782610235565b610281818561023f565b935061029181856020860161024f565b61029a8161025d565b840191505092915050565b5f6020820190508181035f8301526102bd818461026d565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6103148261025d565b810181811067ffffffffffffffff82111715610333576103326102de565b5b80604052505050565b5f6103456102c5565b9050610351828261030b565b919050565b5f67ffffffffffffffff8211156103705761036f6102de565b5b6103798261025d565b9050602081019050919050565b828183375f83830152505050565b5f6103a66103a184610356565b61033c565b9050828152602081018484840111156103c2576103c16102da565b5b6103cd848285610386565b509392505050565b5f82601f8301126103e9576103e86102d6565b5b81356103f9848260208601610394565b91505092915050565b5f60208284031215610417576104166102ce565b5b5f82013567ffffffffffffffff811115610434576104336102d2565b5b610440848285016103d5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061048d57607f821691505b6020821081036104a05761049f610449565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026105027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826104c7565b61050c86836104c7565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61055061054b61054684610524565b61052d565b610524565b9050919050565b5f819050919050565b61056983610536565b61057d61057582610557565b8484546104d3565b825550505050565b5f90565b610591610585565b61059c818484610560565b505050565b5b818110156105bf576105b45f82610589565b6001810190506105a2565b5050565b601f821115610604576105d5816104a6565b6105de846104b8565b810160208510156105ed578190505b6106016105f9856104b8565b8301826105a1565b50505b505050565b5f82821c905092915050565b5f6106245f1984600802610609565b1980831691505092915050565b5f61063c8383610615565b9150826002028217905092915050565b61065582610235565b67ffffffffffffffff81111561066e5761066d6102de565b5b6106788254610476565b6106838282856105c3565b5f60209050601f8311600181146106b4575f84156106a2578287015190505b6106ac8582610631565b865550610713565b601f1984166106c2866104a6565b5f5b828110156106e9578489015182556001820191506020850194506020810190506106c4565b868310156107065784890151610702601f891682610615565b8355505b6001600288020188555050505b50505050505056fea26469706673582212200089bffb23fab2a7ae42baabe7de4eb043620f9b009ac78a7598e872960fad1664736f6c634300081a0033" # noqa: E501
9
9
  STRING_CONTRACT_ABI = [
10
10
  {
11
11
  "inputs": [{"internalType": "string", "name": "_value", "type": "string"}],
@@ -1,11 +1,11 @@
1
1
  """
2
2
  Generated by `compile_contracts.py` script.
3
- Compiled with Solidity v0.8.24.
3
+ Compiled with Solidity v0.8.26.
4
4
  """
5
5
 
6
6
  # source: web3/_utils/contract_sources/TupleContracts.sol:TupleContract
7
- TUPLE_CONTRACT_BYTECODE = "0x608060405234801561000f575f80fd5b50610a688061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c80638e1ae3c71461002d575b5f80fd5b6100476004803603810190610042919061064d565b61005d565b6040516100549190610a12565b60405180910390f35b61006561006d565b819050919050565b60405180606001604052805f815260200160608152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6100e8826100a2565b810181811067ffffffffffffffff82111715610107576101066100b2565b5b80604052505050565b5f61011961008d565b905061012582826100df565b919050565b5f80fd5b5f819050919050565b6101408161012e565b811461014a575f80fd5b50565b5f8135905061015b81610137565b92915050565b5f80fd5b5f67ffffffffffffffff82111561017f5761017e6100b2565b5b602082029050602081019050919050565b5f80fd5b5f6101a66101a184610165565b610110565b905080838252602082019050602084028301858111156101c9576101c8610190565b5b835b818110156101f257806101de888261014d565b8452602084019350506020810190506101cb565b5050509392505050565b5f82601f8301126102105761020f610161565b5b8135610220848260208601610194565b91505092915050565b5f67ffffffffffffffff821115610243576102426100b2565b5b602082029050602081019050919050565b5f819050919050565b61026681610254565b8114610270575f80fd5b50565b5f813590506102818161025d565b92915050565b5f67ffffffffffffffff8211156102a1576102a06100b2565b5b602082029050919050565b5f8115159050919050565b6102c0816102ac565b81146102ca575f80fd5b50565b5f813590506102db816102b7565b92915050565b5f6102f36102ee84610287565b610110565b9050806020840283018581111561030d5761030c610190565b5b835b81811015610336578061032288826102cd565b84526020840193505060208101905061030f565b5050509392505050565b5f82601f83011261035457610353610161565b5b60026103618482856102e1565b91505092915050565b5f67ffffffffffffffff821115610384576103836100b2565b5b602082029050602081019050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6103be82610395565b9050919050565b6103ce816103b4565b81146103d8575f80fd5b50565b5f813590506103e9816103c5565b92915050565b5f6104016103fc8461036a565b610110565b9050808382526020820190506020840283018581111561042457610423610190565b5b835b8181101561044d578061043988826103db565b845260208401935050602081019050610426565b5050509392505050565b5f82601f83011261046b5761046a610161565b5b813561047b8482602086016103ef565b91505092915050565b5f608082840312156104995761049861009e565b5b6104a36060610110565b90505f6104b284828501610273565b5f8301525060206104c584828501610340565b602083015250606082013567ffffffffffffffff8111156104e9576104e861012a565b5b6104f584828501610457565b60408301525092915050565b5f61051361050e84610229565b610110565b9050808382526020820190506020840283018581111561053657610535610190565b5b835b8181101561057d57803567ffffffffffffffff81111561055b5761055a610161565b5b8086016105688982610484565b85526020850194505050602081019050610538565b5050509392505050565b5f82601f83011261059b5761059a610161565b5b81356105ab848260208601610501565b91505092915050565b5f606082840312156105c9576105c861009e565b5b6105d36060610110565b90505f6105e28482850161014d565b5f83015250602082013567ffffffffffffffff8111156106055761060461012a565b5b610611848285016101fc565b602083015250604082013567ffffffffffffffff8111156106355761063461012a565b5b61064184828501610587565b60408301525092915050565b5f6020828403121561066257610661610096565b5b5f82013567ffffffffffffffff81111561067f5761067e61009a565b5b61068b848285016105b4565b91505092915050565b61069d8161012e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6106d78383610694565b60208301905092915050565b5f602082019050919050565b5f6106f9826106a3565b61070381856106ad565b935061070e836106bd565b805f5b8381101561073e57815161072588826106cc565b9750610730836106e3565b925050600181019050610711565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61077d81610254565b82525050565b5f60029050919050565b5f81905092915050565b5f819050919050565b6107a9816102ac565b82525050565b5f6107ba83836107a0565b60208301905092915050565b5f602082019050919050565b6107db81610783565b6107e5818461078d565b92506107f082610797565b805f5b8381101561082057815161080787826107af565b9650610812836107c6565b9250506001810190506107f3565b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61085a816103b4565b82525050565b5f61086b8383610851565b60208301905092915050565b5f602082019050919050565b5f61088d82610828565b6108978185610832565b93506108a283610842565b805f5b838110156108d25781516108b98882610860565b97506108c483610877565b9250506001810190506108a5565b5085935050505092915050565b5f608083015f8301516108f45f860182610774565b50602083015161090760208601826107d2565b506040830151848203606086015261091f8282610883565b9150508091505092915050565b5f61093783836108df565b905092915050565b5f602082019050919050565b5f6109558261074b565b61095f8185610755565b93508360208202850161097185610765565b805f5b858110156109ac578484038952815161098d858261092c565b94506109988361093f565b925060208a01995050600181019050610974565b50829750879550505050505092915050565b5f606083015f8301516109d35f860182610694565b50602083015184820360208601526109eb82826106ef565b91505060408301518482036040860152610a05828261094b565b9150508091505092915050565b5f6020820190508181035f830152610a2a81846109be565b90509291505056fea2646970667358221220807e60bb717d8a1d1cc42e3546952f8e971c459d809c0271c00091ba0ad054f564736f6c63430008180033" # noqa: E501
8
- TUPLE_CONTRACT_RUNTIME = "0x608060405234801561000f575f80fd5b5060043610610029575f3560e01c80638e1ae3c71461002d575b5f80fd5b6100476004803603810190610042919061064d565b61005d565b6040516100549190610a12565b60405180910390f35b61006561006d565b819050919050565b60405180606001604052805f815260200160608152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6100e8826100a2565b810181811067ffffffffffffffff82111715610107576101066100b2565b5b80604052505050565b5f61011961008d565b905061012582826100df565b919050565b5f80fd5b5f819050919050565b6101408161012e565b811461014a575f80fd5b50565b5f8135905061015b81610137565b92915050565b5f80fd5b5f67ffffffffffffffff82111561017f5761017e6100b2565b5b602082029050602081019050919050565b5f80fd5b5f6101a66101a184610165565b610110565b905080838252602082019050602084028301858111156101c9576101c8610190565b5b835b818110156101f257806101de888261014d565b8452602084019350506020810190506101cb565b5050509392505050565b5f82601f8301126102105761020f610161565b5b8135610220848260208601610194565b91505092915050565b5f67ffffffffffffffff821115610243576102426100b2565b5b602082029050602081019050919050565b5f819050919050565b61026681610254565b8114610270575f80fd5b50565b5f813590506102818161025d565b92915050565b5f67ffffffffffffffff8211156102a1576102a06100b2565b5b602082029050919050565b5f8115159050919050565b6102c0816102ac565b81146102ca575f80fd5b50565b5f813590506102db816102b7565b92915050565b5f6102f36102ee84610287565b610110565b9050806020840283018581111561030d5761030c610190565b5b835b81811015610336578061032288826102cd565b84526020840193505060208101905061030f565b5050509392505050565b5f82601f83011261035457610353610161565b5b60026103618482856102e1565b91505092915050565b5f67ffffffffffffffff821115610384576103836100b2565b5b602082029050602081019050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6103be82610395565b9050919050565b6103ce816103b4565b81146103d8575f80fd5b50565b5f813590506103e9816103c5565b92915050565b5f6104016103fc8461036a565b610110565b9050808382526020820190506020840283018581111561042457610423610190565b5b835b8181101561044d578061043988826103db565b845260208401935050602081019050610426565b5050509392505050565b5f82601f83011261046b5761046a610161565b5b813561047b8482602086016103ef565b91505092915050565b5f608082840312156104995761049861009e565b5b6104a36060610110565b90505f6104b284828501610273565b5f8301525060206104c584828501610340565b602083015250606082013567ffffffffffffffff8111156104e9576104e861012a565b5b6104f584828501610457565b60408301525092915050565b5f61051361050e84610229565b610110565b9050808382526020820190506020840283018581111561053657610535610190565b5b835b8181101561057d57803567ffffffffffffffff81111561055b5761055a610161565b5b8086016105688982610484565b85526020850194505050602081019050610538565b5050509392505050565b5f82601f83011261059b5761059a610161565b5b81356105ab848260208601610501565b91505092915050565b5f606082840312156105c9576105c861009e565b5b6105d36060610110565b90505f6105e28482850161014d565b5f83015250602082013567ffffffffffffffff8111156106055761060461012a565b5b610611848285016101fc565b602083015250604082013567ffffffffffffffff8111156106355761063461012a565b5b61064184828501610587565b60408301525092915050565b5f6020828403121561066257610661610096565b5b5f82013567ffffffffffffffff81111561067f5761067e61009a565b5b61068b848285016105b4565b91505092915050565b61069d8161012e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6106d78383610694565b60208301905092915050565b5f602082019050919050565b5f6106f9826106a3565b61070381856106ad565b935061070e836106bd565b805f5b8381101561073e57815161072588826106cc565b9750610730836106e3565b925050600181019050610711565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61077d81610254565b82525050565b5f60029050919050565b5f81905092915050565b5f819050919050565b6107a9816102ac565b82525050565b5f6107ba83836107a0565b60208301905092915050565b5f602082019050919050565b6107db81610783565b6107e5818461078d565b92506107f082610797565b805f5b8381101561082057815161080787826107af565b9650610812836107c6565b9250506001810190506107f3565b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61085a816103b4565b82525050565b5f61086b8383610851565b60208301905092915050565b5f602082019050919050565b5f61088d82610828565b6108978185610832565b93506108a283610842565b805f5b838110156108d25781516108b98882610860565b97506108c483610877565b9250506001810190506108a5565b5085935050505092915050565b5f608083015f8301516108f45f860182610774565b50602083015161090760208601826107d2565b506040830151848203606086015261091f8282610883565b9150508091505092915050565b5f61093783836108df565b905092915050565b5f602082019050919050565b5f6109558261074b565b61095f8185610755565b93508360208202850161097185610765565b805f5b858110156109ac578484038952815161098d858261092c565b94506109988361093f565b925060208a01995050600181019050610974565b50829750879550505050505092915050565b5f606083015f8301516109d35f860182610694565b50602083015184820360208601526109eb82826106ef565b91505060408301518482036040860152610a05828261094b565b9150508091505092915050565b5f6020820190508181035f830152610a2a81846109be565b90509291505056fea2646970667358221220807e60bb717d8a1d1cc42e3546952f8e971c459d809c0271c00091ba0ad054f564736f6c63430008180033" # noqa: E501
7
+ TUPLE_CONTRACT_BYTECODE = "0x6080604052348015600e575f80fd5b50610a688061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c80638e1ae3c71461002d575b5f80fd5b6100476004803603810190610042919061064d565b61005d565b6040516100549190610a12565b60405180910390f35b61006561006d565b819050919050565b60405180606001604052805f815260200160608152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6100e8826100a2565b810181811067ffffffffffffffff82111715610107576101066100b2565b5b80604052505050565b5f61011961008d565b905061012582826100df565b919050565b5f80fd5b5f819050919050565b6101408161012e565b811461014a575f80fd5b50565b5f8135905061015b81610137565b92915050565b5f80fd5b5f67ffffffffffffffff82111561017f5761017e6100b2565b5b602082029050602081019050919050565b5f80fd5b5f6101a66101a184610165565b610110565b905080838252602082019050602084028301858111156101c9576101c8610190565b5b835b818110156101f257806101de888261014d565b8452602084019350506020810190506101cb565b5050509392505050565b5f82601f8301126102105761020f610161565b5b8135610220848260208601610194565b91505092915050565b5f67ffffffffffffffff821115610243576102426100b2565b5b602082029050602081019050919050565b5f819050919050565b61026681610254565b8114610270575f80fd5b50565b5f813590506102818161025d565b92915050565b5f67ffffffffffffffff8211156102a1576102a06100b2565b5b602082029050919050565b5f8115159050919050565b6102c0816102ac565b81146102ca575f80fd5b50565b5f813590506102db816102b7565b92915050565b5f6102f36102ee84610287565b610110565b9050806020840283018581111561030d5761030c610190565b5b835b81811015610336578061032288826102cd565b84526020840193505060208101905061030f565b5050509392505050565b5f82601f83011261035457610353610161565b5b60026103618482856102e1565b91505092915050565b5f67ffffffffffffffff821115610384576103836100b2565b5b602082029050602081019050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6103be82610395565b9050919050565b6103ce816103b4565b81146103d8575f80fd5b50565b5f813590506103e9816103c5565b92915050565b5f6104016103fc8461036a565b610110565b9050808382526020820190506020840283018581111561042457610423610190565b5b835b8181101561044d578061043988826103db565b845260208401935050602081019050610426565b5050509392505050565b5f82601f83011261046b5761046a610161565b5b813561047b8482602086016103ef565b91505092915050565b5f608082840312156104995761049861009e565b5b6104a36060610110565b90505f6104b284828501610273565b5f8301525060206104c584828501610340565b602083015250606082013567ffffffffffffffff8111156104e9576104e861012a565b5b6104f584828501610457565b60408301525092915050565b5f61051361050e84610229565b610110565b9050808382526020820190506020840283018581111561053657610535610190565b5b835b8181101561057d57803567ffffffffffffffff81111561055b5761055a610161565b5b8086016105688982610484565b85526020850194505050602081019050610538565b5050509392505050565b5f82601f83011261059b5761059a610161565b5b81356105ab848260208601610501565b91505092915050565b5f606082840312156105c9576105c861009e565b5b6105d36060610110565b90505f6105e28482850161014d565b5f83015250602082013567ffffffffffffffff8111156106055761060461012a565b5b610611848285016101fc565b602083015250604082013567ffffffffffffffff8111156106355761063461012a565b5b61064184828501610587565b60408301525092915050565b5f6020828403121561066257610661610096565b5b5f82013567ffffffffffffffff81111561067f5761067e61009a565b5b61068b848285016105b4565b91505092915050565b61069d8161012e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6106d78383610694565b60208301905092915050565b5f602082019050919050565b5f6106f9826106a3565b61070381856106ad565b935061070e836106bd565b805f5b8381101561073e57815161072588826106cc565b9750610730836106e3565b925050600181019050610711565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61077d81610254565b82525050565b5f60029050919050565b5f81905092915050565b5f819050919050565b6107a9816102ac565b82525050565b5f6107ba83836107a0565b60208301905092915050565b5f602082019050919050565b6107db81610783565b6107e5818461078d565b92506107f082610797565b805f5b8381101561082057815161080787826107af565b9650610812836107c6565b9250506001810190506107f3565b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61085a816103b4565b82525050565b5f61086b8383610851565b60208301905092915050565b5f602082019050919050565b5f61088d82610828565b6108978185610832565b93506108a283610842565b805f5b838110156108d25781516108b98882610860565b97506108c483610877565b9250506001810190506108a5565b5085935050505092915050565b5f608083015f8301516108f45f860182610774565b50602083015161090760208601826107d2565b506040830151848203606086015261091f8282610883565b9150508091505092915050565b5f61093783836108df565b905092915050565b5f602082019050919050565b5f6109558261074b565b61095f8185610755565b93508360208202850161097185610765565b805f5b858110156109ac578484038952815161098d858261092c565b94506109988361093f565b925060208a01995050600181019050610974565b50829750879550505050505092915050565b5f606083015f8301516109d35f860182610694565b50602083015184820360208601526109eb82826106ef565b91505060408301518482036040860152610a05828261094b565b9150508091505092915050565b5f6020820190508181035f830152610a2a81846109be565b90509291505056fea2646970667358221220eceacc6d446397857f304b1ffd0804c4e890c35adcb55b79fc6febb1bba2f5e664736f6c634300081a0033" # noqa: E501
8
+ TUPLE_CONTRACT_RUNTIME = "0x608060405234801561000f575f80fd5b5060043610610029575f3560e01c80638e1ae3c71461002d575b5f80fd5b6100476004803603810190610042919061064d565b61005d565b6040516100549190610a12565b60405180910390f35b61006561006d565b819050919050565b60405180606001604052805f815260200160608152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6100e8826100a2565b810181811067ffffffffffffffff82111715610107576101066100b2565b5b80604052505050565b5f61011961008d565b905061012582826100df565b919050565b5f80fd5b5f819050919050565b6101408161012e565b811461014a575f80fd5b50565b5f8135905061015b81610137565b92915050565b5f80fd5b5f67ffffffffffffffff82111561017f5761017e6100b2565b5b602082029050602081019050919050565b5f80fd5b5f6101a66101a184610165565b610110565b905080838252602082019050602084028301858111156101c9576101c8610190565b5b835b818110156101f257806101de888261014d565b8452602084019350506020810190506101cb565b5050509392505050565b5f82601f8301126102105761020f610161565b5b8135610220848260208601610194565b91505092915050565b5f67ffffffffffffffff821115610243576102426100b2565b5b602082029050602081019050919050565b5f819050919050565b61026681610254565b8114610270575f80fd5b50565b5f813590506102818161025d565b92915050565b5f67ffffffffffffffff8211156102a1576102a06100b2565b5b602082029050919050565b5f8115159050919050565b6102c0816102ac565b81146102ca575f80fd5b50565b5f813590506102db816102b7565b92915050565b5f6102f36102ee84610287565b610110565b9050806020840283018581111561030d5761030c610190565b5b835b81811015610336578061032288826102cd565b84526020840193505060208101905061030f565b5050509392505050565b5f82601f83011261035457610353610161565b5b60026103618482856102e1565b91505092915050565b5f67ffffffffffffffff821115610384576103836100b2565b5b602082029050602081019050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6103be82610395565b9050919050565b6103ce816103b4565b81146103d8575f80fd5b50565b5f813590506103e9816103c5565b92915050565b5f6104016103fc8461036a565b610110565b9050808382526020820190506020840283018581111561042457610423610190565b5b835b8181101561044d578061043988826103db565b845260208401935050602081019050610426565b5050509392505050565b5f82601f83011261046b5761046a610161565b5b813561047b8482602086016103ef565b91505092915050565b5f608082840312156104995761049861009e565b5b6104a36060610110565b90505f6104b284828501610273565b5f8301525060206104c584828501610340565b602083015250606082013567ffffffffffffffff8111156104e9576104e861012a565b5b6104f584828501610457565b60408301525092915050565b5f61051361050e84610229565b610110565b9050808382526020820190506020840283018581111561053657610535610190565b5b835b8181101561057d57803567ffffffffffffffff81111561055b5761055a610161565b5b8086016105688982610484565b85526020850194505050602081019050610538565b5050509392505050565b5f82601f83011261059b5761059a610161565b5b81356105ab848260208601610501565b91505092915050565b5f606082840312156105c9576105c861009e565b5b6105d36060610110565b90505f6105e28482850161014d565b5f83015250602082013567ffffffffffffffff8111156106055761060461012a565b5b610611848285016101fc565b602083015250604082013567ffffffffffffffff8111156106355761063461012a565b5b61064184828501610587565b60408301525092915050565b5f6020828403121561066257610661610096565b5b5f82013567ffffffffffffffff81111561067f5761067e61009a565b5b61068b848285016105b4565b91505092915050565b61069d8161012e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6106d78383610694565b60208301905092915050565b5f602082019050919050565b5f6106f9826106a3565b61070381856106ad565b935061070e836106bd565b805f5b8381101561073e57815161072588826106cc565b9750610730836106e3565b925050600181019050610711565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61077d81610254565b82525050565b5f60029050919050565b5f81905092915050565b5f819050919050565b6107a9816102ac565b82525050565b5f6107ba83836107a0565b60208301905092915050565b5f602082019050919050565b6107db81610783565b6107e5818461078d565b92506107f082610797565b805f5b8381101561082057815161080787826107af565b9650610812836107c6565b9250506001810190506107f3565b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61085a816103b4565b82525050565b5f61086b8383610851565b60208301905092915050565b5f602082019050919050565b5f61088d82610828565b6108978185610832565b93506108a283610842565b805f5b838110156108d25781516108b98882610860565b97506108c483610877565b9250506001810190506108a5565b5085935050505092915050565b5f608083015f8301516108f45f860182610774565b50602083015161090760208601826107d2565b506040830151848203606086015261091f8282610883565b9150508091505092915050565b5f61093783836108df565b905092915050565b5f602082019050919050565b5f6109558261074b565b61095f8185610755565b93508360208202850161097185610765565b805f5b858110156109ac578484038952815161098d858261092c565b94506109988361093f565b925060208a01995050600181019050610974565b50829750879550505050505092915050565b5f606083015f8301516109d35f860182610694565b50602083015184820360208601526109eb82826106ef565b91505060408301518482036040860152610a05828261094b565b9150508091505092915050565b5f6020820190508181035f830152610a2a81846109be565b90509291505056fea2646970667358221220eceacc6d446397857f304b1ffd0804c4e890c35adcb55b79fc6febb1bba2f5e664736f6c634300081a0033" # noqa: E501
9
9
  TUPLE_CONTRACT_ABI = [
10
10
  {
11
11
  "inputs": [
@@ -71,8 +71,8 @@ TUPLE_CONTRACT_DATA = {
71
71
 
72
72
 
73
73
  # source: web3/_utils/contract_sources/TupleContracts.sol:NestedTupleContract
74
- NESTED_TUPLE_CONTRACT_BYTECODE = "0x608060405234801561000f575f80fd5b5061067b8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c80632655aef11461002d575b5f80fd5b610047600480360381019061004291906103f1565b61005d565b6040516100549190610625565b60405180910390f35b61006561006d565b819050919050565b6040518060200160405280606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6100db82610095565b810181811067ffffffffffffffff821117156100fa576100f96100a5565b5b80604052505050565b5f61010c610080565b905061011882826100d2565b919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff82111561013f5761013e6100a5565b5b602082029050602081019050919050565b5f80fd5b5f67ffffffffffffffff82111561016e5761016d6100a5565b5b602082029050602081019050919050565b5f819050919050565b6101918161017f565b811461019b575f80fd5b50565b5f813590506101ac81610188565b92915050565b5f604082840312156101c7576101c6610091565b5b6101d16040610103565b90505f6101e08482850161019e565b5f8301525060206101f38482850161019e565b60208301525092915050565b5f61021161020c84610154565b610103565b9050808382526020820190506040840283018581111561023457610233610150565b5b835b8181101561025d578061024988826101b2565b845260208401935050604081019050610236565b5050509392505050565b5f82601f83011261027b5761027a610121565b5b813561028b8482602086016101ff565b91505092915050565b5f602082840312156102a9576102a8610091565b5b6102b36020610103565b90505f82013567ffffffffffffffff8111156102d2576102d161011d565b5b6102de84828501610267565b5f8301525092915050565b5f6102fb6102f684610125565b610103565b9050808382526020820190506020840283018581111561031e5761031d610150565b5b835b8181101561036557803567ffffffffffffffff81111561034357610342610121565b5b8086016103508982610294565b85526020850194505050602081019050610320565b5050509392505050565b5f82601f83011261038357610382610121565b5b81356103938482602086016102e9565b91505092915050565b5f602082840312156103b1576103b0610091565b5b6103bb6020610103565b90505f82013567ffffffffffffffff8111156103da576103d961011d565b5b6103e68482850161036f565b5f8301525092915050565b5f6020828403121561040657610405610089565b5b5f82013567ffffffffffffffff8111156104235761042261008d565b5b61042f8482850161039c565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6104938161017f565b82525050565b604082015f8201516104ad5f85018261048a565b5060208201516104c0602085018261048a565b50505050565b5f6104d18383610499565b60408301905092915050565b5f602082019050919050565b5f6104f382610461565b6104fd818561046b565b93506105088361047b565b805f5b8381101561053857815161051f88826104c6565b975061052a836104dd565b92505060018101905061050b565b5085935050505092915050565b5f602083015f8301518482035f86015261055f82826104e9565b9150508091505092915050565b5f6105778383610545565b905092915050565b5f602082019050919050565b5f61059582610438565b61059f8185610442565b9350836020820285016105b185610452565b805f5b858110156105ec57848403895281516105cd858261056c565b94506105d88361057f565b925060208a019950506001810190506105b4565b50829750879550505050505092915050565b5f602083015f8301518482035f860152610618828261058b565b9150508091505092915050565b5f6020820190508181035f83015261063d81846105fe565b90509291505056fea2646970667358221220de1e825147976e2227ac2c0fbd97886f084224cf7b1c335d293091c7d5c3ae8464736f6c63430008180033" # noqa: E501
75
- NESTED_TUPLE_CONTRACT_RUNTIME = "0x608060405234801561000f575f80fd5b5060043610610029575f3560e01c80632655aef11461002d575b5f80fd5b610047600480360381019061004291906103f1565b61005d565b6040516100549190610625565b60405180910390f35b61006561006d565b819050919050565b6040518060200160405280606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6100db82610095565b810181811067ffffffffffffffff821117156100fa576100f96100a5565b5b80604052505050565b5f61010c610080565b905061011882826100d2565b919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff82111561013f5761013e6100a5565b5b602082029050602081019050919050565b5f80fd5b5f67ffffffffffffffff82111561016e5761016d6100a5565b5b602082029050602081019050919050565b5f819050919050565b6101918161017f565b811461019b575f80fd5b50565b5f813590506101ac81610188565b92915050565b5f604082840312156101c7576101c6610091565b5b6101d16040610103565b90505f6101e08482850161019e565b5f8301525060206101f38482850161019e565b60208301525092915050565b5f61021161020c84610154565b610103565b9050808382526020820190506040840283018581111561023457610233610150565b5b835b8181101561025d578061024988826101b2565b845260208401935050604081019050610236565b5050509392505050565b5f82601f83011261027b5761027a610121565b5b813561028b8482602086016101ff565b91505092915050565b5f602082840312156102a9576102a8610091565b5b6102b36020610103565b90505f82013567ffffffffffffffff8111156102d2576102d161011d565b5b6102de84828501610267565b5f8301525092915050565b5f6102fb6102f684610125565b610103565b9050808382526020820190506020840283018581111561031e5761031d610150565b5b835b8181101561036557803567ffffffffffffffff81111561034357610342610121565b5b8086016103508982610294565b85526020850194505050602081019050610320565b5050509392505050565b5f82601f83011261038357610382610121565b5b81356103938482602086016102e9565b91505092915050565b5f602082840312156103b1576103b0610091565b5b6103bb6020610103565b90505f82013567ffffffffffffffff8111156103da576103d961011d565b5b6103e68482850161036f565b5f8301525092915050565b5f6020828403121561040657610405610089565b5b5f82013567ffffffffffffffff8111156104235761042261008d565b5b61042f8482850161039c565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6104938161017f565b82525050565b604082015f8201516104ad5f85018261048a565b5060208201516104c0602085018261048a565b50505050565b5f6104d18383610499565b60408301905092915050565b5f602082019050919050565b5f6104f382610461565b6104fd818561046b565b93506105088361047b565b805f5b8381101561053857815161051f88826104c6565b975061052a836104dd565b92505060018101905061050b565b5085935050505092915050565b5f602083015f8301518482035f86015261055f82826104e9565b9150508091505092915050565b5f6105778383610545565b905092915050565b5f602082019050919050565b5f61059582610438565b61059f8185610442565b9350836020820285016105b185610452565b805f5b858110156105ec57848403895281516105cd858261056c565b94506105d88361057f565b925060208a019950506001810190506105b4565b50829750879550505050505092915050565b5f602083015f8301518482035f860152610618828261058b565b9150508091505092915050565b5f6020820190508181035f83015261063d81846105fe565b90509291505056fea2646970667358221220de1e825147976e2227ac2c0fbd97886f084224cf7b1c335d293091c7d5c3ae8464736f6c63430008180033" # noqa: E501
74
+ NESTED_TUPLE_CONTRACT_BYTECODE = "0x6080604052348015600e575f80fd5b5061067b8061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c80632655aef11461002d575b5f80fd5b610047600480360381019061004291906103f1565b61005d565b6040516100549190610625565b60405180910390f35b61006561006d565b819050919050565b6040518060200160405280606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6100db82610095565b810181811067ffffffffffffffff821117156100fa576100f96100a5565b5b80604052505050565b5f61010c610080565b905061011882826100d2565b919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff82111561013f5761013e6100a5565b5b602082029050602081019050919050565b5f80fd5b5f67ffffffffffffffff82111561016e5761016d6100a5565b5b602082029050602081019050919050565b5f819050919050565b6101918161017f565b811461019b575f80fd5b50565b5f813590506101ac81610188565b92915050565b5f604082840312156101c7576101c6610091565b5b6101d16040610103565b90505f6101e08482850161019e565b5f8301525060206101f38482850161019e565b60208301525092915050565b5f61021161020c84610154565b610103565b9050808382526020820190506040840283018581111561023457610233610150565b5b835b8181101561025d578061024988826101b2565b845260208401935050604081019050610236565b5050509392505050565b5f82601f83011261027b5761027a610121565b5b813561028b8482602086016101ff565b91505092915050565b5f602082840312156102a9576102a8610091565b5b6102b36020610103565b90505f82013567ffffffffffffffff8111156102d2576102d161011d565b5b6102de84828501610267565b5f8301525092915050565b5f6102fb6102f684610125565b610103565b9050808382526020820190506020840283018581111561031e5761031d610150565b5b835b8181101561036557803567ffffffffffffffff81111561034357610342610121565b5b8086016103508982610294565b85526020850194505050602081019050610320565b5050509392505050565b5f82601f83011261038357610382610121565b5b81356103938482602086016102e9565b91505092915050565b5f602082840312156103b1576103b0610091565b5b6103bb6020610103565b90505f82013567ffffffffffffffff8111156103da576103d961011d565b5b6103e68482850161036f565b5f8301525092915050565b5f6020828403121561040657610405610089565b5b5f82013567ffffffffffffffff8111156104235761042261008d565b5b61042f8482850161039c565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6104938161017f565b82525050565b604082015f8201516104ad5f85018261048a565b5060208201516104c0602085018261048a565b50505050565b5f6104d18383610499565b60408301905092915050565b5f602082019050919050565b5f6104f382610461565b6104fd818561046b565b93506105088361047b565b805f5b8381101561053857815161051f88826104c6565b975061052a836104dd565b92505060018101905061050b565b5085935050505092915050565b5f602083015f8301518482035f86015261055f82826104e9565b9150508091505092915050565b5f6105778383610545565b905092915050565b5f602082019050919050565b5f61059582610438565b61059f8185610442565b9350836020820285016105b185610452565b805f5b858110156105ec57848403895281516105cd858261056c565b94506105d88361057f565b925060208a019950506001810190506105b4565b50829750879550505050505092915050565b5f602083015f8301518482035f860152610618828261058b565b9150508091505092915050565b5f6020820190508181035f83015261063d81846105fe565b90509291505056fea26469706673582212201f383cb73e1121ed7db5fc14b5624427a5a50460d2ff05356c6640fb19fc3c4764736f6c634300081a0033" # noqa: E501
75
+ NESTED_TUPLE_CONTRACT_RUNTIME = "0x608060405234801561000f575f80fd5b5060043610610029575f3560e01c80632655aef11461002d575b5f80fd5b610047600480360381019061004291906103f1565b61005d565b6040516100549190610625565b60405180910390f35b61006561006d565b819050919050565b6040518060200160405280606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6100db82610095565b810181811067ffffffffffffffff821117156100fa576100f96100a5565b5b80604052505050565b5f61010c610080565b905061011882826100d2565b919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff82111561013f5761013e6100a5565b5b602082029050602081019050919050565b5f80fd5b5f67ffffffffffffffff82111561016e5761016d6100a5565b5b602082029050602081019050919050565b5f819050919050565b6101918161017f565b811461019b575f80fd5b50565b5f813590506101ac81610188565b92915050565b5f604082840312156101c7576101c6610091565b5b6101d16040610103565b90505f6101e08482850161019e565b5f8301525060206101f38482850161019e565b60208301525092915050565b5f61021161020c84610154565b610103565b9050808382526020820190506040840283018581111561023457610233610150565b5b835b8181101561025d578061024988826101b2565b845260208401935050604081019050610236565b5050509392505050565b5f82601f83011261027b5761027a610121565b5b813561028b8482602086016101ff565b91505092915050565b5f602082840312156102a9576102a8610091565b5b6102b36020610103565b90505f82013567ffffffffffffffff8111156102d2576102d161011d565b5b6102de84828501610267565b5f8301525092915050565b5f6102fb6102f684610125565b610103565b9050808382526020820190506020840283018581111561031e5761031d610150565b5b835b8181101561036557803567ffffffffffffffff81111561034357610342610121565b5b8086016103508982610294565b85526020850194505050602081019050610320565b5050509392505050565b5f82601f83011261038357610382610121565b5b81356103938482602086016102e9565b91505092915050565b5f602082840312156103b1576103b0610091565b5b6103bb6020610103565b90505f82013567ffffffffffffffff8111156103da576103d961011d565b5b6103e68482850161036f565b5f8301525092915050565b5f6020828403121561040657610405610089565b5b5f82013567ffffffffffffffff8111156104235761042261008d565b5b61042f8482850161039c565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6104938161017f565b82525050565b604082015f8201516104ad5f85018261048a565b5060208201516104c0602085018261048a565b50505050565b5f6104d18383610499565b60408301905092915050565b5f602082019050919050565b5f6104f382610461565b6104fd818561046b565b93506105088361047b565b805f5b8381101561053857815161051f88826104c6565b975061052a836104dd565b92505060018101905061050b565b5085935050505092915050565b5f602083015f8301518482035f86015261055f82826104e9565b9150508091505092915050565b5f6105778383610545565b905092915050565b5f602082019050919050565b5f61059582610438565b61059f8185610442565b9350836020820285016105b185610452565b805f5b858110156105ec57848403895281516105cd858261056c565b94506105d88361057f565b925060208a019950506001810190506105b4565b50829750879550505050505092915050565b5f602083015f8301518482035f860152610618828261058b565b9150508091505092915050565b5f6020820190508181035f83015261063d81846105fe565b90509291505056fea26469706673582212201f383cb73e1121ed7db5fc14b5624427a5a50460d2ff05356c6640fb19fc3c4764736f6c634300081a0033" # noqa: E501
76
76
  NESTED_TUPLE_CONTRACT_ABI = [
77
77
  {
78
78
  "inputs": [
web3/_utils/http.py CHANGED
@@ -1,3 +1,6 @@
1
+ DEFAULT_HTTP_TIMEOUT = 30.0
2
+
3
+
1
4
  def construct_user_agent(class_type: type) -> str:
2
5
  from web3 import (
3
6
  __version__ as web3_version,
@@ -0,0 +1,280 @@
1
+ import asyncio
2
+ from concurrent.futures import (
3
+ ThreadPoolExecutor,
4
+ )
5
+ import logging
6
+ import os
7
+ import threading
8
+ from typing import (
9
+ Any,
10
+ Dict,
11
+ List,
12
+ Optional,
13
+ Union,
14
+ )
15
+
16
+ from aiohttp import (
17
+ ClientResponse,
18
+ ClientSession,
19
+ ClientTimeout,
20
+ )
21
+ from eth_typing import (
22
+ URI,
23
+ )
24
+ import requests
25
+
26
+ from web3._utils.async_caching import (
27
+ async_lock,
28
+ )
29
+ from web3._utils.caching import (
30
+ generate_cache_key,
31
+ )
32
+ from web3._utils.http import (
33
+ DEFAULT_HTTP_TIMEOUT,
34
+ )
35
+ from web3.utils.caching import (
36
+ SimpleCache,
37
+ )
38
+
39
+
40
+ class HTTPSessionManager:
41
+ logger = logging.getLogger("web3._utils.http_session_manager.HTTPSessionManager")
42
+ _lock: threading.Lock = threading.Lock()
43
+
44
+ def __init__(
45
+ self,
46
+ cache_size: int = 100,
47
+ session_pool_max_workers: int = 5,
48
+ ) -> None:
49
+ self.session_cache = SimpleCache(cache_size)
50
+ self.session_pool = ThreadPoolExecutor(max_workers=session_pool_max_workers)
51
+
52
+ @staticmethod
53
+ def get_default_http_endpoint() -> URI:
54
+ return URI(os.environ.get("WEB3_HTTP_PROVIDER_URI", "http://localhost:8545"))
55
+
56
+ def cache_and_return_session(
57
+ self,
58
+ endpoint_uri: URI,
59
+ session: requests.Session = None,
60
+ request_timeout: Optional[float] = None,
61
+ ) -> requests.Session:
62
+ # cache key should have a unique thread identifier
63
+ cache_key = generate_cache_key(f"{threading.get_ident()}:{endpoint_uri}")
64
+
65
+ cached_session = self.session_cache.get_cache_entry(cache_key)
66
+ if cached_session is not None:
67
+ # If read from cache yields a session, no need to lock; return the session.
68
+ # Sync is a bit simpler in this way since a `requests.Session` doesn't
69
+ # really "close" in the same way that an async `ClientSession` does.
70
+ # When "closed", it still uses http / https adapters successfully if a
71
+ # request is made.
72
+ return cached_session
73
+
74
+ if session is None:
75
+ session = requests.Session()
76
+
77
+ with self._lock:
78
+ cached_session, evicted_items = self.session_cache.cache(cache_key, session)
79
+ self.logger.debug(f"Session cached: {endpoint_uri}, {cached_session}")
80
+
81
+ if evicted_items is not None:
82
+ evicted_sessions = evicted_items.values()
83
+ for evicted_session in evicted_sessions:
84
+ self.logger.debug(
85
+ "Session cache full. Session evicted from cache: "
86
+ f"{evicted_session}",
87
+ )
88
+ threading.Timer(
89
+ # If `request_timeout` is `None`, don't wait forever for the closing
90
+ # session to finish the request. Instead, wait over the default timeout.
91
+ request_timeout or DEFAULT_HTTP_TIMEOUT + 0.1,
92
+ self._close_evicted_sessions,
93
+ args=[evicted_sessions],
94
+ ).start()
95
+
96
+ return cached_session
97
+
98
+ def get_response_from_get_request(
99
+ self, endpoint_uri: URI, *args: Any, **kwargs: Any
100
+ ) -> requests.Response:
101
+ kwargs.setdefault("timeout", DEFAULT_HTTP_TIMEOUT)
102
+ session = self.cache_and_return_session(
103
+ endpoint_uri, request_timeout=kwargs["timeout"]
104
+ )
105
+ response = session.get(endpoint_uri, *args, **kwargs)
106
+ return response
107
+
108
+ def json_make_get_request(
109
+ self, endpoint_uri: URI, *args: Any, **kwargs: Any
110
+ ) -> Dict[str, Any]:
111
+ response = self.get_response_from_get_request(endpoint_uri, *args, **kwargs)
112
+ response.raise_for_status()
113
+ return response.json()
114
+
115
+ def get_response_from_post_request(
116
+ self, endpoint_uri: URI, *args: Any, **kwargs: Any
117
+ ) -> requests.Response:
118
+ kwargs.setdefault("timeout", DEFAULT_HTTP_TIMEOUT)
119
+ session = self.cache_and_return_session(
120
+ endpoint_uri, request_timeout=kwargs["timeout"]
121
+ )
122
+ response = session.post(endpoint_uri, *args, **kwargs)
123
+ return response
124
+
125
+ def make_post_request(
126
+ self, endpoint_uri: URI, data: Union[bytes, Dict[str, Any]], **kwargs: Any
127
+ ) -> bytes:
128
+ response = self.get_response_from_post_request(
129
+ endpoint_uri, data=data, **kwargs
130
+ )
131
+ response.raise_for_status()
132
+ return response.content
133
+
134
+ def _close_evicted_sessions(self, evicted_sessions: List[requests.Session]) -> None:
135
+ for evicted_session in evicted_sessions:
136
+ evicted_session.close()
137
+ self.logger.debug(f"Closed evicted session: {evicted_session}")
138
+
139
+ # -- async -- #
140
+
141
+ async def async_cache_and_return_session(
142
+ self,
143
+ endpoint_uri: URI,
144
+ session: Optional[ClientSession] = None,
145
+ request_timeout: Optional[ClientTimeout] = None,
146
+ ) -> ClientSession:
147
+ # cache key should have a unique thread identifier
148
+ cache_key = generate_cache_key(f"{threading.get_ident()}:{endpoint_uri}")
149
+
150
+ evicted_items = None
151
+ async with async_lock(self.session_pool, self._lock):
152
+ if cache_key not in self.session_cache:
153
+ if session is None:
154
+ session = ClientSession(raise_for_status=True)
155
+
156
+ cached_session, evicted_items = self.session_cache.cache(
157
+ cache_key, session
158
+ )
159
+ self.logger.debug(
160
+ f"Async session cached: {endpoint_uri}, {cached_session}"
161
+ )
162
+
163
+ else:
164
+ # get the cached session
165
+ cached_session = self.session_cache.get_cache_entry(cache_key)
166
+ session_is_closed = cached_session.closed
167
+ session_loop_is_closed = cached_session._loop.is_closed()
168
+
169
+ warning = (
170
+ "Async session was closed"
171
+ if session_is_closed
172
+ else (
173
+ "Loop was closed for async session"
174
+ if session_loop_is_closed
175
+ else None
176
+ )
177
+ )
178
+ if warning:
179
+ self.logger.debug(
180
+ f"{warning}: {endpoint_uri}, {cached_session}. "
181
+ f"Creating and caching a new async session for uri."
182
+ )
183
+
184
+ self.session_cache._data.pop(cache_key)
185
+ if not session_is_closed:
186
+ # if loop was closed but not the session, close the session
187
+ await cached_session.close()
188
+ self.logger.debug(
189
+ f"Async session closed and evicted from cache: {cached_session}"
190
+ )
191
+
192
+ # replace stale session with a new session at the cache key
193
+ _session = ClientSession(raise_for_status=True)
194
+ cached_session, evicted_items = self.session_cache.cache(
195
+ cache_key, _session
196
+ )
197
+ self.logger.debug(
198
+ f"Async session cached: {endpoint_uri}, {cached_session}"
199
+ )
200
+
201
+ if evicted_items is not None:
202
+ # At this point the evicted sessions are already popped out of the cache and
203
+ # just stored in the `evicted_sessions` dict. So we can kick off a future
204
+ # task to close them and it should be safe to pop out of the lock here.
205
+ evicted_sessions = list(evicted_items.values())
206
+ for evicted_session in evicted_sessions:
207
+ self.logger.debug(
208
+ "Async session cache full. Session evicted from cache: "
209
+ f"{evicted_session}",
210
+ )
211
+ # Kick off an asyncio `Task` to close the evicted sessions. In the case
212
+ # that the cache filled very quickly and some sessions have been evicted
213
+ # before their original request has been made, we set the timer to a bit
214
+ # more than the `request_timeout` for a call. This should make it so that
215
+ # any call from an evicted session can still be made before the session
216
+ # is closed.
217
+ asyncio.create_task(
218
+ self._async_close_evicted_sessions(
219
+ # if `ClientTimeout.total` is `None`, don't wait forever for the
220
+ # closing session to finish the request. Instead, use the default
221
+ # timeout.
222
+ request_timeout.total or DEFAULT_HTTP_TIMEOUT + 0.1,
223
+ evicted_sessions,
224
+ )
225
+ )
226
+
227
+ return cached_session
228
+
229
+ async def async_get_response_from_get_request(
230
+ self, endpoint_uri: URI, *args: Any, **kwargs: Any
231
+ ) -> ClientResponse:
232
+ kwargs.setdefault("timeout", ClientTimeout(DEFAULT_HTTP_TIMEOUT))
233
+ session = await self.async_cache_and_return_session(
234
+ endpoint_uri, request_timeout=kwargs["timeout"]
235
+ )
236
+ response = await session.get(endpoint_uri, *args, **kwargs)
237
+ return response
238
+
239
+ async def async_json_make_get_request(
240
+ self, endpoint_uri: URI, *args: Any, **kwargs: Any
241
+ ) -> Dict[str, Any]:
242
+ response = await self.async_get_response_from_get_request(
243
+ endpoint_uri, *args, **kwargs
244
+ )
245
+ response.raise_for_status()
246
+ return await response.json()
247
+
248
+ async def async_get_response_from_post_request(
249
+ self, endpoint_uri: URI, *args: Any, **kwargs: Any
250
+ ) -> ClientResponse:
251
+ kwargs.setdefault("timeout", ClientTimeout(DEFAULT_HTTP_TIMEOUT))
252
+ session = await self.async_cache_and_return_session(
253
+ endpoint_uri, request_timeout=kwargs["timeout"]
254
+ )
255
+ response = await session.post(endpoint_uri, *args, **kwargs)
256
+ return response
257
+
258
+ async def async_make_post_request(
259
+ self, endpoint_uri: URI, data: Union[bytes, Dict[str, Any]], **kwargs: Any
260
+ ) -> bytes:
261
+ response = await self.async_get_response_from_post_request(
262
+ endpoint_uri, data=data, **kwargs
263
+ )
264
+ response.raise_for_status()
265
+ return await response.read()
266
+
267
+ async def _async_close_evicted_sessions(
268
+ self, timeout: float, evicted_sessions: List[ClientSession]
269
+ ) -> None:
270
+ await asyncio.sleep(timeout)
271
+
272
+ for evicted_session in evicted_sessions:
273
+ await evicted_session.close()
274
+ self.logger.debug(f"Closed evicted async session: {evicted_session}")
275
+
276
+ if any(not evicted_session.closed for evicted_session in evicted_sessions):
277
+ self.logger.warning(
278
+ "Some evicted async sessions were not properly closed: "
279
+ f"{evicted_sessions}"
280
+ )
@@ -187,10 +187,28 @@ def apply_list_to_array_formatter(formatter: Any) -> Callable[..., Any]:
187
187
  return to_list(apply_formatter_to_array(formatter))
188
188
 
189
189
 
190
+ def storage_key_to_hexstr(value: Union[bytes, int, str]) -> HexStr:
191
+ if not isinstance(value, (bytes, int, str)):
192
+ raise Web3ValueError(
193
+ f"Storage key must be one of bytes, int, str, got {type(value)}"
194
+ )
195
+ if isinstance(value, str):
196
+ if value.startswith("0x") and len(value) == 66:
197
+ return HexStr(value)
198
+ elif len(value) == 64:
199
+ return HexStr(f"0x{value}")
200
+ elif isinstance(value, bytes):
201
+ if len(value) == 32:
202
+ return HexBytes(value).to_0x_hex()
203
+ elif isinstance(value, int):
204
+ return storage_key_to_hexstr(hex(value))
205
+ raise Web3ValueError(f"Storage key must be a 32-byte value, got {value!r}")
206
+
207
+
190
208
  ACCESS_LIST_FORMATTER = type_aware_apply_formatters_to_dict(
191
209
  {
192
210
  "address": to_checksum_address,
193
- "storageKeys": apply_list_to_array_formatter(to_hexbytes(64)),
211
+ "storageKeys": apply_list_to_array_formatter(storage_key_to_hexstr),
194
212
  }
195
213
  )
196
214
 
@@ -721,7 +739,6 @@ PYTHONIC_RESULT_FORMATTERS: Dict[RPCEndpoint, Callable[..., Any]] = {
721
739
  RPC.eth_accounts: apply_list_to_array_formatter(to_checksum_address),
722
740
  RPC.eth_blockNumber: to_integer_if_hex,
723
741
  RPC.eth_chainId: to_integer_if_hex,
724
- RPC.eth_coinbase: to_checksum_address,
725
742
  RPC.eth_call: HexBytes,
726
743
  RPC.eth_createAccessList: ACCESS_LIST_RESPONSE_FORMATTER,
727
744
  RPC.eth_estimateGas: to_integer_if_hex,
@@ -761,7 +778,6 @@ PYTHONIC_RESULT_FORMATTERS: Dict[RPCEndpoint, Callable[..., Any]] = {
761
778
  ),
762
779
  RPC.eth_getUncleCountByBlockHash: to_integer_if_hex,
763
780
  RPC.eth_getUncleCountByBlockNumber: to_integer_if_hex,
764
- RPC.eth_hashrate: to_integer_if_hex,
765
781
  RPC.eth_protocolVersion: compose(
766
782
  apply_formatter_if(is_0x_prefixed, to_integer_if_hex),
767
783
  apply_formatter_if(is_integer, str),