web3 7.10.0__tar.gz → 7.11.1__tar.gz

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 (364) hide show
  1. {web3-7.10.0/web3.egg-info → web3-7.11.1}/PKG-INFO +6 -19
  2. {web3-7.10.0 → web3-7.11.1}/ens/exceptions.py +1 -1
  3. {web3-7.10.0 → web3-7.11.1}/pyproject.toml +1 -1
  4. {web3-7.10.0 → web3-7.11.1}/setup.py +3 -3
  5. {web3-7.10.0 → web3-7.11.1}/tests/conftest.py +0 -9
  6. {web3-7.10.0 → web3-7.11.1}/tests/core/eth-module/test_block_api.py +5 -0
  7. {web3-7.10.0 → web3-7.11.1}/tests/core/eth-module/test_transactions.py +168 -0
  8. {web3-7.10.0 → web3-7.11.1}/tests/core/filtering/test_contract_data_filters.py +8 -5
  9. {web3-7.10.0 → web3-7.11.1}/tests/core/filtering/test_contract_topic_filters.py +8 -5
  10. {web3-7.10.0 → web3-7.11.1}/tests/core/filtering/utils.py +2 -0
  11. {web3-7.10.0 → web3-7.11.1}/tests/core/providers/test_async_http_provider.py +18 -0
  12. {web3-7.10.0 → web3-7.11.1}/tests/core/providers/test_http_provider.py +18 -0
  13. {web3-7.10.0 → web3-7.11.1}/tests/core/providers/test_ipc_provider.py +15 -0
  14. web3-7.11.1/tests/core/providers/test_legacy_websocket_provider.py +29 -0
  15. {web3-7.10.0 → web3-7.11.1}/tests/core/providers/test_websocket_provider.py +73 -1
  16. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_abi.py +1 -1
  17. web3-7.11.1/tests/core/utilities/test_construct_event_filter_params.py +329 -0
  18. {web3-7.10.0 → web3-7.11.1}/tests/integration/common.py +4 -4
  19. {web3-7.10.0 → web3-7.11.1}/tests/integration/conftest.py +6 -6
  20. {web3-7.10.0 → web3-7.11.1}/tests/integration/generate_fixtures/go_ethereum.py +15 -0
  21. web3-7.11.1/tests/integration/geth-1.15.11-fixture.zip +0 -0
  22. {web3-7.10.0 → web3-7.11.1}/tests/integration/go_ethereum/conftest.py +78 -60
  23. {web3-7.10.0 → web3-7.11.1}/tests/integration/go_ethereum/test_goethereum_http.py +28 -48
  24. {web3-7.10.0 → web3-7.11.1}/tests/integration/go_ethereum/test_goethereum_ipc.py +12 -17
  25. {web3-7.10.0 → web3-7.11.1}/tests/integration/go_ethereum/test_goethereum_legacy_ws.py +9 -26
  26. {web3-7.10.0 → web3-7.11.1}/tests/integration/go_ethereum/test_goethereum_ws/conftest.py +5 -20
  27. {web3-7.10.0 → web3-7.11.1}/tests/integration/go_ethereum/test_goethereum_ws/test_async_await_w3.py +8 -7
  28. {web3-7.10.0 → web3-7.11.1}/tests/integration/go_ethereum/test_goethereum_ws/test_async_ctx_manager_w3.py +6 -7
  29. {web3-7.10.0 → web3-7.11.1}/tests/integration/go_ethereum/test_goethereum_ws/test_async_iterator_w3.py +8 -7
  30. {web3-7.10.0 → web3-7.11.1}/tests/integration/go_ethereum/utils.py +0 -26
  31. {web3-7.10.0 → web3-7.11.1}/tests/integration/test_ethereum_tester.py +19 -19
  32. {web3-7.10.0 → web3-7.11.1}/tests/utils.py +21 -6
  33. {web3-7.10.0 → web3-7.11.1}/web3/_utils/batching.py +42 -1
  34. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/ambiguous_function_contract.py +3 -3
  35. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/arrays_contract.py +3 -3
  36. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/bytes_contracts.py +5 -5
  37. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/constructor_contracts.py +7 -7
  38. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/contract_caller_tester.py +3 -3
  39. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/emitter_contract.py +3 -3
  40. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/event_contracts.py +7 -7
  41. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/extended_resolver.py +3 -3
  42. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/fallback_function_contract.py +3 -3
  43. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/function_name_tester_contract.py +3 -3
  44. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/math_contract.py +3 -3
  45. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/offchain_lookup.py +3 -3
  46. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/offchain_resolver.py +3 -3
  47. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/panic_errors_contract.py +3 -3
  48. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/payable_tester.py +3 -3
  49. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/receive_function_contracts.py +5 -5
  50. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/reflector_contracts.py +3 -3
  51. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/revert_contract.py +3 -3
  52. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/simple_resolver.py +3 -3
  53. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/storage_contract.py +3 -3
  54. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/string_contract.py +3 -3
  55. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/tuple_contracts.py +5 -5
  56. {web3-7.10.0 → web3-7.11.1}/web3/_utils/decorators.py +2 -2
  57. {web3-7.10.0 → web3-7.11.1}/web3/_utils/encoding.py +8 -0
  58. {web3-7.10.0 → web3-7.11.1}/web3/_utils/ens.py +9 -1
  59. {web3-7.10.0 → web3-7.11.1}/web3/_utils/error_formatters_utils.py +17 -0
  60. {web3-7.10.0 → web3-7.11.1}/web3/_utils/filters.py +39 -28
  61. {web3-7.10.0 → web3-7.11.1}/web3/_utils/method_formatters.py +58 -7
  62. {web3-7.10.0 → web3-7.11.1}/web3/_utils/module_testing/eth_module.py +218 -80
  63. {web3-7.10.0 → web3-7.11.1}/web3/_utils/module_testing/module_testing_utils.py +0 -12
  64. {web3-7.10.0 → web3-7.11.1}/web3/_utils/module_testing/persistent_connection_provider.py +3 -3
  65. {web3-7.10.0 → web3-7.11.1}/web3/_utils/normalizers.py +1 -1
  66. {web3-7.10.0 → web3-7.11.1}/web3/_utils/rpc_abi.py +5 -4
  67. {web3-7.10.0 → web3-7.11.1}/web3/_utils/utility_methods.py +8 -6
  68. {web3-7.10.0 → web3-7.11.1}/web3/eth/async_eth.py +4 -0
  69. {web3-7.10.0 → web3-7.11.1}/web3/eth/eth.py +15 -2
  70. {web3-7.10.0 → web3-7.11.1}/web3/method.py +10 -2
  71. {web3-7.10.0 → web3-7.11.1}/web3/providers/async_base.py +5 -6
  72. {web3-7.10.0 → web3-7.11.1}/web3/providers/base.py +5 -5
  73. {web3-7.10.0 → web3-7.11.1}/web3/providers/eth_tester/middleware.py +20 -0
  74. {web3-7.10.0 → web3-7.11.1}/web3/providers/ipc.py +2 -0
  75. {web3-7.10.0 → web3-7.11.1}/web3/providers/legacy_websocket.py +2 -0
  76. {web3-7.10.0 → web3-7.11.1}/web3/providers/persistent/async_ipc.py +3 -1
  77. {web3-7.10.0 → web3-7.11.1}/web3/providers/persistent/persistent.py +15 -10
  78. {web3-7.10.0 → web3-7.11.1}/web3/providers/persistent/request_processor.py +10 -1
  79. {web3-7.10.0 → web3-7.11.1}/web3/providers/persistent/subscription_manager.py +1 -0
  80. {web3-7.10.0 → web3-7.11.1}/web3/providers/rpc/async_rpc.py +2 -0
  81. {web3-7.10.0 → web3-7.11.1}/web3/providers/rpc/rpc.py +2 -0
  82. {web3-7.10.0 → web3-7.11.1}/web3/types.py +27 -0
  83. {web3-7.10.0 → web3-7.11.1}/web3/utils/abi.py +1 -1
  84. {web3-7.10.0 → web3-7.11.1}/web3/utils/caching.py +8 -5
  85. {web3-7.10.0 → web3-7.11.1/web3.egg-info}/PKG-INFO +6 -19
  86. {web3-7.10.0 → web3-7.11.1}/web3.egg-info/SOURCES.txt +1 -3
  87. {web3-7.10.0 → web3-7.11.1}/web3.egg-info/requires.txt +4 -4
  88. web3-7.10.0/tests/.DS_Store +0 -0
  89. web3-7.10.0/tests/core/providers/test_legacy_websocket_provider.py +0 -81
  90. web3-7.10.0/tests/core/utilities/test_construct_event_filter_params.py +0 -103
  91. web3-7.10.0/tests/integration/.DS_Store +0 -0
  92. web3-7.10.0/tests/integration/geth-1.15.5-fixture.zip +0 -0
  93. {web3-7.10.0 → web3-7.11.1}/LICENSE +0 -0
  94. {web3-7.10.0 → web3-7.11.1}/MANIFEST.in +0 -0
  95. {web3-7.10.0 → web3-7.11.1}/README.md +0 -0
  96. {web3-7.10.0 → web3-7.11.1}/ens/__init__.py +0 -0
  97. {web3-7.10.0 → web3-7.11.1}/ens/_normalization.py +0 -0
  98. {web3-7.10.0 → web3-7.11.1}/ens/abis.py +0 -0
  99. {web3-7.10.0 → web3-7.11.1}/ens/async_ens.py +0 -0
  100. {web3-7.10.0 → web3-7.11.1}/ens/auto.py +0 -0
  101. {web3-7.10.0 → web3-7.11.1}/ens/base_ens.py +0 -0
  102. {web3-7.10.0 → web3-7.11.1}/ens/constants.py +0 -0
  103. {web3-7.10.0 → web3-7.11.1}/ens/contract_data.py +0 -0
  104. {web3-7.10.0 → web3-7.11.1}/ens/ens.py +0 -0
  105. {web3-7.10.0 → web3-7.11.1}/ens/specs/nf.json +0 -0
  106. {web3-7.10.0 → web3-7.11.1}/ens/specs/normalization_spec.json +0 -0
  107. {web3-7.10.0 → web3-7.11.1}/ens/utils.py +0 -0
  108. {web3-7.10.0 → web3-7.11.1}/scripts/release/test_package.py +0 -0
  109. {web3-7.10.0 → web3-7.11.1}/setup.cfg +0 -0
  110. {web3-7.10.0 → web3-7.11.1}/tests/__init__.py +0 -0
  111. {web3-7.10.0 → web3-7.11.1}/tests/beacon/test_async_beacon.py +0 -0
  112. {web3-7.10.0 → web3-7.11.1}/tests/beacon/test_beacon.py +0 -0
  113. {web3-7.10.0 → web3-7.11.1}/tests/core/admin-module/test_admin_addPeer.py +0 -0
  114. {web3-7.10.0 → web3-7.11.1}/tests/core/admin-module/test_admin_nodeInfo.py +0 -0
  115. {web3-7.10.0 → web3-7.11.1}/tests/core/admin-module/test_admin_peers.py +0 -0
  116. {web3-7.10.0 → web3-7.11.1}/tests/core/block-utils/test_select_method_for_block_identifier.py +0 -0
  117. {web3-7.10.0 → web3-7.11.1}/tests/core/caching-utils/test_generate_cache_key.py +0 -0
  118. {web3-7.10.0 → web3-7.11.1}/tests/core/caching-utils/test_request_caching.py +0 -0
  119. {web3-7.10.0 → web3-7.11.1}/tests/core/conftest.py +0 -0
  120. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/conftest.py +0 -0
  121. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_ambiguous_events.py +0 -0
  122. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_ambiguous_functions.py +0 -0
  123. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_attributes.py +0 -0
  124. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_build_transaction.py +0 -0
  125. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_call_interface.py +0 -0
  126. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_caller_interface.py +0 -0
  127. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_class_construction.py +0 -0
  128. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_constructor.py +0 -0
  129. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_constructor_encoding.py +0 -0
  130. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_deployment.py +0 -0
  131. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_estimate_gas.py +0 -0
  132. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_events.py +0 -0
  133. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_events_build_filter.py +0 -0
  134. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_example.py +0 -0
  135. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_init.py +0 -0
  136. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_method_abi_decoding.py +0 -0
  137. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_method_abi_encoding.py +0 -0
  138. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_method_to_argument_matching.py +0 -0
  139. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_panic_errors.py +0 -0
  140. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_transact_interface.py +0 -0
  141. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_contract_util_functions.py +0 -0
  142. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_extracting_event_data.py +0 -0
  143. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_extracting_event_data_old.py +0 -0
  144. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/test_offchain_lookup.py +0 -0
  145. {web3-7.10.0 → web3-7.11.1}/tests/core/contracts/utils.py +0 -0
  146. {web3-7.10.0 → web3-7.11.1}/tests/core/datastructures/test_datastructures.py +0 -0
  147. {web3-7.10.0 → web3-7.11.1}/tests/core/empty-object/test_empty_object_is_falsy.py +0 -0
  148. {web3-7.10.0 → web3-7.11.1}/tests/core/eth-module/conftest.py +0 -0
  149. {web3-7.10.0 → web3-7.11.1}/tests/core/eth-module/test_accounts.py +0 -0
  150. {web3-7.10.0 → web3-7.11.1}/tests/core/eth-module/test_default_account_api.py +0 -0
  151. {web3-7.10.0 → web3-7.11.1}/tests/core/eth-module/test_eth_contract.py +0 -0
  152. {web3-7.10.0 → web3-7.11.1}/tests/core/eth-module/test_eth_fee_history.py +0 -0
  153. {web3-7.10.0 → web3-7.11.1}/tests/core/eth-module/test_eth_filter.py +0 -0
  154. {web3-7.10.0 → web3-7.11.1}/tests/core/eth-module/test_eth_properties.py +0 -0
  155. {web3-7.10.0 → web3-7.11.1}/tests/core/eth-module/test_gas_pricing.py +0 -0
  156. {web3-7.10.0 → web3-7.11.1}/tests/core/eth-module/test_poa.py +0 -0
  157. {web3-7.10.0 → web3-7.11.1}/tests/core/eth-tester-api/test_withdrawals.py +0 -0
  158. {web3-7.10.0 → web3-7.11.1}/tests/core/exceptions/test_exceptions.py +0 -0
  159. {web3-7.10.0 → web3-7.11.1}/tests/core/filtering/conftest.py +0 -0
  160. {web3-7.10.0 → web3-7.11.1}/tests/core/filtering/test_basic_filter_tests.py +0 -0
  161. {web3-7.10.0 → web3-7.11.1}/tests/core/filtering/test_contract_create_filter_topic_merging.py +0 -0
  162. {web3-7.10.0 → web3-7.11.1}/tests/core/filtering/test_contract_get_logs.py +0 -0
  163. {web3-7.10.0 → web3-7.11.1}/tests/core/filtering/test_contract_on_event_filtering.py +0 -0
  164. {web3-7.10.0 → web3-7.11.1}/tests/core/filtering/test_contract_past_event_filtering.py +0 -0
  165. {web3-7.10.0 → web3-7.11.1}/tests/core/filtering/test_existing_filter_instance.py +0 -0
  166. {web3-7.10.0 → web3-7.11.1}/tests/core/filtering/test_filter_against_latest_blocks.py +0 -0
  167. {web3-7.10.0 → web3-7.11.1}/tests/core/filtering/test_filter_against_pending_transactions.py +0 -0
  168. {web3-7.10.0 → web3-7.11.1}/tests/core/filtering/test_filter_against_transaction_logs.py +0 -0
  169. {web3-7.10.0 → web3-7.11.1}/tests/core/filtering/test_filters_against_many_blocks.py +0 -0
  170. {web3-7.10.0 → web3-7.11.1}/tests/core/filtering/test_utils_functions.py +0 -0
  171. {web3-7.10.0 → web3-7.11.1}/tests/core/gas-strategies/test_rpc_gas_pricing_strategies.py +0 -0
  172. {web3-7.10.0 → web3-7.11.1}/tests/core/gas-strategies/test_time_based_gas_price_strategy.py +0 -0
  173. {web3-7.10.0 → web3-7.11.1}/tests/core/manager/conftest.py +0 -0
  174. {web3-7.10.0 → web3-7.11.1}/tests/core/manager/test_default_middlewares.py +0 -0
  175. {web3-7.10.0 → web3-7.11.1}/tests/core/manager/test_middleware_can_be_stateful.py +0 -0
  176. {web3-7.10.0 → web3-7.11.1}/tests/core/manager/test_middleware_onion_api.py +0 -0
  177. {web3-7.10.0 → web3-7.11.1}/tests/core/manager/test_provider_property.py +0 -0
  178. {web3-7.10.0 → web3-7.11.1}/tests/core/manager/test_provider_request_wrapping.py +0 -0
  179. {web3-7.10.0 → web3-7.11.1}/tests/core/manager/test_response_formatters.py +0 -0
  180. {web3-7.10.0 → web3-7.11.1}/tests/core/method-class/test_method.py +0 -0
  181. {web3-7.10.0 → web3-7.11.1}/tests/core/method-class/test_result_formatters.py +0 -0
  182. {web3-7.10.0 → web3-7.11.1}/tests/core/middleware/test_attrdict_middleware.py +0 -0
  183. {web3-7.10.0 → web3-7.11.1}/tests/core/middleware/test_eth_tester_middleware.py +0 -0
  184. {web3-7.10.0 → web3-7.11.1}/tests/core/middleware/test_filter_middleware.py +0 -0
  185. {web3-7.10.0 → web3-7.11.1}/tests/core/middleware/test_formatting_middleware.py +0 -0
  186. {web3-7.10.0 → web3-7.11.1}/tests/core/middleware/test_gas_price_strategy.py +0 -0
  187. {web3-7.10.0 → web3-7.11.1}/tests/core/middleware/test_middleware.py +0 -0
  188. {web3-7.10.0 → web3-7.11.1}/tests/core/middleware/test_name_to_address_middleware.py +0 -0
  189. {web3-7.10.0 → web3-7.11.1}/tests/core/middleware/test_stalecheck.py +0 -0
  190. {web3-7.10.0 → web3-7.11.1}/tests/core/middleware/test_transaction_signing.py +0 -0
  191. {web3-7.10.0 → web3-7.11.1}/tests/core/module-class/test_module.py +0 -0
  192. {web3-7.10.0 → web3-7.11.1}/tests/core/providers/test_async_ipc_provider.py +0 -0
  193. {web3-7.10.0 → web3-7.11.1}/tests/core/providers/test_async_tester_provider.py +0 -0
  194. {web3-7.10.0 → web3-7.11.1}/tests/core/providers/test_auto_provider.py +0 -0
  195. {web3-7.10.0 → web3-7.11.1}/tests/core/providers/test_base_provider.py +0 -0
  196. {web3-7.10.0 → web3-7.11.1}/tests/core/providers/test_http_request_retry.py +0 -0
  197. {web3-7.10.0 → web3-7.11.1}/tests/core/providers/test_provider_init.py +0 -0
  198. {web3-7.10.0 → web3-7.11.1}/tests/core/providers/test_tester_provider.py +0 -0
  199. {web3-7.10.0 → web3-7.11.1}/tests/core/subscriptions/test_subscription_manager.py +0 -0
  200. {web3-7.10.0 → web3-7.11.1}/tests/core/subscriptions/test_subscriptions.py +0 -0
  201. {web3-7.10.0 → web3-7.11.1}/tests/core/test_library_files.py +0 -0
  202. {web3-7.10.0 → web3-7.11.1}/tests/core/testing-module/test_testing_mine.py +0 -0
  203. {web3-7.10.0 → web3-7.11.1}/tests/core/testing-module/test_testing_snapshot_and_revert.py +0 -0
  204. {web3-7.10.0 → web3-7.11.1}/tests/core/testing-module/test_testing_timeTravel.py +0 -0
  205. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/__init__.py +0 -0
  206. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/conftest.py +0 -0
  207. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_abi_filtering_by_argument_name.py +0 -0
  208. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_abi_is_encodable.py +0 -0
  209. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_abi_named_tree.py +0 -0
  210. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_address.py +0 -0
  211. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_async_transaction.py +0 -0
  212. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_attach_modules.py +0 -0
  213. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_attributedict.py +0 -0
  214. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_caching_utils.py +0 -0
  215. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_construct_event_data_set.py +0 -0
  216. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_construct_event_topics.py +0 -0
  217. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_datatypes.py +0 -0
  218. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_decorators.py +0 -0
  219. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_encoding.py +0 -0
  220. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_event_filter_builder.py +0 -0
  221. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_event_interface.py +0 -0
  222. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_fee_utils.py +0 -0
  223. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_formatters.py +0 -0
  224. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_http_session_manager.py +0 -0
  225. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_is_predefined_block_number.py +0 -0
  226. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_is_probably_enum.py +0 -0
  227. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_is_recognized_type.py +0 -0
  228. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_math.py +0 -0
  229. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_method_formatters.py +0 -0
  230. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_prepare_transaction_replacement.py +0 -0
  231. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_select_filter_method.py +0 -0
  232. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_threads.py +0 -0
  233. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_valid_transaction_params.py +0 -0
  234. {web3-7.10.0 → web3-7.11.1}/tests/core/utilities/test_validation.py +0 -0
  235. {web3-7.10.0 → web3-7.11.1}/tests/core/web3-module/test_api.py +0 -0
  236. {web3-7.10.0 → web3-7.11.1}/tests/core/web3-module/test_attach_modules.py +0 -0
  237. {web3-7.10.0 → web3-7.11.1}/tests/core/web3-module/test_client_version.py +0 -0
  238. {web3-7.10.0 → web3-7.11.1}/tests/core/web3-module/test_conversions.py +0 -0
  239. {web3-7.10.0 → web3-7.11.1}/tests/core/web3-module/test_import_and_version.py +0 -0
  240. {web3-7.10.0 → web3-7.11.1}/tests/core/web3-module/test_keccak.py +0 -0
  241. {web3-7.10.0 → web3-7.11.1}/tests/core/web3-module/test_providers.py +0 -0
  242. {web3-7.10.0 → web3-7.11.1}/tests/core/web3-module/test_strict_bytes_type_checking.py +0 -0
  243. {web3-7.10.0 → web3-7.11.1}/tests/core/web3-module/test_web3_inheritance.py +0 -0
  244. {web3-7.10.0 → web3-7.11.1}/tests/ens/conftest.py +0 -0
  245. {web3-7.10.0 → web3-7.11.1}/tests/ens/normalization/normalization_tests.json +0 -0
  246. {web3-7.10.0 → web3-7.11.1}/tests/ens/normalization/test_normalize_name_ensip15.py +0 -0
  247. {web3-7.10.0 → web3-7.11.1}/tests/ens/test_ens.py +0 -0
  248. {web3-7.10.0 → web3-7.11.1}/tests/ens/test_get_registry.py +0 -0
  249. {web3-7.10.0 → web3-7.11.1}/tests/ens/test_get_text.py +0 -0
  250. {web3-7.10.0 → web3-7.11.1}/tests/ens/test_nameprep.py +0 -0
  251. {web3-7.10.0 → web3-7.11.1}/tests/ens/test_offchain_resolution.py +0 -0
  252. {web3-7.10.0 → web3-7.11.1}/tests/ens/test_setup_address.py +0 -0
  253. {web3-7.10.0 → web3-7.11.1}/tests/ens/test_setup_name.py +0 -0
  254. {web3-7.10.0 → web3-7.11.1}/tests/ens/test_utils.py +0 -0
  255. {web3-7.10.0 → web3-7.11.1}/tests/ens/test_wildcard_resolution.py +0 -0
  256. {web3-7.10.0 → web3-7.11.1}/tests/integration/README.md +0 -0
  257. {web3-7.10.0 → web3-7.11.1}/tests/integration/generate_fixtures/common.py +0 -0
  258. {web3-7.10.0 → web3-7.11.1}/tests/integration/go_ethereum/__init__.py +0 -0
  259. {web3-7.10.0 → web3-7.11.1}/tests/integration/go_ethereum/common.py +0 -0
  260. {web3-7.10.0 → web3-7.11.1}/tests/integration/go_ethereum/test_goethereum_ws/__init__.py +0 -0
  261. {web3-7.10.0 → web3-7.11.1}/web3/__init__.py +0 -0
  262. {web3-7.10.0 → web3-7.11.1}/web3/_utils/__init__.py +0 -0
  263. {web3-7.10.0 → web3-7.11.1}/web3/_utils/abi.py +0 -0
  264. {web3-7.10.0 → web3-7.11.1}/web3/_utils/abi_element_identifiers.py +0 -0
  265. {web3-7.10.0 → web3-7.11.1}/web3/_utils/async_caching.py +0 -0
  266. {web3-7.10.0 → web3-7.11.1}/web3/_utils/async_transactions.py +0 -0
  267. {web3-7.10.0 → web3-7.11.1}/web3/_utils/blocks.py +0 -0
  268. {web3-7.10.0 → web3-7.11.1}/web3/_utils/caching/__init__.py +0 -0
  269. {web3-7.10.0 → web3-7.11.1}/web3/_utils/caching/caching_utils.py +0 -0
  270. {web3-7.10.0 → web3-7.11.1}/web3/_utils/caching/request_caching_validation.py +0 -0
  271. {web3-7.10.0 → web3-7.11.1}/web3/_utils/compat/__init__.py +0 -0
  272. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/__init__.py +0 -0
  273. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/compile_contracts.py +0 -0
  274. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/__init__.py +0 -0
  275. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contract_sources/contract_data/_custom_contract_data.py +0 -0
  276. {web3-7.10.0 → web3-7.11.1}/web3/_utils/contracts.py +0 -0
  277. {web3-7.10.0 → web3-7.11.1}/web3/_utils/datatypes.py +0 -0
  278. {web3-7.10.0 → web3-7.11.1}/web3/_utils/empty.py +0 -0
  279. {web3-7.10.0 → web3-7.11.1}/web3/_utils/events.py +0 -0
  280. {web3-7.10.0 → web3-7.11.1}/web3/_utils/fee_utils.py +0 -0
  281. {web3-7.10.0 → web3-7.11.1}/web3/_utils/formatters.py +0 -0
  282. {web3-7.10.0 → web3-7.11.1}/web3/_utils/http.py +0 -0
  283. {web3-7.10.0 → web3-7.11.1}/web3/_utils/http_session_manager.py +0 -0
  284. {web3-7.10.0 → web3-7.11.1}/web3/_utils/hypothesis.py +0 -0
  285. {web3-7.10.0 → web3-7.11.1}/web3/_utils/math.py +0 -0
  286. {web3-7.10.0 → web3-7.11.1}/web3/_utils/module.py +0 -0
  287. {web3-7.10.0 → web3-7.11.1}/web3/_utils/module_testing/__init__.py +0 -0
  288. {web3-7.10.0 → web3-7.11.1}/web3/_utils/module_testing/go_ethereum_admin_module.py +0 -0
  289. {web3-7.10.0 → web3-7.11.1}/web3/_utils/module_testing/go_ethereum_debug_module.py +0 -0
  290. {web3-7.10.0 → web3-7.11.1}/web3/_utils/module_testing/go_ethereum_txpool_module.py +0 -0
  291. {web3-7.10.0 → web3-7.11.1}/web3/_utils/module_testing/net_module.py +0 -0
  292. {web3-7.10.0 → web3-7.11.1}/web3/_utils/module_testing/utils.py +0 -0
  293. {web3-7.10.0 → web3-7.11.1}/web3/_utils/module_testing/web3_module.py +0 -0
  294. {web3-7.10.0 → web3-7.11.1}/web3/_utils/threads.py +0 -0
  295. {web3-7.10.0 → web3-7.11.1}/web3/_utils/transactions.py +0 -0
  296. {web3-7.10.0 → web3-7.11.1}/web3/_utils/type_conversion.py +0 -0
  297. {web3-7.10.0 → web3-7.11.1}/web3/_utils/validation.py +0 -0
  298. {web3-7.10.0 → web3-7.11.1}/web3/_utils/windows.py +0 -0
  299. {web3-7.10.0 → web3-7.11.1}/web3/auto/__init__.py +0 -0
  300. {web3-7.10.0 → web3-7.11.1}/web3/auto/gethdev.py +0 -0
  301. {web3-7.10.0 → web3-7.11.1}/web3/beacon/__init__.py +0 -0
  302. {web3-7.10.0 → web3-7.11.1}/web3/beacon/api_endpoints.py +0 -0
  303. {web3-7.10.0 → web3-7.11.1}/web3/beacon/async_beacon.py +0 -0
  304. {web3-7.10.0 → web3-7.11.1}/web3/beacon/beacon.py +0 -0
  305. {web3-7.10.0 → web3-7.11.1}/web3/constants.py +0 -0
  306. {web3-7.10.0 → web3-7.11.1}/web3/contract/__init__.py +0 -0
  307. {web3-7.10.0 → web3-7.11.1}/web3/contract/async_contract.py +0 -0
  308. {web3-7.10.0 → web3-7.11.1}/web3/contract/base_contract.py +0 -0
  309. {web3-7.10.0 → web3-7.11.1}/web3/contract/contract.py +0 -0
  310. {web3-7.10.0 → web3-7.11.1}/web3/contract/utils.py +0 -0
  311. {web3-7.10.0 → web3-7.11.1}/web3/datastructures.py +0 -0
  312. {web3-7.10.0 → web3-7.11.1}/web3/eth/__init__.py +0 -0
  313. {web3-7.10.0 → web3-7.11.1}/web3/eth/base_eth.py +0 -0
  314. {web3-7.10.0 → web3-7.11.1}/web3/exceptions.py +0 -0
  315. {web3-7.10.0 → web3-7.11.1}/web3/gas_strategies/__init__.py +0 -0
  316. {web3-7.10.0 → web3-7.11.1}/web3/gas_strategies/rpc.py +0 -0
  317. {web3-7.10.0 → web3-7.11.1}/web3/gas_strategies/time_based.py +0 -0
  318. {web3-7.10.0 → web3-7.11.1}/web3/geth.py +0 -0
  319. {web3-7.10.0 → web3-7.11.1}/web3/logs.py +0 -0
  320. {web3-7.10.0 → web3-7.11.1}/web3/main.py +0 -0
  321. {web3-7.10.0 → web3-7.11.1}/web3/manager.py +0 -0
  322. {web3-7.10.0 → web3-7.11.1}/web3/middleware/__init__.py +0 -0
  323. {web3-7.10.0 → web3-7.11.1}/web3/middleware/attrdict.py +0 -0
  324. {web3-7.10.0 → web3-7.11.1}/web3/middleware/base.py +0 -0
  325. {web3-7.10.0 → web3-7.11.1}/web3/middleware/buffered_gas_estimate.py +0 -0
  326. {web3-7.10.0 → web3-7.11.1}/web3/middleware/filter.py +0 -0
  327. {web3-7.10.0 → web3-7.11.1}/web3/middleware/formatting.py +0 -0
  328. {web3-7.10.0 → web3-7.11.1}/web3/middleware/gas_price_strategy.py +0 -0
  329. {web3-7.10.0 → web3-7.11.1}/web3/middleware/names.py +0 -0
  330. {web3-7.10.0 → web3-7.11.1}/web3/middleware/proof_of_authority.py +0 -0
  331. {web3-7.10.0 → web3-7.11.1}/web3/middleware/pythonic.py +0 -0
  332. {web3-7.10.0 → web3-7.11.1}/web3/middleware/signing.py +0 -0
  333. {web3-7.10.0 → web3-7.11.1}/web3/middleware/stalecheck.py +0 -0
  334. {web3-7.10.0 → web3-7.11.1}/web3/middleware/validation.py +0 -0
  335. {web3-7.10.0 → web3-7.11.1}/web3/module.py +0 -0
  336. {web3-7.10.0 → web3-7.11.1}/web3/net.py +0 -0
  337. {web3-7.10.0 → web3-7.11.1}/web3/providers/__init__.py +0 -0
  338. {web3-7.10.0 → web3-7.11.1}/web3/providers/auto.py +0 -0
  339. {web3-7.10.0 → web3-7.11.1}/web3/providers/eth_tester/__init__.py +0 -0
  340. {web3-7.10.0 → web3-7.11.1}/web3/providers/eth_tester/defaults.py +0 -0
  341. {web3-7.10.0 → web3-7.11.1}/web3/providers/eth_tester/main.py +0 -0
  342. {web3-7.10.0 → web3-7.11.1}/web3/providers/persistent/__init__.py +0 -0
  343. {web3-7.10.0 → web3-7.11.1}/web3/providers/persistent/persistent_connection.py +0 -0
  344. {web3-7.10.0 → web3-7.11.1}/web3/providers/persistent/subscription_container.py +0 -0
  345. {web3-7.10.0 → web3-7.11.1}/web3/providers/persistent/utils.py +0 -0
  346. {web3-7.10.0 → web3-7.11.1}/web3/providers/persistent/websocket.py +0 -0
  347. {web3-7.10.0 → web3-7.11.1}/web3/providers/rpc/__init__.py +0 -0
  348. {web3-7.10.0 → web3-7.11.1}/web3/providers/rpc/utils.py +0 -0
  349. {web3-7.10.0 → web3-7.11.1}/web3/py.typed +0 -0
  350. {web3-7.10.0 → web3-7.11.1}/web3/scripts/__init__.py +0 -0
  351. {web3-7.10.0 → web3-7.11.1}/web3/scripts/install_pre_releases.py +0 -0
  352. {web3-7.10.0 → web3-7.11.1}/web3/scripts/parse_pygeth_version.py +0 -0
  353. {web3-7.10.0 → web3-7.11.1}/web3/scripts/release/__init__.py +0 -0
  354. {web3-7.10.0 → web3-7.11.1}/web3/scripts/release/test_package.py +0 -0
  355. {web3-7.10.0 → web3-7.11.1}/web3/testing.py +0 -0
  356. {web3-7.10.0 → web3-7.11.1}/web3/tracing.py +0 -0
  357. {web3-7.10.0 → web3-7.11.1}/web3/utils/__init__.py +0 -0
  358. {web3-7.10.0 → web3-7.11.1}/web3/utils/address.py +0 -0
  359. {web3-7.10.0 → web3-7.11.1}/web3/utils/async_exception_handling.py +0 -0
  360. {web3-7.10.0 → web3-7.11.1}/web3/utils/exception_handling.py +0 -0
  361. {web3-7.10.0 → web3-7.11.1}/web3/utils/subscriptions.py +0 -0
  362. {web3-7.10.0 → web3-7.11.1}/web3.egg-info/dependency_links.txt +0 -0
  363. {web3-7.10.0 → web3-7.11.1}/web3.egg-info/not-zip-safe +0 -0
  364. {web3-7.10.0 → web3-7.11.1}/web3.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.1
2
2
  Name: web3
3
- Version: 7.10.0
3
+ Version: 7.11.1
4
4
  Summary: web3: A Python library for interacting with Ethereum
5
5
  Home-page: https://github.com/ethereum/web3.py
6
6
  Author: The Ethereum Foundation
@@ -22,7 +22,7 @@ Requires-Python: >=3.8, <4
22
22
  Description-Content-Type: text/markdown
23
23
  License-File: LICENSE
24
24
  Requires-Dist: eth-abi>=5.0.1
25
- Requires-Dist: eth-account>=0.13.1
25
+ Requires-Dist: eth-account>=0.13.6
26
26
  Requires-Dist: eth-hash[pycryptodome]>=0.5.1
27
27
  Requires-Dist: eth-typing>=5.0.0
28
28
  Requires-Dist: eth-utils>=5.0.0
@@ -36,7 +36,7 @@ Requires-Dist: types-requests>=2.0.0
36
36
  Requires-Dist: websockets<16.0.0,>=10.0.0
37
37
  Requires-Dist: pyunormalize>=15.0.0
38
38
  Provides-Extra: tester
39
- Requires-Dist: eth-tester[py-evm]<0.13.0b1,>=0.12.0b1; extra == "tester"
39
+ Requires-Dist: eth-tester[py-evm]<0.14.0b1,>=0.13.0b1; extra == "tester"
40
40
  Requires-Dist: py-geth>=5.1.0; extra == "tester"
41
41
  Provides-Extra: dev
42
42
  Requires-Dist: build>=0.9.0; extra == "dev"
@@ -59,7 +59,7 @@ Requires-Dist: hypothesis>=3.31.2; extra == "dev"
59
59
  Requires-Dist: tox>=4.0.0; extra == "dev"
60
60
  Requires-Dist: mypy==1.10.0; extra == "dev"
61
61
  Requires-Dist: pre-commit>=3.4.0; extra == "dev"
62
- Requires-Dist: eth-tester[py-evm]<0.13.0b1,>=0.12.0b1; extra == "dev"
62
+ Requires-Dist: eth-tester[py-evm]<0.14.0b1,>=0.13.0b1; extra == "dev"
63
63
  Requires-Dist: py-geth>=5.1.0; extra == "dev"
64
64
  Provides-Extra: docs
65
65
  Requires-Dist: sphinx>=6.0.0; extra == "docs"
@@ -76,21 +76,8 @@ Requires-Dist: hypothesis>=3.31.2; extra == "test"
76
76
  Requires-Dist: tox>=4.0.0; extra == "test"
77
77
  Requires-Dist: mypy==1.10.0; extra == "test"
78
78
  Requires-Dist: pre-commit>=3.4.0; extra == "test"
79
- Requires-Dist: eth-tester[py-evm]<0.13.0b1,>=0.12.0b1; extra == "test"
79
+ Requires-Dist: eth-tester[py-evm]<0.14.0b1,>=0.13.0b1; extra == "test"
80
80
  Requires-Dist: py-geth>=5.1.0; extra == "test"
81
- Dynamic: author
82
- Dynamic: author-email
83
- Dynamic: classifier
84
- Dynamic: description
85
- Dynamic: description-content-type
86
- Dynamic: home-page
87
- Dynamic: keywords
88
- Dynamic: license
89
- Dynamic: license-file
90
- Dynamic: provides-extra
91
- Dynamic: requires-dist
92
- Dynamic: requires-python
93
- Dynamic: summary
94
81
 
95
82
  # web3.py
96
83
 
@@ -32,7 +32,7 @@ class AddressMismatch(ENSException):
32
32
  class InvalidName(idna.IDNAError, ENSException):
33
33
  """
34
34
  Raised if the provided name does not meet the normalization
35
- standards specified in `ENSIP-15
35
+ standards specified in `ENSIP-15`
36
36
  <https://docs.ens.domains/ens-improvement-proposals/ensip-15-normalization-standard>`_.
37
37
  """
38
38
 
@@ -127,7 +127,7 @@ name = "Removals"
127
127
  showcontent = true
128
128
 
129
129
  [tool.bumpversion]
130
- current_version = "7.10.0"
130
+ current_version = "7.11.1"
131
131
  parse = """
132
132
  (?P<major>\\d+)
133
133
  \\.(?P<minor>\\d+)
@@ -8,7 +8,7 @@ extras_require = {
8
8
  "tester": [
9
9
  # Note: ethereum-maintained libraries in this list should be added to the
10
10
  # `install_pre_releases.py` script.
11
- "eth-tester[py-evm]>=0.12.0b1,<0.13.0b1",
11
+ "eth-tester[py-evm]>=0.13.0b1,<0.14.0b1",
12
12
  "py-geth>=5.1.0",
13
13
  ],
14
14
  "dev": [
@@ -55,7 +55,7 @@ with open("./README.md") as readme:
55
55
  setup(
56
56
  name="web3",
57
57
  # *IMPORTANT*: Don't manually change the version here. See Contributing docs for the release process.
58
- version="7.10.0",
58
+ version="7.11.1",
59
59
  description="""web3: A Python library for interacting with Ethereum""",
60
60
  long_description=long_description,
61
61
  long_description_content_type="text/markdown",
@@ -67,7 +67,7 @@ setup(
67
67
  # Note: ethereum-maintained libraries in this list should be added to the
68
68
  # `install_pre_releases.py` script.
69
69
  "eth-abi>=5.0.1",
70
- "eth-account>=0.13.1",
70
+ "eth-account>=0.13.6",
71
71
  "eth-hash[pycryptodome]>=0.5.1",
72
72
  "eth-typing>=5.0.0",
73
73
  "eth-utils>=5.0.0",
@@ -19,21 +19,12 @@ from web3._utils.module_testing.utils import (
19
19
  RequestMocker,
20
20
  )
21
21
 
22
- from .utils import (
23
- get_open_port,
24
- )
25
-
26
22
 
27
23
  @pytest.fixture(scope="module", params=[lambda x: to_bytes(hexstr=x), identity])
28
24
  def address_conversion_func(request):
29
25
  return request.param
30
26
 
31
27
 
32
- @pytest.fixture()
33
- def open_port():
34
- return get_open_port()
35
-
36
-
37
28
  # --- session-scoped constants --- #
38
29
 
39
30
 
@@ -46,6 +46,7 @@ def test_get_block_formatters_with_null_values(w3, request_mocker):
46
46
  "blobGasUsed": None,
47
47
  "excessBlobGas": None,
48
48
  "parentBeaconBlockRoot": None,
49
+ "requestsHash": None,
49
50
  }
50
51
  with request_mocker(w3, mock_results={"eth_getBlockByNumber": null_values_block}):
51
52
  received_block = w3.eth.get_block("pending")
@@ -109,6 +110,9 @@ def test_get_block_formatters_with_pre_formatted_values(w3, request_mocker):
109
110
  "parentBeaconBlockRoot": (
110
111
  "0x6470e77f1b8a55a49a57b3f74c2a10a76185636d65122053752ea5e4bb4dac59"
111
112
  ),
113
+ "requestsHash": (
114
+ "0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
115
+ ),
112
116
  }
113
117
 
114
118
  with request_mocker(
@@ -170,4 +174,5 @@ def test_get_block_formatters_with_pre_formatted_values(w3, request_mocker):
170
174
  "parentBeaconBlockRoot": HexBytes(
171
175
  unformatted_values_block["parentBeaconBlockRoot"]
172
176
  ),
177
+ "requestsHash": HexBytes(unformatted_values_block["requestsHash"]),
173
178
  }
@@ -2,6 +2,9 @@ import pytest
2
2
  import collections
3
3
  import itertools
4
4
 
5
+ from eth_account import (
6
+ Account,
7
+ )
5
8
  from eth_utils import (
6
9
  to_checksum_address,
7
10
  to_int,
@@ -9,7 +12,15 @@ from eth_utils import (
9
12
  from hexbytes import (
10
13
  HexBytes,
11
14
  )
15
+ import pytest_asyncio
12
16
 
17
+ from tests.core.contracts.utils import (
18
+ async_deploy,
19
+ deploy,
20
+ )
21
+ from web3._utils.contract_sources.contract_data.math_contract import (
22
+ MATH_CONTRACT_DATA,
23
+ )
13
24
  from web3._utils.ens import (
14
25
  ens_addresses,
15
26
  )
@@ -29,6 +40,12 @@ from web3.exceptions import (
29
40
  RECEIPT_TIMEOUT = 0.2
30
41
 
31
42
 
43
+ @pytest.fixture
44
+ def math_contract(w3):
45
+ factory = w3.eth.contract(**MATH_CONTRACT_DATA)
46
+ return deploy(w3, factory)
47
+
48
+
32
49
  def _tx_indexing_response_iterator():
33
50
  while True:
34
51
  yield {"error": {"message": "transaction indexing in progress"}}
@@ -371,9 +388,86 @@ def test_eth_send_raw_blob_transaction(w3):
371
388
  )
372
389
 
373
390
 
391
+ def test_send_set_code_transaction(w3, math_contract):
392
+ pkey = w3.provider.ethereum_tester.backend.account_keys[0]
393
+ acct = Account.from_key(pkey)
394
+
395
+ nonce = w3.eth.get_transaction_count(acct.address)
396
+ chain_id = w3.eth.chain_id
397
+
398
+ auth = {
399
+ "chainId": chain_id,
400
+ "address": math_contract.address,
401
+ "nonce": nonce + 1,
402
+ }
403
+ signed_auth = acct.sign_authorization(auth)
404
+
405
+ # get current math counter and increase it only in the delegation by n
406
+ math_counter = math_contract.functions.counter().call()
407
+ built_tx = math_contract.functions.incrementCounter(
408
+ math_counter + 1337
409
+ ).build_transaction({})
410
+ txn = {
411
+ "chainId": chain_id,
412
+ "to": acct.address,
413
+ "value": 0,
414
+ "gas": 200_000,
415
+ "nonce": nonce,
416
+ "maxPriorityFeePerGas": 10**9,
417
+ "maxFeePerGas": 10**9,
418
+ "data": built_tx["data"],
419
+ "authorizationList": [signed_auth],
420
+ }
421
+
422
+ tx_hash = w3.eth.send_transaction(txn)
423
+ get_tx = w3.eth.get_transaction(tx_hash)
424
+ w3.eth.wait_for_transaction_receipt(tx_hash, timeout=10)
425
+
426
+ code = w3.eth.get_code(acct.address)
427
+
428
+ assert code.to_0x_hex().lower() == f"0xef0100{math_contract.address[2:].lower()}"
429
+ delegated = w3.eth.contract(address=acct.address, abi=math_contract.abi)
430
+ # assert the math counter is increased by 1337 only in delegated acct
431
+ assert math_contract.functions.counter().call() == math_counter
432
+ delegated_call = delegated.functions.counter().call()
433
+ assert delegated_call == math_counter + 1337
434
+
435
+ assert len(get_tx["authorizationList"]) == 1
436
+ get_auth = get_tx["authorizationList"][0]
437
+ assert get_auth["chainId"] == chain_id
438
+ assert get_auth["address"].lower() == math_contract.address.lower()
439
+ assert get_auth["nonce"] == nonce + 1
440
+ assert isinstance(get_auth["yParity"], int)
441
+ assert isinstance(get_auth["r"], HexBytes)
442
+ assert isinstance(get_auth["s"], HexBytes)
443
+
444
+ # reset code
445
+ reset_auth = {
446
+ "chainId": chain_id,
447
+ "address": "0x" + ("00" * 20),
448
+ "nonce": nonce + 3,
449
+ }
450
+ signed_reset_auth = acct.sign_authorization(reset_auth)
451
+ new_txn = dict(txn)
452
+ new_txn["authorizationList"] = [signed_reset_auth]
453
+ new_txn["nonce"] = nonce + 2
454
+
455
+ reset_tx_hash = w3.eth.send_transaction(new_txn)
456
+ w3.eth.wait_for_transaction_receipt(reset_tx_hash, timeout=10)
457
+
458
+ reset_code = w3.eth.get_code(acct.address)
459
+ assert reset_code == HexBytes("0x")
460
+
461
+
374
462
  # --- async --- #
375
463
 
376
464
 
465
+ @pytest_asyncio.fixture
466
+ async def async_math_contract(async_w3):
467
+ factory = async_w3.eth.contract(**MATH_CONTRACT_DATA)
468
+ return await async_deploy(async_w3, factory)
469
+
470
+
377
471
  @pytest.mark.asyncio
378
472
  async def test_async_wait_for_transaction_receipt_transaction_indexing_in_progress(
379
473
  async_w3, request_mocker
@@ -420,3 +514,77 @@ async def test_async_send_raw_blob_transaction(async_w3):
420
514
  assert transaction["blobVersionedHashes"][0] == HexBytes(
421
515
  "0x0127c38bcad458d932e828b580b9ad97310be01407dfa0ed88118735980a3e9a"
422
516
  )
517
+
518
+
519
+ @pytest.mark.asyncio
520
+ async def test_async_send_set_code_transaction(async_w3, async_math_contract):
521
+ pkey = async_w3.provider.ethereum_tester.backend.account_keys[0]
522
+ acct = Account.from_key(pkey)
523
+
524
+ nonce = await async_w3.eth.get_transaction_count(acct.address)
525
+ chain_id = await async_w3.eth.chain_id
526
+
527
+ auth = {
528
+ "chainId": chain_id,
529
+ "address": async_math_contract.address,
530
+ "nonce": nonce + 1,
531
+ }
532
+ signed_auth = acct.sign_authorization(auth)
533
+
534
+ # get current math counter and increase it only in the delegation by n
535
+ math_counter = await async_math_contract.functions.counter().call()
536
+ built_tx = await async_math_contract.functions.incrementCounter(
537
+ math_counter + 1337
538
+ ).build_transaction({})
539
+ txn = {
540
+ "chainId": chain_id,
541
+ "to": acct.address,
542
+ "value": 0,
543
+ "gas": 200_000,
544
+ "nonce": nonce,
545
+ "maxPriorityFeePerGas": 10**9,
546
+ "maxFeePerGas": 10**9,
547
+ "data": built_tx["data"],
548
+ "authorizationList": [signed_auth],
549
+ }
550
+
551
+ tx_hash = await async_w3.eth.send_transaction(txn)
552
+ get_tx = await async_w3.eth.get_transaction(tx_hash)
553
+ await async_w3.eth.wait_for_transaction_receipt(tx_hash, timeout=10)
554
+
555
+ code = await async_w3.eth.get_code(acct.address)
556
+
557
+ assert (
558
+ code.to_0x_hex().lower() == f"0xef0100{async_math_contract.address[2:].lower()}"
559
+ )
560
+ delegated = async_w3.eth.contract(address=acct.address, abi=async_math_contract.abi)
561
+ # assert the math counter is increased by 1337 only in delegated acct
562
+ assert await async_math_contract.functions.counter().call() == math_counter
563
+ delegated_call = await delegated.functions.counter().call()
564
+ assert delegated_call == math_counter + 1337
565
+
566
+ assert len(get_tx["authorizationList"]) == 1
567
+ get_auth = get_tx["authorizationList"][0]
568
+ assert get_auth["chainId"] == chain_id
569
+ assert get_auth["address"].lower() == async_math_contract.address.lower()
570
+ assert get_auth["nonce"] == nonce + 1
571
+ assert isinstance(get_auth["yParity"], int)
572
+ assert isinstance(get_auth["r"], HexBytes)
573
+ assert isinstance(get_auth["s"], HexBytes)
574
+
575
+ # reset code
576
+ reset_auth = {
577
+ "chainId": chain_id,
578
+ "address": "0x" + ("00" * 20),
579
+ "nonce": nonce + 3,
580
+ }
581
+ signed_reset_auth = acct.sign_authorization(reset_auth)
582
+ new_txn = dict(txn)
583
+ new_txn["authorizationList"] = [signed_reset_auth]
584
+ new_txn["nonce"] = nonce + 2
585
+
586
+ reset_tx_hash = await async_w3.eth.send_transaction(new_txn)
587
+ await async_w3.eth.wait_for_transaction_receipt(reset_tx_hash, timeout=10)
588
+
589
+ reset_code = await async_w3.eth.get_code(acct.address)
590
+ assert reset_code == HexBytes("0x")
@@ -9,6 +9,7 @@ from hypothesis import (
9
9
  import pytest_asyncio
10
10
 
11
11
  from tests.core.filtering.utils import (
12
+ MAX_UINT_256,
12
13
  _async_emitter_fixture_logic,
13
14
  _async_w3_fixture_logic,
14
15
  _emitter_fixture_logic,
@@ -39,14 +40,16 @@ def dynamic_values(draw):
39
40
 
40
41
  @st.composite
41
42
  def fixed_values(draw):
42
- non_matching_1 = draw(st.integers(min_value=0))
43
- non_matching_2 = draw(st.integers(min_value=0))
44
- non_matching_3 = draw(st.integers(min_value=0))
45
- non_matching_4 = draw(st.integers(min_value=0))
43
+ non_matching_1 = draw(st.integers(min_value=0, max_value=MAX_UINT_256))
44
+ non_matching_2 = draw(st.integers(min_value=0, max_value=MAX_UINT_256))
45
+ non_matching_3 = draw(st.integers(min_value=0, max_value=MAX_UINT_256))
46
+ non_matching_4 = draw(st.integers(min_value=0, max_value=MAX_UINT_256))
46
47
  exclusions = (non_matching_1, non_matching_2, non_matching_3, non_matching_4)
47
48
  matching_values = draw(
48
49
  st.lists(
49
- elements=st.integers(min_value=0).filter(lambda x: x not in exclusions),
50
+ elements=st.integers(min_value=0, max_value=MAX_UINT_256).filter(
51
+ lambda x: x not in exclusions
52
+ ),
50
53
  min_size=4,
51
54
  max_size=4,
52
55
  )
@@ -9,6 +9,7 @@ from hypothesis import (
9
9
  import pytest_asyncio
10
10
 
11
11
  from tests.core.filtering.utils import (
12
+ MAX_UINT_256,
12
13
  _async_emitter_fixture_logic,
13
14
  _async_w3_fixture_logic,
14
15
  _emitter_fixture_logic,
@@ -39,14 +40,16 @@ def dynamic_values(draw):
39
40
 
40
41
  @st.composite
41
42
  def fixed_values(draw):
42
- non_matching_1 = draw(st.integers(min_value=0))
43
- non_matching_2 = draw(st.integers(min_value=0))
44
- non_matching_3 = draw(st.integers(min_value=0))
45
- non_matching_4 = draw(st.integers(min_value=0))
43
+ non_matching_1 = draw(st.integers(min_value=0, max_value=MAX_UINT_256))
44
+ non_matching_2 = draw(st.integers(min_value=0, max_value=MAX_UINT_256))
45
+ non_matching_3 = draw(st.integers(min_value=0, max_value=MAX_UINT_256))
46
+ non_matching_4 = draw(st.integers(min_value=0, max_value=MAX_UINT_256))
46
47
  exclusions = (non_matching_1, non_matching_2, non_matching_3, non_matching_4)
47
48
  matching_values = draw(
48
49
  st.lists(
49
- elements=st.integers(min_value=0).filter(lambda x: x not in exclusions),
50
+ elements=st.integers(min_value=0, max_value=MAX_UINT_256).filter(
51
+ lambda x: x not in exclusions
52
+ ),
50
53
  min_size=4,
51
54
  max_size=4,
52
55
  )
@@ -10,6 +10,8 @@ from web3.providers.eth_tester import (
10
10
  EthereumTesterProvider,
11
11
  )
12
12
 
13
+ MAX_UINT_256 = 2**256 - 1
14
+
13
15
 
14
16
  def _w3_fixture_logic(request):
15
17
  use_filter_middleware = request.param
@@ -130,3 +130,21 @@ async def test_async_http_empty_batch_response(mock_async_post):
130
130
 
131
131
  # assert that even though there was an error, we have reset the batching state
132
132
  assert not async_w3.provider._is_batching
133
+
134
+
135
+ @patch(
136
+ "web3._utils.http_session_manager.HTTPSessionManager.async_make_post_request",
137
+ new_callable=AsyncMock,
138
+ )
139
+ @pytest.mark.asyncio
140
+ async def test_async_provider_is_batching_when_make_batch_request(mock_post):
141
+ def assert_is_batching_and_return_response(*_args, **_kwargs) -> bytes:
142
+ assert provider._is_batching
143
+ return b'{"jsonrpc":"2.0","id":1,"result":["0x1"]}'
144
+
145
+ mock_post.side_effect = assert_is_batching_and_return_response
146
+ provider = AsyncHTTPProvider()
147
+
148
+ assert not provider._is_batching
149
+ await provider.make_batch_request([("eth_blockNumber", [])])
150
+ assert not provider._is_batching
@@ -132,3 +132,21 @@ def test_http_empty_batch_response(mock_post):
132
132
 
133
133
  # assert that even though there was an error, we have reset the batching state
134
134
  assert not w3.provider._is_batching
135
+
136
+
137
+ @patch(
138
+ "web3._utils.http_session_manager.HTTPSessionManager.make_post_request",
139
+ new_callable=Mock,
140
+ )
141
+ def test_sync_provider_is_batching_when_make_batch_request(mock_post):
142
+ def assert_is_batching_and_return_response(*_args, **_kwargs) -> bytes:
143
+ assert provider._is_batching
144
+ return b'{"jsonrpc":"2.0","id":1,"result":["0x1"]}'
145
+
146
+ provider = HTTPProvider()
147
+ assert not provider._is_batching
148
+
149
+ mock_post.side_effect = assert_is_batching_and_return_response
150
+
151
+ provider.make_batch_request([("eth_blockNumber", [])])
152
+ assert not provider._is_batching
@@ -199,3 +199,18 @@ def test_ipc_provider_write_messages_end_with_new_line_delimiter(jsonrpc_ipc_pip
199
199
 
200
200
  request_data = b'{"jsonrpc": "2.0", "method": "method", "params": [], "id": 0}'
201
201
  provider._socket.sock.sendall.assert_called_with(request_data + b"\n")
202
+
203
+
204
+ def test_ipc_provider_is_batching_when_make_batch_request(jsonrpc_ipc_pipe_path):
205
+ def assert_is_batching_and_return_response(*_args, **_kwargs) -> bytes:
206
+ assert provider._is_batching
207
+ return [{"id": 0, "jsonrpc": "2.0", "result": {}}]
208
+
209
+ provider = IPCProvider(pathlib.Path(jsonrpc_ipc_pipe_path), timeout=3)
210
+ provider._make_request = Mock()
211
+ provider._make_request.side_effect = assert_is_batching_and_return_response
212
+
213
+ assert not provider._is_batching
214
+
215
+ provider.make_batch_request([("eth_blockNumber", [])])
216
+ assert not provider._is_batching
@@ -0,0 +1,29 @@
1
+ import pytest
2
+
3
+ from web3 import (
4
+ Web3,
5
+ )
6
+ from web3.exceptions import (
7
+ ProviderConnectionError,
8
+ Web3ValidationError,
9
+ )
10
+ from web3.providers.legacy_websocket import (
11
+ LegacyWebSocketProvider,
12
+ )
13
+
14
+
15
+ def test_no_args():
16
+ provider = LegacyWebSocketProvider()
17
+ w3 = Web3(provider)
18
+ assert w3.manager.provider == provider
19
+ assert not w3.manager.provider.is_async
20
+ assert not w3.is_connected()
21
+ with pytest.raises(ProviderConnectionError):
22
+ w3.is_connected(show_traceback=True)
23
+
24
+
25
+ def test_restricted_websocket_kwargs():
26
+ invalid_kwargs = {"uri": "ws://127.0.0.1:8546"}
27
+ re_exc_message = f".*found: {set(invalid_kwargs)!r}*"
28
+ with pytest.raises(Web3ValidationError, match=re_exc_message):
29
+ LegacyWebSocketProvider(websocket_kwargs=invalid_kwargs)
@@ -397,7 +397,7 @@ async def test_async_iterator_pattern_exception_handling_for_subscriptions():
397
397
 
398
398
 
399
399
  @pytest.mark.asyncio
400
- async def test_connection_closed_ok_breaks_message_iteration():
400
+ async def test_connection_closed_ok_breaks_process_subscriptions_iteration():
401
401
  with patch(
402
402
  "web3.providers.persistent.websocket.connect",
403
403
  new=lambda *_1, **_2: WebSocketMessageStreamMock(
@@ -409,6 +409,22 @@ async def test_connection_closed_ok_breaks_message_iteration():
409
409
  pytest.fail("Should not reach this point.")
410
410
 
411
411
 
412
+ @pytest.mark.asyncio
413
+ async def test_connection_closed_ok_breaks_handle_subscriptions_iteration():
414
+ with patch(
415
+ "web3.providers.persistent.websocket.connect",
416
+ new=lambda *_1, **_2: WebSocketMessageStreamMock(
417
+ raise_exception=ConnectionClosedOK(None, None)
418
+ ),
419
+ ):
420
+ w3 = await AsyncWeb3(WebSocketProvider("ws://mocked"))
421
+ # would fail with a ``TimeoutError`` if the iteration did not break properly
422
+ # on ``ConnectionClosedOK``
423
+ await asyncio.wait_for(
424
+ w3.subscription_manager.handle_subscriptions(run_forever=True), timeout=1
425
+ )
426
+
427
+
412
428
  @pytest.mark.asyncio
413
429
  async def test_listener_task_breaks_out_of_stream_when_cancelled():
414
430
  with patch(
@@ -510,3 +526,59 @@ async def test_websocket_provider_raises_errors_from_cache_not_tied_to_a_request
510
526
  with pytest.raises(Web3RPCError, match="Request shutdown"):
511
527
  await asyncio.sleep(0.1)
512
528
  await async_w3.eth.block_number
529
+
530
+
531
+ @pytest.mark.asyncio
532
+ async def test_req_info_cache_size_can_be_set_and_warns_when_full(caplog):
533
+ with patch(
534
+ "web3.providers.persistent.websocket.connect",
535
+ new=lambda *_1, **_2: _mocked_ws_conn(),
536
+ ):
537
+ async_w3 = await AsyncWeb3(
538
+ WebSocketProvider("ws://mocked", request_information_cache_size=1)
539
+ )
540
+ async_w3.provider._request_processor.cache_request_information(
541
+ RPCEndpoint("eth_getBlockByNumber"),
542
+ ["latest"],
543
+ tuple(),
544
+ tuple(),
545
+ )
546
+
547
+ assert len(async_w3.provider._request_processor._request_information_cache) == 1
548
+ assert (
549
+ "Request information cache is full. This may result in unexpected "
550
+ "behavior. Consider increasing the ``request_information_cache_size`` "
551
+ "on the provider."
552
+ ) in caplog.text
553
+
554
+
555
+ @pytest.mark.asyncio
556
+ async def test_raise_stray_errors_from_cache_handles_list_response_without_error():
557
+ provider = WebSocketProvider("ws://mocked")
558
+ _mock_ws(provider)
559
+
560
+ bad_response = [
561
+ {"id": None, "jsonrpc": "2.0", "error": {"code": 21, "message": "oops"}}
562
+ ]
563
+ provider._request_processor._request_response_cache._data["bad_key"] = bad_response
564
+
565
+ # assert no errors raised
566
+ provider._raise_stray_errors_from_cache()
567
+
568
+
569
+ @pytest.mark.asyncio
570
+ async def test_websocket_provider_is_batching_when_make_batch_request():
571
+ def assert_is_batching_and_return_response(*_args, **_kwargs) -> bytes:
572
+ assert provider._is_batching
573
+ return b'{"jsonrpc":"2.0","id":1,"result":["0x1"]}'
574
+
575
+ provider = WebSocketProvider("ws://mocked")
576
+ _mock_ws(provider)
577
+ provider._get_response_for_request_id = AsyncMock()
578
+ provider._get_response_for_request_id.side_effect = (
579
+ assert_is_batching_and_return_response
580
+ )
581
+
582
+ assert not provider._is_batching
583
+ await provider.make_batch_request([("eth_blockNumber", [])])
584
+ assert not provider._is_batching
@@ -829,7 +829,7 @@ def test_get_event_abi(event_name: str, input_args: Sequence[ABIComponent]) -> N
829
829
 
830
830
  with pytest.warns(
831
831
  DeprecationWarning,
832
- match="get_event_abi is deprecated in favor of get_abi_element",
832
+ match="get_event_abi is deprecated: use get_abi_element instead",
833
833
  ):
834
834
  assert (
835
835
  get_event_abi(contract_abi, event_name, input_names) == expected_event_abi