web3 7.8.0__tar.gz → 7.10.0__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 (363) hide show
  1. {web3-7.8.0/web3.egg-info → web3-7.10.0}/PKG-INFO +14 -9
  2. {web3-7.8.0 → web3-7.10.0}/README.md +7 -3
  3. {web3-7.8.0 → web3-7.10.0}/pyproject.toml +44 -0
  4. web3-7.10.0/scripts/release/test_package.py +50 -0
  5. {web3-7.8.0 → web3-7.10.0}/setup.py +5 -5
  6. {web3-7.8.0 → web3-7.10.0}/tests/conftest.py +2 -2
  7. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_extracting_event_data.py +2 -2
  8. {web3-7.8.0 → web3-7.10.0}/tests/core/providers/test_async_ipc_provider.py +2 -2
  9. {web3-7.8.0 → web3-7.10.0}/tests/core/providers/test_ipc_provider.py +4 -2
  10. {web3-7.8.0 → web3-7.10.0}/tests/core/providers/test_legacy_websocket_provider.py +5 -3
  11. {web3-7.8.0 → web3-7.10.0}/tests/core/providers/test_websocket_provider.py +57 -1
  12. {web3-7.8.0 → web3-7.10.0}/tests/core/subscriptions/test_subscription_manager.py +26 -1
  13. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_async_transaction.py +1 -1
  14. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_threads.py +1 -1
  15. {web3-7.8.0 → web3-7.10.0}/tests/ens/test_get_text.py +1 -1
  16. {web3-7.8.0 → web3-7.10.0}/tests/integration/generate_fixtures/common.py +5 -0
  17. web3-7.10.0/tests/integration/geth-1.15.5-fixture.zip +0 -0
  18. {web3-7.8.0 → web3-7.10.0}/tests/integration/go_ethereum/conftest.py +7 -3
  19. {web3-7.8.0 → web3-7.10.0}/tests/integration/go_ethereum/test_goethereum_http.py +20 -1
  20. {web3-7.8.0 → web3-7.10.0}/tests/integration/go_ethereum/test_goethereum_ipc.py +21 -2
  21. {web3-7.8.0 → web3-7.10.0}/tests/integration/go_ethereum/test_goethereum_legacy_ws.py +3 -2
  22. {web3-7.8.0 → web3-7.10.0}/tests/integration/go_ethereum/test_goethereum_ws/conftest.py +2 -1
  23. {web3-7.8.0 → web3-7.10.0}/tests/integration/test_ethereum_tester.py +5 -1
  24. {web3-7.8.0 → web3-7.10.0}/tests/utils.py +4 -2
  25. {web3-7.8.0 → web3-7.10.0}/web3/_utils/abi.py +3 -3
  26. {web3-7.8.0 → web3-7.10.0}/web3/_utils/batching.py +1 -1
  27. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/ambiguous_function_contract.py +3 -3
  28. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/arrays_contract.py +3 -3
  29. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/bytes_contracts.py +5 -5
  30. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/constructor_contracts.py +7 -7
  31. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/contract_caller_tester.py +3 -3
  32. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/emitter_contract.py +3 -3
  33. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/event_contracts.py +7 -7
  34. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/extended_resolver.py +3 -3
  35. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/fallback_function_contract.py +3 -3
  36. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/function_name_tester_contract.py +3 -3
  37. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/math_contract.py +3 -3
  38. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/offchain_lookup.py +3 -3
  39. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/offchain_resolver.py +3 -3
  40. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/panic_errors_contract.py +3 -3
  41. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/payable_tester.py +3 -3
  42. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/receive_function_contracts.py +5 -5
  43. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/reflector_contracts.py +3 -3
  44. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/revert_contract.py +3 -3
  45. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/simple_resolver.py +3 -3
  46. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/storage_contract.py +3 -3
  47. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/string_contract.py +3 -3
  48. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/tuple_contracts.py +5 -5
  49. {web3-7.8.0 → web3-7.10.0}/web3/_utils/error_formatters_utils.py +1 -1
  50. {web3-7.8.0 → web3-7.10.0}/web3/_utils/formatters.py +28 -0
  51. {web3-7.8.0 → web3-7.10.0}/web3/_utils/method_formatters.py +121 -20
  52. {web3-7.8.0 → web3-7.10.0}/web3/_utils/module_testing/eth_module.py +99 -2
  53. {web3-7.8.0 → web3-7.10.0}/web3/_utils/rpc_abi.py +1 -0
  54. web3-7.10.0/web3/_utils/validation.py +404 -0
  55. {web3-7.8.0 → web3-7.10.0}/web3/eth/async_eth.py +19 -0
  56. {web3-7.8.0 → web3-7.10.0}/web3/eth/eth.py +15 -0
  57. {web3-7.8.0 → web3-7.10.0}/web3/gas_strategies/rpc.py +1 -1
  58. {web3-7.8.0 → web3-7.10.0}/web3/gas_strategies/time_based.py +1 -1
  59. {web3-7.8.0 → web3-7.10.0}/web3/manager.py +13 -204
  60. {web3-7.8.0 → web3-7.10.0}/web3/providers/async_base.py +1 -1
  61. {web3-7.8.0 → web3-7.10.0}/web3/providers/legacy_websocket.py +1 -3
  62. {web3-7.8.0 → web3-7.10.0}/web3/providers/persistent/persistent.py +35 -5
  63. {web3-7.8.0 → web3-7.10.0}/web3/providers/persistent/subscription_manager.py +7 -2
  64. {web3-7.8.0 → web3-7.10.0}/web3/providers/persistent/websocket.py +12 -9
  65. {web3-7.8.0 → web3-7.10.0}/web3/types.py +26 -2
  66. {web3-7.8.0 → web3-7.10.0/web3.egg-info}/PKG-INFO +14 -9
  67. {web3-7.8.0 → web3-7.10.0}/web3.egg-info/SOURCES.txt +2 -1
  68. {web3-7.8.0 → web3-7.10.0}/web3.egg-info/requires.txt +4 -4
  69. web3-7.8.0/tests/integration/geth-1.14.12-fixture.zip +0 -0
  70. web3-7.8.0/web3/_utils/validation.py +0 -213
  71. {web3-7.8.0 → web3-7.10.0}/LICENSE +0 -0
  72. {web3-7.8.0 → web3-7.10.0}/MANIFEST.in +0 -0
  73. {web3-7.8.0 → web3-7.10.0}/ens/__init__.py +0 -0
  74. {web3-7.8.0 → web3-7.10.0}/ens/_normalization.py +0 -0
  75. {web3-7.8.0 → web3-7.10.0}/ens/abis.py +0 -0
  76. {web3-7.8.0 → web3-7.10.0}/ens/async_ens.py +0 -0
  77. {web3-7.8.0 → web3-7.10.0}/ens/auto.py +0 -0
  78. {web3-7.8.0 → web3-7.10.0}/ens/base_ens.py +0 -0
  79. {web3-7.8.0 → web3-7.10.0}/ens/constants.py +0 -0
  80. {web3-7.8.0 → web3-7.10.0}/ens/contract_data.py +0 -0
  81. {web3-7.8.0 → web3-7.10.0}/ens/ens.py +0 -0
  82. {web3-7.8.0 → web3-7.10.0}/ens/exceptions.py +0 -0
  83. {web3-7.8.0 → web3-7.10.0}/ens/specs/nf.json +0 -0
  84. {web3-7.8.0 → web3-7.10.0}/ens/specs/normalization_spec.json +0 -0
  85. {web3-7.8.0 → web3-7.10.0}/ens/utils.py +0 -0
  86. {web3-7.8.0 → web3-7.10.0}/setup.cfg +0 -0
  87. {web3-7.8.0 → web3-7.10.0}/tests/.DS_Store +0 -0
  88. {web3-7.8.0 → web3-7.10.0}/tests/__init__.py +0 -0
  89. {web3-7.8.0 → web3-7.10.0}/tests/beacon/test_async_beacon.py +0 -0
  90. {web3-7.8.0 → web3-7.10.0}/tests/beacon/test_beacon.py +0 -0
  91. {web3-7.8.0 → web3-7.10.0}/tests/core/admin-module/test_admin_addPeer.py +0 -0
  92. {web3-7.8.0 → web3-7.10.0}/tests/core/admin-module/test_admin_nodeInfo.py +0 -0
  93. {web3-7.8.0 → web3-7.10.0}/tests/core/admin-module/test_admin_peers.py +0 -0
  94. {web3-7.8.0 → web3-7.10.0}/tests/core/block-utils/test_select_method_for_block_identifier.py +0 -0
  95. {web3-7.8.0 → web3-7.10.0}/tests/core/caching-utils/test_generate_cache_key.py +0 -0
  96. {web3-7.8.0 → web3-7.10.0}/tests/core/caching-utils/test_request_caching.py +1 -1
  97. {web3-7.8.0 → web3-7.10.0}/tests/core/conftest.py +0 -0
  98. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/conftest.py +1 -1
  99. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_ambiguous_events.py +0 -0
  100. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_ambiguous_functions.py +0 -0
  101. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_attributes.py +0 -0
  102. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_build_transaction.py +0 -0
  103. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_call_interface.py +1 -1
  104. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_caller_interface.py +0 -0
  105. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_class_construction.py +1 -1
  106. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_constructor.py +0 -0
  107. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_constructor_encoding.py +0 -0
  108. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_deployment.py +0 -0
  109. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_estimate_gas.py +0 -0
  110. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_events.py +0 -0
  111. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_events_build_filter.py +0 -0
  112. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_example.py +0 -0
  113. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_init.py +0 -0
  114. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_method_abi_decoding.py +1 -1
  115. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_method_abi_encoding.py +1 -1
  116. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_method_to_argument_matching.py +1 -1
  117. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_panic_errors.py +0 -0
  118. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_transact_interface.py +0 -0
  119. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_contract_util_functions.py +0 -0
  120. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_extracting_event_data_old.py +0 -0
  121. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/test_offchain_lookup.py +0 -0
  122. {web3-7.8.0 → web3-7.10.0}/tests/core/contracts/utils.py +0 -0
  123. {web3-7.8.0 → web3-7.10.0}/tests/core/datastructures/test_datastructures.py +0 -0
  124. {web3-7.8.0 → web3-7.10.0}/tests/core/empty-object/test_empty_object_is_falsy.py +0 -0
  125. {web3-7.8.0 → web3-7.10.0}/tests/core/eth-module/conftest.py +0 -0
  126. {web3-7.8.0 → web3-7.10.0}/tests/core/eth-module/test_accounts.py +0 -0
  127. {web3-7.8.0 → web3-7.10.0}/tests/core/eth-module/test_block_api.py +0 -0
  128. {web3-7.8.0 → web3-7.10.0}/tests/core/eth-module/test_default_account_api.py +0 -0
  129. {web3-7.8.0 → web3-7.10.0}/tests/core/eth-module/test_eth_contract.py +0 -0
  130. {web3-7.8.0 → web3-7.10.0}/tests/core/eth-module/test_eth_fee_history.py +0 -0
  131. {web3-7.8.0 → web3-7.10.0}/tests/core/eth-module/test_eth_filter.py +0 -0
  132. {web3-7.8.0 → web3-7.10.0}/tests/core/eth-module/test_eth_properties.py +0 -0
  133. {web3-7.8.0 → web3-7.10.0}/tests/core/eth-module/test_gas_pricing.py +0 -0
  134. {web3-7.8.0 → web3-7.10.0}/tests/core/eth-module/test_poa.py +0 -0
  135. {web3-7.8.0 → web3-7.10.0}/tests/core/eth-module/test_transactions.py +1 -1
  136. {web3-7.8.0 → web3-7.10.0}/tests/core/eth-tester-api/test_withdrawals.py +0 -0
  137. {web3-7.8.0 → web3-7.10.0}/tests/core/exceptions/test_exceptions.py +0 -0
  138. {web3-7.8.0 → web3-7.10.0}/tests/core/filtering/conftest.py +1 -1
  139. {web3-7.8.0 → web3-7.10.0}/tests/core/filtering/test_basic_filter_tests.py +0 -0
  140. {web3-7.8.0 → web3-7.10.0}/tests/core/filtering/test_contract_create_filter_topic_merging.py +0 -0
  141. {web3-7.8.0 → web3-7.10.0}/tests/core/filtering/test_contract_data_filters.py +1 -1
  142. {web3-7.8.0 → web3-7.10.0}/tests/core/filtering/test_contract_get_logs.py +0 -0
  143. {web3-7.8.0 → web3-7.10.0}/tests/core/filtering/test_contract_on_event_filtering.py +1 -1
  144. {web3-7.8.0 → web3-7.10.0}/tests/core/filtering/test_contract_past_event_filtering.py +1 -1
  145. {web3-7.8.0 → web3-7.10.0}/tests/core/filtering/test_contract_topic_filters.py +1 -1
  146. {web3-7.8.0 → web3-7.10.0}/tests/core/filtering/test_existing_filter_instance.py +0 -0
  147. {web3-7.8.0 → web3-7.10.0}/tests/core/filtering/test_filter_against_latest_blocks.py +0 -0
  148. {web3-7.8.0 → web3-7.10.0}/tests/core/filtering/test_filter_against_pending_transactions.py +0 -0
  149. {web3-7.8.0 → web3-7.10.0}/tests/core/filtering/test_filter_against_transaction_logs.py +0 -0
  150. {web3-7.8.0 → web3-7.10.0}/tests/core/filtering/test_filters_against_many_blocks.py +0 -0
  151. {web3-7.8.0 → web3-7.10.0}/tests/core/filtering/test_utils_functions.py +1 -1
  152. {web3-7.8.0 → web3-7.10.0}/tests/core/filtering/utils.py +0 -0
  153. {web3-7.8.0 → web3-7.10.0}/tests/core/gas-strategies/test_rpc_gas_pricing_strategies.py +0 -0
  154. {web3-7.8.0 → web3-7.10.0}/tests/core/gas-strategies/test_time_based_gas_price_strategy.py +0 -0
  155. {web3-7.8.0 → web3-7.10.0}/tests/core/manager/conftest.py +1 -1
  156. {web3-7.8.0 → web3-7.10.0}/tests/core/manager/test_default_middlewares.py +0 -0
  157. {web3-7.8.0 → web3-7.10.0}/tests/core/manager/test_middleware_can_be_stateful.py +0 -0
  158. {web3-7.8.0 → web3-7.10.0}/tests/core/manager/test_middleware_onion_api.py +0 -0
  159. {web3-7.8.0 → web3-7.10.0}/tests/core/manager/test_provider_property.py +0 -0
  160. {web3-7.8.0 → web3-7.10.0}/tests/core/manager/test_provider_request_wrapping.py +0 -0
  161. {web3-7.8.0 → web3-7.10.0}/tests/core/manager/test_response_formatters.py +0 -0
  162. {web3-7.8.0 → web3-7.10.0}/tests/core/method-class/test_method.py +1 -1
  163. {web3-7.8.0 → web3-7.10.0}/tests/core/method-class/test_result_formatters.py +0 -0
  164. {web3-7.8.0 → web3-7.10.0}/tests/core/middleware/test_attrdict_middleware.py +0 -0
  165. {web3-7.8.0 → web3-7.10.0}/tests/core/middleware/test_eth_tester_middleware.py +0 -0
  166. {web3-7.8.0 → web3-7.10.0}/tests/core/middleware/test_filter_middleware.py +0 -0
  167. {web3-7.8.0 → web3-7.10.0}/tests/core/middleware/test_formatting_middleware.py +0 -0
  168. {web3-7.8.0 → web3-7.10.0}/tests/core/middleware/test_gas_price_strategy.py +0 -0
  169. {web3-7.8.0 → web3-7.10.0}/tests/core/middleware/test_middleware.py +0 -0
  170. {web3-7.8.0 → web3-7.10.0}/tests/core/middleware/test_name_to_address_middleware.py +0 -0
  171. {web3-7.8.0 → web3-7.10.0}/tests/core/middleware/test_stalecheck.py +0 -0
  172. {web3-7.8.0 → web3-7.10.0}/tests/core/middleware/test_transaction_signing.py +0 -0
  173. {web3-7.8.0 → web3-7.10.0}/tests/core/module-class/test_module.py +0 -0
  174. {web3-7.8.0 → web3-7.10.0}/tests/core/providers/test_async_http_provider.py +0 -0
  175. {web3-7.8.0 → web3-7.10.0}/tests/core/providers/test_async_tester_provider.py +0 -0
  176. {web3-7.8.0 → web3-7.10.0}/tests/core/providers/test_auto_provider.py +1 -1
  177. {web3-7.8.0 → web3-7.10.0}/tests/core/providers/test_base_provider.py +0 -0
  178. {web3-7.8.0 → web3-7.10.0}/tests/core/providers/test_http_provider.py +0 -0
  179. {web3-7.8.0 → web3-7.10.0}/tests/core/providers/test_http_request_retry.py +0 -0
  180. {web3-7.8.0 → web3-7.10.0}/tests/core/providers/test_provider_init.py +0 -0
  181. {web3-7.8.0 → web3-7.10.0}/tests/core/providers/test_tester_provider.py +0 -0
  182. {web3-7.8.0 → web3-7.10.0}/tests/core/subscriptions/test_subscriptions.py +0 -0
  183. {web3-7.8.0 → web3-7.10.0}/tests/core/test_library_files.py +0 -0
  184. {web3-7.8.0 → web3-7.10.0}/tests/core/testing-module/test_testing_mine.py +0 -0
  185. {web3-7.8.0 → web3-7.10.0}/tests/core/testing-module/test_testing_snapshot_and_revert.py +0 -0
  186. {web3-7.8.0 → web3-7.10.0}/tests/core/testing-module/test_testing_timeTravel.py +0 -0
  187. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/__init__.py +0 -0
  188. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/conftest.py +0 -0
  189. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_abi.py +1 -1
  190. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_abi_filtering_by_argument_name.py +0 -0
  191. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_abi_is_encodable.py +0 -0
  192. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_abi_named_tree.py +0 -0
  193. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_address.py +0 -0
  194. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_attach_modules.py +1 -1
  195. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_attributedict.py +0 -0
  196. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_caching_utils.py +1 -1
  197. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_construct_event_data_set.py +0 -0
  198. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_construct_event_filter_params.py +0 -0
  199. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_construct_event_topics.py +0 -0
  200. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_datatypes.py +0 -0
  201. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_decorators.py +0 -0
  202. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_encoding.py +1 -1
  203. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_event_filter_builder.py +0 -0
  204. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_event_interface.py +0 -0
  205. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_fee_utils.py +0 -0
  206. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_formatters.py +0 -0
  207. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_http_session_manager.py +1 -1
  208. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_is_predefined_block_number.py +0 -0
  209. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_is_probably_enum.py +0 -0
  210. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_is_recognized_type.py +0 -0
  211. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_math.py +0 -0
  212. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_method_formatters.py +0 -0
  213. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_prepare_transaction_replacement.py +0 -0
  214. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_select_filter_method.py +0 -0
  215. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_valid_transaction_params.py +0 -0
  216. {web3-7.8.0 → web3-7.10.0}/tests/core/utilities/test_validation.py +0 -0
  217. {web3-7.8.0 → web3-7.10.0}/tests/core/web3-module/test_api.py +0 -0
  218. {web3-7.8.0 → web3-7.10.0}/tests/core/web3-module/test_attach_modules.py +1 -1
  219. {web3-7.8.0 → web3-7.10.0}/tests/core/web3-module/test_client_version.py +0 -0
  220. {web3-7.8.0 → web3-7.10.0}/tests/core/web3-module/test_conversions.py +0 -0
  221. {web3-7.8.0 → web3-7.10.0}/tests/core/web3-module/test_import_and_version.py +0 -0
  222. {web3-7.8.0 → web3-7.10.0}/tests/core/web3-module/test_keccak.py +0 -0
  223. {web3-7.8.0 → web3-7.10.0}/tests/core/web3-module/test_providers.py +0 -0
  224. {web3-7.8.0 → web3-7.10.0}/tests/core/web3-module/test_strict_bytes_type_checking.py +0 -0
  225. {web3-7.8.0 → web3-7.10.0}/tests/core/web3-module/test_web3_inheritance.py +0 -0
  226. {web3-7.8.0 → web3-7.10.0}/tests/ens/conftest.py +1 -1
  227. {web3-7.8.0 → web3-7.10.0}/tests/ens/normalization/normalization_tests.json +0 -0
  228. {web3-7.8.0 → web3-7.10.0}/tests/ens/normalization/test_normalize_name_ensip15.py +1 -1
  229. {web3-7.8.0 → web3-7.10.0}/tests/ens/test_ens.py +0 -0
  230. {web3-7.8.0 → web3-7.10.0}/tests/ens/test_get_registry.py +0 -0
  231. {web3-7.8.0 → web3-7.10.0}/tests/ens/test_nameprep.py +0 -0
  232. {web3-7.8.0 → web3-7.10.0}/tests/ens/test_offchain_resolution.py +0 -0
  233. {web3-7.8.0 → web3-7.10.0}/tests/ens/test_setup_address.py +0 -0
  234. {web3-7.8.0 → web3-7.10.0}/tests/ens/test_setup_name.py +0 -0
  235. {web3-7.8.0 → web3-7.10.0}/tests/ens/test_utils.py +0 -0
  236. {web3-7.8.0 → web3-7.10.0}/tests/ens/test_wildcard_resolution.py +0 -0
  237. {web3-7.8.0 → web3-7.10.0}/tests/integration/.DS_Store +0 -0
  238. {web3-7.8.0 → web3-7.10.0}/tests/integration/README.md +0 -0
  239. {web3-7.8.0 → web3-7.10.0}/tests/integration/common.py +0 -0
  240. {web3-7.8.0 → web3-7.10.0}/tests/integration/conftest.py +1 -1
  241. {web3-7.8.0 → web3-7.10.0}/tests/integration/generate_fixtures/go_ethereum.py +0 -0
  242. {web3-7.8.0 → web3-7.10.0}/tests/integration/go_ethereum/__init__.py +0 -0
  243. {web3-7.8.0 → web3-7.10.0}/tests/integration/go_ethereum/common.py +0 -0
  244. {web3-7.8.0 → web3-7.10.0}/tests/integration/go_ethereum/test_goethereum_ws/__init__.py +0 -0
  245. {web3-7.8.0 → web3-7.10.0}/tests/integration/go_ethereum/test_goethereum_ws/test_async_await_w3.py +0 -0
  246. {web3-7.8.0 → web3-7.10.0}/tests/integration/go_ethereum/test_goethereum_ws/test_async_ctx_manager_w3.py +0 -0
  247. {web3-7.8.0 → web3-7.10.0}/tests/integration/go_ethereum/test_goethereum_ws/test_async_iterator_w3.py +0 -0
  248. {web3-7.8.0 → web3-7.10.0}/tests/integration/go_ethereum/utils.py +0 -0
  249. {web3-7.8.0 → web3-7.10.0}/web3/__init__.py +0 -0
  250. {web3-7.8.0 → web3-7.10.0}/web3/_utils/__init__.py +0 -0
  251. {web3-7.8.0 → web3-7.10.0}/web3/_utils/abi_element_identifiers.py +0 -0
  252. {web3-7.8.0 → web3-7.10.0}/web3/_utils/async_caching.py +0 -0
  253. {web3-7.8.0 → web3-7.10.0}/web3/_utils/async_transactions.py +0 -0
  254. {web3-7.8.0 → web3-7.10.0}/web3/_utils/blocks.py +0 -0
  255. {web3-7.8.0 → web3-7.10.0}/web3/_utils/caching/__init__.py +0 -0
  256. {web3-7.8.0 → web3-7.10.0}/web3/_utils/caching/caching_utils.py +0 -0
  257. {web3-7.8.0 → web3-7.10.0}/web3/_utils/caching/request_caching_validation.py +0 -0
  258. {web3-7.8.0 → web3-7.10.0}/web3/_utils/compat/__init__.py +0 -0
  259. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/__init__.py +0 -0
  260. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/compile_contracts.py +0 -0
  261. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/__init__.py +0 -0
  262. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contract_sources/contract_data/_custom_contract_data.py +0 -0
  263. {web3-7.8.0 → web3-7.10.0}/web3/_utils/contracts.py +0 -0
  264. {web3-7.8.0 → web3-7.10.0}/web3/_utils/datatypes.py +0 -0
  265. {web3-7.8.0 → web3-7.10.0}/web3/_utils/decorators.py +0 -0
  266. {web3-7.8.0 → web3-7.10.0}/web3/_utils/empty.py +0 -0
  267. {web3-7.8.0 → web3-7.10.0}/web3/_utils/encoding.py +0 -0
  268. {web3-7.8.0 → web3-7.10.0}/web3/_utils/ens.py +0 -0
  269. {web3-7.8.0 → web3-7.10.0}/web3/_utils/events.py +0 -0
  270. {web3-7.8.0 → web3-7.10.0}/web3/_utils/fee_utils.py +0 -0
  271. {web3-7.8.0 → web3-7.10.0}/web3/_utils/filters.py +0 -0
  272. {web3-7.8.0 → web3-7.10.0}/web3/_utils/http.py +0 -0
  273. {web3-7.8.0 → web3-7.10.0}/web3/_utils/http_session_manager.py +0 -0
  274. {web3-7.8.0 → web3-7.10.0}/web3/_utils/hypothesis.py +0 -0
  275. {web3-7.8.0 → web3-7.10.0}/web3/_utils/math.py +0 -0
  276. {web3-7.8.0 → web3-7.10.0}/web3/_utils/module.py +0 -0
  277. {web3-7.8.0 → web3-7.10.0}/web3/_utils/module_testing/__init__.py +0 -0
  278. {web3-7.8.0 → web3-7.10.0}/web3/_utils/module_testing/go_ethereum_admin_module.py +0 -0
  279. {web3-7.8.0 → web3-7.10.0}/web3/_utils/module_testing/go_ethereum_debug_module.py +0 -0
  280. {web3-7.8.0 → web3-7.10.0}/web3/_utils/module_testing/go_ethereum_txpool_module.py +0 -0
  281. {web3-7.8.0 → web3-7.10.0}/web3/_utils/module_testing/module_testing_utils.py +0 -0
  282. {web3-7.8.0 → web3-7.10.0}/web3/_utils/module_testing/net_module.py +0 -0
  283. {web3-7.8.0 → web3-7.10.0}/web3/_utils/module_testing/persistent_connection_provider.py +1 -1
  284. {web3-7.8.0 → web3-7.10.0}/web3/_utils/module_testing/utils.py +0 -0
  285. {web3-7.8.0 → web3-7.10.0}/web3/_utils/module_testing/web3_module.py +0 -0
  286. {web3-7.8.0 → web3-7.10.0}/web3/_utils/normalizers.py +0 -0
  287. {web3-7.8.0 → web3-7.10.0}/web3/_utils/threads.py +0 -0
  288. {web3-7.8.0 → web3-7.10.0}/web3/_utils/transactions.py +0 -0
  289. {web3-7.8.0 → web3-7.10.0}/web3/_utils/type_conversion.py +0 -0
  290. {web3-7.8.0 → web3-7.10.0}/web3/_utils/utility_methods.py +0 -0
  291. {web3-7.8.0 → web3-7.10.0}/web3/_utils/windows.py +0 -0
  292. {web3-7.8.0 → web3-7.10.0}/web3/auto/__init__.py +0 -0
  293. {web3-7.8.0 → web3-7.10.0}/web3/auto/gethdev.py +0 -0
  294. {web3-7.8.0 → web3-7.10.0}/web3/beacon/__init__.py +0 -0
  295. {web3-7.8.0 → web3-7.10.0}/web3/beacon/api_endpoints.py +0 -0
  296. {web3-7.8.0 → web3-7.10.0}/web3/beacon/async_beacon.py +0 -0
  297. {web3-7.8.0 → web3-7.10.0}/web3/beacon/beacon.py +0 -0
  298. {web3-7.8.0 → web3-7.10.0}/web3/constants.py +0 -0
  299. {web3-7.8.0 → web3-7.10.0}/web3/contract/__init__.py +0 -0
  300. {web3-7.8.0 → web3-7.10.0}/web3/contract/async_contract.py +0 -0
  301. {web3-7.8.0 → web3-7.10.0}/web3/contract/base_contract.py +0 -0
  302. {web3-7.8.0 → web3-7.10.0}/web3/contract/contract.py +0 -0
  303. {web3-7.8.0 → web3-7.10.0}/web3/contract/utils.py +0 -0
  304. {web3-7.8.0 → web3-7.10.0}/web3/datastructures.py +0 -0
  305. {web3-7.8.0 → web3-7.10.0}/web3/eth/__init__.py +0 -0
  306. {web3-7.8.0 → web3-7.10.0}/web3/eth/base_eth.py +0 -0
  307. {web3-7.8.0 → web3-7.10.0}/web3/exceptions.py +0 -0
  308. {web3-7.8.0 → web3-7.10.0}/web3/gas_strategies/__init__.py +0 -0
  309. {web3-7.8.0 → web3-7.10.0}/web3/geth.py +0 -0
  310. {web3-7.8.0 → web3-7.10.0}/web3/logs.py +0 -0
  311. {web3-7.8.0 → web3-7.10.0}/web3/main.py +0 -0
  312. {web3-7.8.0 → web3-7.10.0}/web3/method.py +0 -0
  313. {web3-7.8.0 → web3-7.10.0}/web3/middleware/__init__.py +0 -0
  314. {web3-7.8.0 → web3-7.10.0}/web3/middleware/attrdict.py +0 -0
  315. {web3-7.8.0 → web3-7.10.0}/web3/middleware/base.py +0 -0
  316. {web3-7.8.0 → web3-7.10.0}/web3/middleware/buffered_gas_estimate.py +0 -0
  317. {web3-7.8.0 → web3-7.10.0}/web3/middleware/filter.py +0 -0
  318. {web3-7.8.0 → web3-7.10.0}/web3/middleware/formatting.py +0 -0
  319. {web3-7.8.0 → web3-7.10.0}/web3/middleware/gas_price_strategy.py +0 -0
  320. {web3-7.8.0 → web3-7.10.0}/web3/middleware/names.py +0 -0
  321. {web3-7.8.0 → web3-7.10.0}/web3/middleware/proof_of_authority.py +0 -0
  322. {web3-7.8.0 → web3-7.10.0}/web3/middleware/pythonic.py +0 -0
  323. {web3-7.8.0 → web3-7.10.0}/web3/middleware/signing.py +0 -0
  324. {web3-7.8.0 → web3-7.10.0}/web3/middleware/stalecheck.py +0 -0
  325. {web3-7.8.0 → web3-7.10.0}/web3/middleware/validation.py +0 -0
  326. {web3-7.8.0 → web3-7.10.0}/web3/module.py +0 -0
  327. {web3-7.8.0 → web3-7.10.0}/web3/net.py +0 -0
  328. {web3-7.8.0 → web3-7.10.0}/web3/providers/__init__.py +0 -0
  329. {web3-7.8.0 → web3-7.10.0}/web3/providers/auto.py +0 -0
  330. {web3-7.8.0 → web3-7.10.0}/web3/providers/base.py +0 -0
  331. {web3-7.8.0 → web3-7.10.0}/web3/providers/eth_tester/__init__.py +0 -0
  332. {web3-7.8.0 → web3-7.10.0}/web3/providers/eth_tester/defaults.py +0 -0
  333. {web3-7.8.0 → web3-7.10.0}/web3/providers/eth_tester/main.py +0 -0
  334. {web3-7.8.0 → web3-7.10.0}/web3/providers/eth_tester/middleware.py +0 -0
  335. {web3-7.8.0 → web3-7.10.0}/web3/providers/ipc.py +0 -0
  336. {web3-7.8.0 → web3-7.10.0}/web3/providers/persistent/__init__.py +0 -0
  337. {web3-7.8.0 → web3-7.10.0}/web3/providers/persistent/async_ipc.py +0 -0
  338. {web3-7.8.0 → web3-7.10.0}/web3/providers/persistent/persistent_connection.py +0 -0
  339. {web3-7.8.0 → web3-7.10.0}/web3/providers/persistent/request_processor.py +0 -0
  340. {web3-7.8.0 → web3-7.10.0}/web3/providers/persistent/subscription_container.py +0 -0
  341. {web3-7.8.0 → web3-7.10.0}/web3/providers/persistent/utils.py +0 -0
  342. {web3-7.8.0 → web3-7.10.0}/web3/providers/rpc/__init__.py +0 -0
  343. {web3-7.8.0 → web3-7.10.0}/web3/providers/rpc/async_rpc.py +0 -0
  344. {web3-7.8.0 → web3-7.10.0}/web3/providers/rpc/rpc.py +0 -0
  345. {web3-7.8.0 → web3-7.10.0}/web3/providers/rpc/utils.py +0 -0
  346. {web3-7.8.0 → web3-7.10.0}/web3/py.typed +0 -0
  347. {web3-7.8.0 → web3-7.10.0}/web3/scripts/__init__.py +0 -0
  348. {web3-7.8.0 → web3-7.10.0}/web3/scripts/install_pre_releases.py +0 -0
  349. {web3-7.8.0 → web3-7.10.0}/web3/scripts/parse_pygeth_version.py +0 -0
  350. {web3-7.8.0 → web3-7.10.0}/web3/scripts/release/__init__.py +0 -0
  351. {web3-7.8.0 → web3-7.10.0}/web3/scripts/release/test_package.py +0 -0
  352. {web3-7.8.0 → web3-7.10.0}/web3/testing.py +0 -0
  353. {web3-7.8.0 → web3-7.10.0}/web3/tracing.py +0 -0
  354. {web3-7.8.0 → web3-7.10.0}/web3/utils/__init__.py +0 -0
  355. {web3-7.8.0 → web3-7.10.0}/web3/utils/abi.py +0 -0
  356. {web3-7.8.0 → web3-7.10.0}/web3/utils/address.py +0 -0
  357. {web3-7.8.0 → web3-7.10.0}/web3/utils/async_exception_handling.py +0 -0
  358. {web3-7.8.0 → web3-7.10.0}/web3/utils/caching.py +0 -0
  359. {web3-7.8.0 → web3-7.10.0}/web3/utils/exception_handling.py +0 -0
  360. {web3-7.8.0 → web3-7.10.0}/web3/utils/subscriptions.py +0 -0
  361. {web3-7.8.0 → web3-7.10.0}/web3.egg-info/dependency_links.txt +0 -0
  362. {web3-7.8.0 → web3-7.10.0}/web3.egg-info/not-zip-safe +0 -0
  363. {web3-7.8.0 → web3-7.10.0}/web3.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: web3
3
- Version: 7.8.0
3
+ Version: 7.10.0
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
@@ -33,14 +33,14 @@ Requires-Dist: pywin32>=223; platform_system == "Windows"
33
33
  Requires-Dist: requests>=2.23.0
34
34
  Requires-Dist: typing-extensions>=4.0.1
35
35
  Requires-Dist: types-requests>=2.0.0
36
- Requires-Dist: websockets<14.0.0,>=10.0.0
36
+ Requires-Dist: websockets<16.0.0,>=10.0.0
37
37
  Requires-Dist: pyunormalize>=15.0.0
38
38
  Provides-Extra: tester
39
39
  Requires-Dist: eth-tester[py-evm]<0.13.0b1,>=0.12.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"
43
- Requires-Dist: bumpversion>=0.5.3; extra == "dev"
43
+ Requires-Dist: bump_my_version>=0.19.0; extra == "dev"
44
44
  Requires-Dist: ipython; extra == "dev"
45
45
  Requires-Dist: setuptools>=38.6.0; extra == "dev"
46
46
  Requires-Dist: tqdm>4.32; extra == "dev"
@@ -49,7 +49,7 @@ Requires-Dist: wheel; extra == "dev"
49
49
  Requires-Dist: sphinx>=6.0.0; extra == "dev"
50
50
  Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "dev"
51
51
  Requires-Dist: sphinx_rtd_theme>=1.0.0; extra == "dev"
52
- Requires-Dist: towncrier<22,>=21; extra == "dev"
52
+ Requires-Dist: towncrier<25,>=24; extra == "dev"
53
53
  Requires-Dist: pytest-asyncio<0.23,>=0.18.1; extra == "dev"
54
54
  Requires-Dist: pytest-mock>=1.10; extra == "dev"
55
55
  Requires-Dist: pytest-xdist>=2.4.0; extra == "dev"
@@ -65,7 +65,7 @@ Provides-Extra: docs
65
65
  Requires-Dist: sphinx>=6.0.0; extra == "docs"
66
66
  Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "docs"
67
67
  Requires-Dist: sphinx_rtd_theme>=1.0.0; extra == "docs"
68
- Requires-Dist: towncrier<22,>=21; extra == "docs"
68
+ Requires-Dist: towncrier<25,>=24; extra == "docs"
69
69
  Provides-Extra: test
70
70
  Requires-Dist: pytest-asyncio<0.23,>=0.18.1; extra == "test"
71
71
  Requires-Dist: pytest-mock>=1.10; extra == "test"
@@ -86,6 +86,7 @@ Dynamic: description-content-type
86
86
  Dynamic: home-page
87
87
  Dynamic: keywords
88
88
  Dynamic: license
89
+ Dynamic: license-file
89
90
  Dynamic: provides-extra
90
91
  Dynamic: requires-dist
91
92
  Dynamic: requires-python
@@ -105,14 +106,18 @@ web3.py allows you to interact with the Ethereum blockchain using Python, enabli
105
106
 
106
107
  - Python 3.8+ support
107
108
 
108
- ______________________________________________________________________
109
+ ## Installation
110
+
111
+ ```sh
112
+ python -m pip install web3
113
+ ```
109
114
 
110
- ## Quickstart
115
+ ## Documentation
111
116
 
112
117
  [Get started in 5 minutes](https://web3py.readthedocs.io/en/latest/quickstart.html) or
113
118
  [take a tour](https://web3py.readthedocs.io/en/latest/overview.html) of the library.
114
119
 
115
- ## Documentation
120
+ View the [change log](https://web3py.readthedocs.io/en/latest/release_notes.html).
116
121
 
117
122
  For additional guides, examples, and APIs, see the [documentation](https://web3py.readthedocs.io/en/latest/).
118
123
 
@@ -12,14 +12,18 @@ web3.py allows you to interact with the Ethereum blockchain using Python, enabli
12
12
 
13
13
  - Python 3.8+ support
14
14
 
15
- ______________________________________________________________________
15
+ ## Installation
16
+
17
+ ```sh
18
+ python -m pip install web3
19
+ ```
16
20
 
17
- ## Quickstart
21
+ ## Documentation
18
22
 
19
23
  [Get started in 5 minutes](https://web3py.readthedocs.io/en/latest/quickstart.html) or
20
24
  [take a tour](https://web3py.readthedocs.io/en/latest/overview.html) of the library.
21
25
 
22
- ## Documentation
26
+ View the [change log](https://web3py.readthedocs.io/en/latest/release_notes.html).
23
27
 
24
28
  For additional guides, examples, and APIs, see the [documentation](https://web3py.readthedocs.io/en/latest/).
25
29
 
@@ -7,6 +7,7 @@ combine_as_imports = true
7
7
  extra_standard_library = "pytest"
8
8
  force_grid_wrap = 1
9
9
  force_sort_within_sections = true
10
+ force_to_top = "pytest"
10
11
  honor_noqa = true
11
12
  known_first_party = "web3"
12
13
  known_third_party = "hypothesis"
@@ -124,3 +125,46 @@ showcontent = true
124
125
  directory = "removal"
125
126
  name = "Removals"
126
127
  showcontent = true
128
+
129
+ [tool.bumpversion]
130
+ current_version = "7.10.0"
131
+ parse = """
132
+ (?P<major>\\d+)
133
+ \\.(?P<minor>\\d+)
134
+ \\.(?P<patch>\\d+)
135
+ (-
136
+ (?P<stage>[^.]*)
137
+ \\.(?P<devnum>\\d+)
138
+ )?
139
+ """
140
+ serialize = [
141
+ "{major}.{minor}.{patch}-{stage}.{devnum}",
142
+ "{major}.{minor}.{patch}",
143
+ ]
144
+ search = "{current_version}"
145
+ replace = "{new_version}"
146
+ regex = false
147
+ ignore_missing_version = false
148
+ tag = true
149
+ sign_tags = true
150
+ tag_name = "v{new_version}"
151
+ tag_message = "Bump version: {current_version} → {new_version}"
152
+ allow_dirty = false
153
+ commit = true
154
+ message = "Bump version: {current_version} → {new_version}"
155
+
156
+ [tool.bumpversion.parts.stage]
157
+ optional_value = "stable"
158
+ first_value = "stable"
159
+ values = [
160
+ "alpha",
161
+ "beta",
162
+ "stable",
163
+ ]
164
+
165
+ [tool.bumpversion.part.devnum]
166
+
167
+ [[tool.bumpversion.files]]
168
+ filename = "setup.py"
169
+ search = "version=\"{current_version}\""
170
+ replace = "version=\"{new_version}\""
@@ -0,0 +1,50 @@
1
+ from pathlib import (
2
+ Path,
3
+ )
4
+ import subprocess
5
+ from tempfile import (
6
+ TemporaryDirectory,
7
+ )
8
+ import venv
9
+
10
+
11
+ def create_venv(parent_path: Path) -> Path:
12
+ venv_path = parent_path / "package-smoke-test"
13
+ venv.create(venv_path, with_pip=True)
14
+ subprocess.run(
15
+ [venv_path / "bin" / "pip", "install", "-U", "pip", "setuptools"], check=True
16
+ )
17
+ return venv_path
18
+
19
+
20
+ def find_wheel(project_path: Path) -> Path:
21
+ wheels = list(project_path.glob("dist/*.whl"))
22
+
23
+ if len(wheels) != 1:
24
+ raise Exception(
25
+ f"Expected one wheel. Instead found: {wheels} "
26
+ f"in project {project_path.absolute()}"
27
+ )
28
+
29
+ return wheels[0]
30
+
31
+
32
+ def install_wheel(venv_path: Path, wheel_path: Path) -> None:
33
+ subprocess.run(
34
+ [venv_path / "bin" / "pip", "install", f"{wheel_path}"],
35
+ check=True,
36
+ )
37
+
38
+
39
+ def test_install_local_wheel() -> None:
40
+ with TemporaryDirectory() as tmpdir:
41
+ venv_path = create_venv(Path(tmpdir))
42
+ wheel_path = find_wheel(Path("."))
43
+ install_wheel(venv_path, wheel_path)
44
+ print("Installed", wheel_path.absolute(), "to", venv_path)
45
+ print(f"Activate with `source {venv_path}/bin/activate`")
46
+ input("Press enter when the test has completed. The directory will be deleted.")
47
+
48
+
49
+ if __name__ == "__main__":
50
+ test_install_local_wheel()
@@ -13,7 +13,7 @@ extras_require = {
13
13
  ],
14
14
  "dev": [
15
15
  "build>=0.9.0",
16
- "bumpversion>=0.5.3",
16
+ "bump_my_version>=0.19.0",
17
17
  "ipython",
18
18
  "setuptools>=38.6.0",
19
19
  "tqdm>4.32",
@@ -24,7 +24,7 @@ extras_require = {
24
24
  "sphinx>=6.0.0",
25
25
  "sphinx-autobuild>=2021.3.14",
26
26
  "sphinx_rtd_theme>=1.0.0",
27
- "towncrier>=21,<22",
27
+ "towncrier>=24,<25",
28
28
  ],
29
29
  "test": [
30
30
  "pytest-asyncio>=0.18.1,<0.23",
@@ -54,8 +54,8 @@ with open("./README.md") as readme:
54
54
 
55
55
  setup(
56
56
  name="web3",
57
- # *IMPORTANT*: Don't manually change the version here. Use `make bump`, as described in readme
58
- version="7.8.0",
57
+ # *IMPORTANT*: Don't manually change the version here. See Contributing docs for the release process.
58
+ version="7.10.0",
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",
@@ -78,7 +78,7 @@ setup(
78
78
  "requests>=2.23.0",
79
79
  "typing-extensions>=4.0.1",
80
80
  "types-requests>=2.0.0",
81
- "websockets>=10.0.0,<14.0.0",
81
+ "websockets>=10.0.0,<16.0.0",
82
82
  "pyunormalize>=15.0.0",
83
83
  ],
84
84
  python_requires=">=3.8, <4",
@@ -42,7 +42,7 @@ def emitter_contract_data():
42
42
  return EMITTER_CONTRACT_DATA
43
43
 
44
44
 
45
- # This class defines events for the EmitterContract and are used to construct
45
+ # This class defines events for the EmitterContract and is used to construct
46
46
  # a fixture for contract event logs. Parameterized tests that utilize an `emitter`
47
47
  # contract fixture will use this data.
48
48
  class LogFunctions:
@@ -71,7 +71,7 @@ def emitter_contract_event_ids():
71
71
  return LogFunctions
72
72
 
73
73
 
74
- # This class defines topics for the EmitterContract and are used to construct
74
+ # This class defines topics for the EmitterContract and is used to construct
75
75
  # a fixture for contract event log topics. Parameterized tests that utilize
76
76
  # an `emitter` contract fixture will use this data.
77
77
  class LogTopics:
@@ -1,5 +1,5 @@
1
- import copy
2
1
  import pytest
2
+ import copy
3
3
  import re
4
4
 
5
5
  from eth_abi.exceptions import (
@@ -848,7 +848,7 @@ def test_event_rich_log(
848
848
  txn_hash = emitter_fn(event_id, *call_args).transact()
849
849
  else:
850
850
  # Some tests do not rely on the event_id. Rather than
851
- # changing this test too much,bypass this here and just
851
+ # changing this test too much, bypass this here and just
852
852
  # call the function with the provided args.
853
853
  txn_hash = emitter_fn(*call_args).transact()
854
854
  txn_receipt = wait_for_transaction(w3, txn_hash)
@@ -1,7 +1,7 @@
1
+ import pytest
1
2
  import json
2
3
  import os
3
4
  import pathlib
4
- import pytest
5
5
  import socket
6
6
  import tempfile
7
7
  from threading import (
@@ -360,7 +360,7 @@ async def test_async_ipc_provider_write_messages_end_with_new_line_delimiter(
360
360
  async with AsyncWeb3(AsyncIPCProvider(pathlib.Path(jsonrpc_ipc_pipe_path))) as w3:
361
361
  w3.provider._writer.write = Mock()
362
362
  w3.provider._reader.readline = AsyncMock(
363
- return_value=b'{"id": 0, "result": {}}\n'
363
+ return_value=b'{"id": 0, "jsonrpc": "2.0", "result": {}}\n'
364
364
  )
365
365
 
366
366
  await w3.provider.make_request("method", [])
@@ -1,6 +1,6 @@
1
+ import pytest
1
2
  import os
2
3
  import pathlib
3
- import pytest
4
4
  import socket
5
5
  import sys
6
6
  import tempfile
@@ -191,7 +191,9 @@ def test_web3_auto_gethdev(request_mocker):
191
191
  def test_ipc_provider_write_messages_end_with_new_line_delimiter(jsonrpc_ipc_pipe_path):
192
192
  provider = IPCProvider(pathlib.Path(jsonrpc_ipc_pipe_path), timeout=3)
193
193
  provider._socket.sock = Mock()
194
- provider._socket.sock.recv.return_value = b'{"id":1, "result": {}}\n'
194
+ provider._socket.sock.recv.return_value = (
195
+ b'{"id":0, "jsonrpc": "2.0", "result": {}}\n'
196
+ )
195
197
 
196
198
  provider.make_request("method", [])
197
199
 
@@ -1,13 +1,15 @@
1
+ import pytest
1
2
  import asyncio
2
3
  from asyncio.exceptions import (
3
4
  TimeoutError,
4
5
  )
5
- import pytest
6
6
  from threading import (
7
7
  Thread,
8
8
  )
9
9
 
10
- import websockets
10
+ from websockets.legacy.server import (
11
+ serve,
12
+ )
11
13
 
12
14
  from tests.utils import (
13
15
  wait_for_ws,
@@ -35,7 +37,7 @@ def start_websocket_server(open_port):
35
37
  await websocket.send(data)
36
38
 
37
39
  asyncio.set_event_loop(event_loop)
38
- server = websockets.serve(empty_server, "127.0.0.1", open_port)
40
+ server = serve(empty_server, "127.0.0.1", open_port)
39
41
  event_loop.run_until_complete(server)
40
42
  event_loop.run_forever()
41
43
 
@@ -1,6 +1,6 @@
1
+ import pytest
1
2
  import asyncio
2
3
  import json
3
- import pytest
4
4
  from unittest.mock import (
5
5
  AsyncMock,
6
6
  Mock,
@@ -55,6 +55,14 @@ class WSException(Exception):
55
55
  pass
56
56
 
57
57
 
58
+ GET_BLOCK_JSON_MESSAGE = {
59
+ "id": 0,
60
+ "jsonrpc": "2.0",
61
+ "method": "eth_getBlockByNumber",
62
+ "params": ["latest", False],
63
+ }
64
+
65
+
58
66
  def test_get_endpoint_uri_or_ipc_path_returns_endpoint_uri():
59
67
  provider = WebSocketProvider("ws://mocked")
60
68
  assert (
@@ -67,6 +75,14 @@ def test_get_endpoint_uri_or_ipc_path_returns_endpoint_uri():
67
75
  # -- async -- #
68
76
 
69
77
 
78
+ def test_websocket_provider_default_values():
79
+ ws_uri = "ws://127.0.0.1:1337"
80
+ with patch.dict("os.environ", {"WEB3_WS_PROVIDER_URI": ws_uri}):
81
+ provider = WebSocketProvider()
82
+ assert provider.endpoint_uri == ws_uri
83
+ assert provider.use_text_frames is False
84
+
85
+
70
86
  @pytest.mark.asyncio
71
87
  async def test_disconnect_cleanup():
72
88
  provider = WebSocketProvider("ws://mocked")
@@ -454,3 +470,43 @@ async def test_persistent_connection_provider_empty_batch_response():
454
470
  # assert that even though there was an error, we have reset the batching
455
471
  # state
456
472
  assert not async_w3.provider._is_batching
473
+
474
+
475
+ @pytest.mark.parametrize(
476
+ "use_text_frames, expected_send_arg",
477
+ (
478
+ (False, to_bytes(text=json.dumps(GET_BLOCK_JSON_MESSAGE))),
479
+ (True, json.dumps(GET_BLOCK_JSON_MESSAGE)),
480
+ ),
481
+ )
482
+ @pytest.mark.asyncio
483
+ async def test_websocket_provider_use_text_frames(use_text_frames, expected_send_arg):
484
+ provider = WebSocketProvider("ws://mocked", use_text_frames=use_text_frames)
485
+ assert provider.use_text_frames is use_text_frames
486
+
487
+ # mock provider and add a mocked response to the cache
488
+ _mock_ws(provider)
489
+ provider._ws.send = AsyncMock()
490
+ provider._request_processor._request_response_cache.cache(
491
+ generate_cache_key(0), "0x1337"
492
+ )
493
+
494
+ await provider.make_request(RPCEndpoint("eth_getBlockByNumber"), ["latest", False])
495
+ provider._ws.send.assert_called_once_with(expected_send_arg)
496
+
497
+
498
+ @pytest.mark.asyncio
499
+ async def test_websocket_provider_raises_errors_from_cache_not_tied_to_a_request():
500
+ with patch(
501
+ "web3.providers.persistent.websocket.connect",
502
+ new=lambda *_1, **_2: WebSocketMessageStreamMock(
503
+ messages=[
504
+ b'{"id": 0, "jsonrpc": "2.0", "result": "0x0"}\n',
505
+ b'{"id": null, "jsonrpc": "2.0", "error": {"code": 21, "message": "Request shutdown"}}\n', # noqa: E501
506
+ ]
507
+ ),
508
+ ):
509
+ async_w3 = await AsyncWeb3(WebSocketProvider("ws://mocked"))
510
+ with pytest.raises(Web3RPCError, match="Request shutdown"):
511
+ await asyncio.sleep(0.1)
512
+ await async_w3.eth.block_number
@@ -1,5 +1,5 @@
1
- import itertools
2
1
  import pytest
2
+ import itertools
3
3
  from unittest.mock import (
4
4
  AsyncMock,
5
5
  )
@@ -188,3 +188,28 @@ async def test_unsubscribe_with_one_or_multiple(subscription_manager):
188
188
  # unsubscribe non-existent subscription object
189
189
  with pytest.raises(Web3ValueError, match=f"Subscription not found|{sub5.id}"):
190
190
  await subscription_manager.unsubscribe(sub5)
191
+
192
+
193
+ @pytest.mark.asyncio
194
+ async def test_unsubscribe_with_subscriptions_reference_does_not_mutate_the_list(
195
+ subscription_manager,
196
+ ):
197
+ sub1 = NewHeadsSubscription()
198
+ sub2 = LogsSubscription()
199
+ sub3 = PendingTxSubscription()
200
+ sub4 = NewHeadsSubscription()
201
+
202
+ await subscription_manager.subscribe([sub1, sub2, sub3, sub4])
203
+ assert subscription_manager.subscriptions == [sub1, sub2, sub3, sub4]
204
+
205
+ # assert not mutating in place
206
+ await subscription_manager.unsubscribe(subscription_manager.subscriptions)
207
+ assert subscription_manager.subscriptions == []
208
+
209
+ # via unsubscribe all
210
+
211
+ await subscription_manager.subscribe([sub1, sub2, sub3, sub4])
212
+ assert subscription_manager.subscriptions == [sub1, sub2, sub3, sub4]
213
+
214
+ await subscription_manager.unsubscribe_all()
215
+ assert subscription_manager.subscriptions == []
@@ -75,7 +75,7 @@ async def test_async_fill_transaction_defaults_for_all_params(async_w3):
75
75
 
76
76
 
77
77
  @pytest.mark.asyncio()
78
- async def test_async_fill_transaction_defaults_nondynamic_tranaction_fee(async_w3):
78
+ async def test_async_fill_transaction_defaults_nondynamic_transaction_fee(async_w3):
79
79
  gasPrice_transaction = {
80
80
  "gasPrice": 10,
81
81
  }
@@ -100,7 +100,7 @@ def test_with_custom_exception_type():
100
100
 
101
101
 
102
102
  def test_with_custom_exception_instance():
103
- exc = Web3ValueError("an instance of an excepiton")
103
+ exc = Web3ValueError("an instance of an exception")
104
104
  timeout = Timeout(0.01, exc)
105
105
  timeout.start()
106
106
  time.sleep(0.02)
@@ -112,7 +112,7 @@ async def test_async_set_text_fails_with_bad_address(async_ens):
112
112
 
113
113
 
114
114
  @pytest.mark.asyncio
115
- async def async_test_set_text_pass_in_transaction_dict(async_ens):
115
+ async def test_async_set_text_pass_in_transaction_dict(async_ens):
116
116
  accounts = await async_ens.w3.eth.accounts
117
117
  address = accounts[2]
118
118
 
@@ -59,6 +59,11 @@ GENESIS_DATA = {
59
59
  # post-merge, timestamp is used for network transitions
60
60
  "shanghaiTime": 0,
61
61
  "cancunTime": 0,
62
+ "pragueTime": 0,
63
+ "blobSchedule": {
64
+ "cancun": {"target": 3, "max": 6, "baseFeeUpdateFraction": 3338477},
65
+ "prague": {"target": 6, "max": 9, "baseFeeUpdateFraction": 5007716},
66
+ },
62
67
  },
63
68
  "nonce": "0x0",
64
69
  "alloc": {
@@ -1,9 +1,9 @@
1
+ import pytest
1
2
  import json
2
3
  import os
3
4
  from pathlib import (
4
5
  Path,
5
6
  )
6
- import pytest
7
7
  import subprocess
8
8
  import zipfile
9
9
 
@@ -34,7 +34,7 @@ from .utils import (
34
34
  )
35
35
 
36
36
  KEYFILE_PW = "web3py-test"
37
- GETH_FIXTURE_ZIP = "geth-1.14.12-fixture.zip"
37
+ GETH_FIXTURE_ZIP = "geth-1.15.5-fixture.zip"
38
38
 
39
39
 
40
40
  @pytest.fixture(scope="module")
@@ -97,12 +97,16 @@ def base_geth_command_arguments(geth_binary, datadir):
97
97
  "2",
98
98
  "--password",
99
99
  os.path.join(datadir, "keystore", "pw.txt"),
100
+ # in order to raise on underpriced transactions, ``txpool.nolocals`` is now
101
+ # necessary: https://github.com/ethereum/go-ethereum/pull/31202
102
+ "--txpool.nolocals",
100
103
  )
101
104
 
102
105
 
103
106
  @pytest.fixture(scope="module")
104
107
  def geth_zipfile_version(get_geth_version):
105
- if get_geth_version.major == 1 and get_geth_version.minor in [13, 14]:
108
+ # TODO: Remove support for 1.13.x in next major version
109
+ if get_geth_version.major == 1 and get_geth_version.minor in [13, 14, 15]:
106
110
  return GETH_FIXTURE_ZIP
107
111
  raise AssertionError("Unsupported geth version")
108
112
 
@@ -76,6 +76,17 @@ def w3(geth_process, endpoint_uri):
76
76
  return Web3(Web3.HTTPProvider(endpoint_uri, request_kwargs={"timeout": 10}))
77
77
 
78
78
 
79
+ @pytest.fixture(scope="module")
80
+ def auto_w3(geth_process, endpoint_uri):
81
+ wait_for_http(endpoint_uri)
82
+
83
+ from web3.auto import (
84
+ w3,
85
+ )
86
+
87
+ return w3
88
+
89
+
79
90
  class TestGoEthereumWeb3ModuleTest(GoEthereumWeb3ModuleTest):
80
91
  pass
81
92
 
@@ -105,7 +116,15 @@ class TestGoEthereumDebugModuleTest(GoEthereumDebugModuleTest):
105
116
 
106
117
 
107
118
  class TestGoEthereumEthModuleTest(GoEthereumEthModuleTest):
108
- pass
119
+ def test_auto_provider_batching(
120
+ self,
121
+ auto_w3: "Web3",
122
+ monkeypatch,
123
+ endpoint_uri,
124
+ ) -> None:
125
+ monkeypatch.setenv("WEB3_PROVIDER_URI", endpoint_uri)
126
+ # test that batch_requests doesn't error out when using the auto provider
127
+ auto_w3.batch_requests()
109
128
 
110
129
 
111
130
  class TestGoEthereumNetModuleTest(GoEthereumNetModuleTest):
@@ -1,5 +1,5 @@
1
- import os
2
1
  import pytest
2
+ import os
3
3
  import tempfile
4
4
 
5
5
  import pytest_asyncio
@@ -53,6 +53,17 @@ def geth_ipc_path(datadir):
53
53
  os.remove(_geth_ipc_path)
54
54
 
55
55
 
56
+ @pytest.fixture(scope="module")
57
+ def auto_w3(geth_process, geth_ipc_path):
58
+ wait_for_socket(geth_ipc_path)
59
+
60
+ from web3.auto import (
61
+ w3,
62
+ )
63
+
64
+ return w3
65
+
66
+
56
67
  @pytest.fixture(scope="module")
57
68
  def w3(geth_process, geth_ipc_path):
58
69
  wait_for_socket(geth_ipc_path)
@@ -68,7 +79,15 @@ class TestGoEthereumDebugModuleTest(GoEthereumDebugModuleTest):
68
79
 
69
80
 
70
81
  class TestGoEthereumEthModuleTest(GoEthereumEthModuleTest):
71
- pass
82
+ def test_auto_provider_batching(
83
+ self,
84
+ auto_w3: "Web3",
85
+ monkeypatch,
86
+ geth_ipc_path,
87
+ ) -> None:
88
+ monkeypatch.setenv("WEB3_PROVIDER_URI", f"file:///{geth_ipc_path}")
89
+ # test that batch_requests doesn't error out when using the auto provider
90
+ auto_w3.batch_requests()
72
91
 
73
92
 
74
93
  class TestGoEthereumNetModuleTest(GoEthereumNetModuleTest):
@@ -1,5 +1,5 @@
1
- import asyncio
2
1
  import pytest
2
+ import asyncio
3
3
 
4
4
  from tests.integration.common import (
5
5
  COINBASE,
@@ -48,7 +48,8 @@ def _geth_command_arguments(ws_port, base_geth_command_arguments, geth_version):
48
48
  "--ipcdisable",
49
49
  "--allow-insecure-unlock",
50
50
  )
51
- if geth_version.minor not in [13, 14]:
51
+ if geth_version.minor not in [13, 14, 15]:
52
+ # TODO: remove support for 1.13.x in next major version
52
53
  raise AssertionError("Unsupported Geth version")
53
54
  else:
54
55
  raise AssertionError("Unsupported Geth version")
@@ -33,7 +33,8 @@ def _geth_command_arguments(ws_port, base_geth_command_arguments, geth_version):
33
33
  "*",
34
34
  "--ipcdisable",
35
35
  )
36
- if geth_version.minor not in [13, 14]:
36
+ if geth_version.minor not in [13, 14, 15]:
37
+ # TODO: remove support for 1.13.x in the next major release
37
38
  raise AssertionError("Unsupported Geth version")
38
39
  else:
39
40
  raise AssertionError("Unsupported Geth version")
@@ -1,5 +1,5 @@
1
- import functools
2
1
  import pytest
2
+ import functools
3
3
  from typing import (
4
4
  cast,
5
5
  )
@@ -338,6 +338,10 @@ class TestEthereumTesterEthModule(EthModuleTest):
338
338
  EthModuleTest.test_eth_getBlockReceipts_finalized,
339
339
  MethodUnavailable,
340
340
  )
341
+ test_eth_simulate_v1 = not_implemented(
342
+ EthModuleTest.test_eth_simulate_v1,
343
+ MethodUnavailable,
344
+ )
341
345
 
342
346
  def test_eth_getBlockByHash_pending(self, w3: "Web3") -> None:
343
347
  block = w3.eth.get_block("pending")