web3 7.0.0b9__tar.gz → 7.2.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 (349) hide show
  1. {web3-7.0.0b9/web3.egg-info → web3-7.2.0}/PKG-INFO +6 -8
  2. {web3-7.0.0b9 → web3-7.2.0}/setup.py +9 -8
  3. web3-7.2.0/tests/.DS_Store +0 -0
  4. {web3-7.0.0b9 → web3-7.2.0}/tests/beacon/test_async_beacon.py +13 -0
  5. {web3-7.0.0b9 → web3-7.2.0}/tests/beacon/test_beacon.py +12 -0
  6. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_contract_build_transaction.py +29 -0
  7. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_contract_call_interface.py +10 -0
  8. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_contract_estimate_gas.py +31 -0
  9. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_contract_transact_interface.py +30 -0
  10. web3-7.2.0/tests/core/middleware/test_middleware.py +81 -0
  11. {web3-7.0.0b9 → web3-7.2.0}/tests/core/providers/test_async_http_provider.py +2 -2
  12. {web3-7.0.0b9 → web3-7.2.0}/tests/core/providers/test_http_provider.py +2 -2
  13. {web3-7.0.0b9 → web3-7.2.0}/tests/core/test_library_files.py +1 -3
  14. web3-7.2.0/tests/integration/.DS_Store +0 -0
  15. {web3-7.0.0b9 → web3-7.2.0}/tests/integration/generate_fixtures/go_ethereum.py +29 -3
  16. web3-7.2.0/web3/_utils/http.py +12 -0
  17. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/module_testing/eth_module.py +40 -0
  18. {web3-7.0.0b9 → web3-7.2.0}/web3/beacon/api_endpoints.py +3 -0
  19. {web3-7.0.0b9 → web3-7.2.0}/web3/beacon/async_beacon.py +18 -2
  20. {web3-7.0.0b9 → web3-7.2.0}/web3/beacon/beacon.py +18 -2
  21. {web3-7.0.0b9 → web3-7.2.0}/web3/contract/async_contract.py +8 -8
  22. {web3-7.0.0b9 → web3-7.2.0}/web3/contract/contract.py +10 -8
  23. {web3-7.0.0b9 → web3-7.2.0}/web3/datastructures.py +21 -11
  24. {web3-7.0.0b9 → web3-7.2.0}/web3/middleware/base.py +8 -0
  25. {web3-7.0.0b9 → web3-7.2.0}/web3/middleware/signing.py +2 -2
  26. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/rpc/async_rpc.py +10 -2
  27. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/rpc/rpc.py +11 -2
  28. web3-7.2.0/web3/scripts/install_pre_releases.py +33 -0
  29. web3-7.2.0/web3/scripts/parse_pygeth_version.py +16 -0
  30. {web3-7.0.0b9 → web3-7.2.0/web3.egg-info}/PKG-INFO +6 -8
  31. {web3-7.0.0b9 → web3-7.2.0}/web3.egg-info/SOURCES.txt +5 -0
  32. {web3-7.0.0b9 → web3-7.2.0}/web3.egg-info/requires.txt +5 -7
  33. web3-7.0.0b9/web3/_utils/http.py +0 -9
  34. {web3-7.0.0b9 → web3-7.2.0}/LICENSE +0 -0
  35. {web3-7.0.0b9 → web3-7.2.0}/MANIFEST.in +0 -0
  36. {web3-7.0.0b9 → web3-7.2.0}/README.md +0 -0
  37. {web3-7.0.0b9 → web3-7.2.0}/ens/__init__.py +0 -0
  38. {web3-7.0.0b9 → web3-7.2.0}/ens/_normalization.py +0 -0
  39. {web3-7.0.0b9 → web3-7.2.0}/ens/abis.py +0 -0
  40. {web3-7.0.0b9 → web3-7.2.0}/ens/async_ens.py +0 -0
  41. {web3-7.0.0b9 → web3-7.2.0}/ens/auto.py +0 -0
  42. {web3-7.0.0b9 → web3-7.2.0}/ens/base_ens.py +0 -0
  43. {web3-7.0.0b9 → web3-7.2.0}/ens/constants.py +0 -0
  44. {web3-7.0.0b9 → web3-7.2.0}/ens/contract_data.py +0 -0
  45. {web3-7.0.0b9 → web3-7.2.0}/ens/ens.py +0 -0
  46. {web3-7.0.0b9 → web3-7.2.0}/ens/exceptions.py +0 -0
  47. {web3-7.0.0b9 → web3-7.2.0}/ens/specs/nf.json +0 -0
  48. {web3-7.0.0b9 → web3-7.2.0}/ens/specs/normalization_spec.json +0 -0
  49. {web3-7.0.0b9 → web3-7.2.0}/ens/utils.py +0 -0
  50. {web3-7.0.0b9 → web3-7.2.0}/pyproject.toml +0 -0
  51. {web3-7.0.0b9 → web3-7.2.0}/setup.cfg +0 -0
  52. {web3-7.0.0b9 → web3-7.2.0}/tests/__init__.py +0 -0
  53. {web3-7.0.0b9 → web3-7.2.0}/tests/conftest.py +0 -0
  54. {web3-7.0.0b9 → web3-7.2.0}/tests/core/admin-module/test_admin_addPeer.py +0 -0
  55. {web3-7.0.0b9 → web3-7.2.0}/tests/core/admin-module/test_admin_nodeInfo.py +0 -0
  56. {web3-7.0.0b9 → web3-7.2.0}/tests/core/admin-module/test_admin_peers.py +0 -0
  57. {web3-7.0.0b9 → web3-7.2.0}/tests/core/block-utils/test_select_method_for_block_identifier.py +0 -0
  58. {web3-7.0.0b9 → web3-7.2.0}/tests/core/caching-utils/test_generate_cache_key.py +0 -0
  59. {web3-7.0.0b9 → web3-7.2.0}/tests/core/caching-utils/test_request_caching.py +0 -0
  60. {web3-7.0.0b9 → web3-7.2.0}/tests/core/conftest.py +0 -0
  61. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/conftest.py +0 -0
  62. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_contract_ambiguous_functions.py +0 -0
  63. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_contract_attributes.py +0 -0
  64. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_contract_caller_interface.py +0 -0
  65. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_contract_class_construction.py +0 -0
  66. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_contract_constructor.py +0 -0
  67. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_contract_constructor_encoding.py +0 -0
  68. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_contract_deployment.py +0 -0
  69. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_contract_events_build_filter.py +0 -0
  70. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_contract_example.py +0 -0
  71. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_contract_init.py +0 -0
  72. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_contract_method_abi_decoding.py +0 -0
  73. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_contract_method_abi_encoding.py +0 -0
  74. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_contract_method_to_argument_matching.py +0 -0
  75. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_contract_panic_errors.py +0 -0
  76. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_contract_util_functions.py +0 -0
  77. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_extracting_event_data.py +0 -0
  78. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_extracting_event_data_old.py +0 -0
  79. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/test_offchain_lookup.py +0 -0
  80. {web3-7.0.0b9 → web3-7.2.0}/tests/core/contracts/utils.py +0 -0
  81. {web3-7.0.0b9 → web3-7.2.0}/tests/core/datastructures/test_datastructures.py +0 -0
  82. {web3-7.0.0b9 → web3-7.2.0}/tests/core/empty-object/test_empty_object_is_falsy.py +0 -0
  83. {web3-7.0.0b9 → web3-7.2.0}/tests/core/eth-module/conftest.py +0 -0
  84. {web3-7.0.0b9 → web3-7.2.0}/tests/core/eth-module/test_accounts.py +0 -0
  85. {web3-7.0.0b9 → web3-7.2.0}/tests/core/eth-module/test_block_api.py +0 -0
  86. {web3-7.0.0b9 → web3-7.2.0}/tests/core/eth-module/test_default_account_api.py +0 -0
  87. {web3-7.0.0b9 → web3-7.2.0}/tests/core/eth-module/test_eth_contract.py +0 -0
  88. {web3-7.0.0b9 → web3-7.2.0}/tests/core/eth-module/test_eth_fee_history.py +0 -0
  89. {web3-7.0.0b9 → web3-7.2.0}/tests/core/eth-module/test_eth_filter.py +0 -0
  90. {web3-7.0.0b9 → web3-7.2.0}/tests/core/eth-module/test_eth_properties.py +0 -0
  91. {web3-7.0.0b9 → web3-7.2.0}/tests/core/eth-module/test_gas_pricing.py +0 -0
  92. {web3-7.0.0b9 → web3-7.2.0}/tests/core/eth-module/test_poa.py +0 -0
  93. {web3-7.0.0b9 → web3-7.2.0}/tests/core/eth-module/test_transactions.py +0 -0
  94. {web3-7.0.0b9 → web3-7.2.0}/tests/core/eth-tester-api/test_withdrawals.py +0 -0
  95. {web3-7.0.0b9 → web3-7.2.0}/tests/core/exceptions/test_exceptions.py +0 -0
  96. {web3-7.0.0b9 → web3-7.2.0}/tests/core/filtering/conftest.py +0 -0
  97. {web3-7.0.0b9 → web3-7.2.0}/tests/core/filtering/test_basic_filter_tests.py +0 -0
  98. {web3-7.0.0b9 → web3-7.2.0}/tests/core/filtering/test_contract_create_filter_topic_merging.py +0 -0
  99. {web3-7.0.0b9 → web3-7.2.0}/tests/core/filtering/test_contract_data_filters.py +0 -0
  100. {web3-7.0.0b9 → web3-7.2.0}/tests/core/filtering/test_contract_get_logs.py +0 -0
  101. {web3-7.0.0b9 → web3-7.2.0}/tests/core/filtering/test_contract_on_event_filtering.py +0 -0
  102. {web3-7.0.0b9 → web3-7.2.0}/tests/core/filtering/test_contract_past_event_filtering.py +0 -0
  103. {web3-7.0.0b9 → web3-7.2.0}/tests/core/filtering/test_contract_topic_filters.py +0 -0
  104. {web3-7.0.0b9 → web3-7.2.0}/tests/core/filtering/test_existing_filter_instance.py +0 -0
  105. {web3-7.0.0b9 → web3-7.2.0}/tests/core/filtering/test_filter_against_latest_blocks.py +0 -0
  106. {web3-7.0.0b9 → web3-7.2.0}/tests/core/filtering/test_filter_against_pending_transactions.py +0 -0
  107. {web3-7.0.0b9 → web3-7.2.0}/tests/core/filtering/test_filter_against_transaction_logs.py +0 -0
  108. {web3-7.0.0b9 → web3-7.2.0}/tests/core/filtering/test_filters_against_many_blocks.py +0 -0
  109. {web3-7.0.0b9 → web3-7.2.0}/tests/core/filtering/test_utils_functions.py +0 -0
  110. {web3-7.0.0b9 → web3-7.2.0}/tests/core/filtering/utils.py +0 -0
  111. {web3-7.0.0b9 → web3-7.2.0}/tests/core/gas-strategies/test_rpc_gas_pricing_strategies.py +0 -0
  112. {web3-7.0.0b9 → web3-7.2.0}/tests/core/gas-strategies/test_time_based_gas_price_strategy.py +0 -0
  113. {web3-7.0.0b9 → web3-7.2.0}/tests/core/manager/conftest.py +0 -0
  114. {web3-7.0.0b9 → web3-7.2.0}/tests/core/manager/test_default_middlewares.py +0 -0
  115. {web3-7.0.0b9 → web3-7.2.0}/tests/core/manager/test_middleware_can_be_stateful.py +0 -0
  116. {web3-7.0.0b9 → web3-7.2.0}/tests/core/manager/test_middleware_onion_api.py +0 -0
  117. {web3-7.0.0b9 → web3-7.2.0}/tests/core/manager/test_provider_property.py +0 -0
  118. {web3-7.0.0b9 → web3-7.2.0}/tests/core/manager/test_provider_request_wrapping.py +0 -0
  119. {web3-7.0.0b9 → web3-7.2.0}/tests/core/manager/test_response_formatters.py +0 -0
  120. {web3-7.0.0b9 → web3-7.2.0}/tests/core/method-class/test_method.py +0 -0
  121. {web3-7.0.0b9 → web3-7.2.0}/tests/core/method-class/test_result_formatters.py +0 -0
  122. {web3-7.0.0b9 → web3-7.2.0}/tests/core/middleware/test_attrdict_middleware.py +0 -0
  123. {web3-7.0.0b9 → web3-7.2.0}/tests/core/middleware/test_eth_tester_middleware.py +0 -0
  124. {web3-7.0.0b9 → web3-7.2.0}/tests/core/middleware/test_filter_middleware.py +0 -0
  125. {web3-7.0.0b9 → web3-7.2.0}/tests/core/middleware/test_formatting_middleware.py +0 -0
  126. {web3-7.0.0b9 → web3-7.2.0}/tests/core/middleware/test_gas_price_strategy.py +0 -0
  127. {web3-7.0.0b9 → web3-7.2.0}/tests/core/middleware/test_name_to_address_middleware.py +0 -0
  128. {web3-7.0.0b9 → web3-7.2.0}/tests/core/middleware/test_stalecheck.py +0 -0
  129. {web3-7.0.0b9 → web3-7.2.0}/tests/core/middleware/test_transaction_signing.py +0 -0
  130. {web3-7.0.0b9 → web3-7.2.0}/tests/core/module-class/test_module.py +0 -0
  131. {web3-7.0.0b9 → web3-7.2.0}/tests/core/providers/test_async_ipc_provider.py +0 -0
  132. {web3-7.0.0b9 → web3-7.2.0}/tests/core/providers/test_async_tester_provider.py +0 -0
  133. {web3-7.0.0b9 → web3-7.2.0}/tests/core/providers/test_auto_provider.py +0 -0
  134. {web3-7.0.0b9 → web3-7.2.0}/tests/core/providers/test_base_provider.py +0 -0
  135. {web3-7.0.0b9 → web3-7.2.0}/tests/core/providers/test_http_request_retry.py +0 -0
  136. {web3-7.0.0b9 → web3-7.2.0}/tests/core/providers/test_ipc_provider.py +0 -0
  137. {web3-7.0.0b9 → web3-7.2.0}/tests/core/providers/test_legacy_websocket_provider.py +0 -0
  138. {web3-7.0.0b9 → web3-7.2.0}/tests/core/providers/test_tester_provider.py +0 -0
  139. {web3-7.0.0b9 → web3-7.2.0}/tests/core/providers/test_websocket_provider.py +0 -0
  140. {web3-7.0.0b9 → web3-7.2.0}/tests/core/testing-module/test_testing_mine.py +0 -0
  141. {web3-7.0.0b9 → web3-7.2.0}/tests/core/testing-module/test_testing_snapshot_and_revert.py +0 -0
  142. {web3-7.0.0b9 → web3-7.2.0}/tests/core/testing-module/test_testing_timeTravel.py +0 -0
  143. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/__init__.py +0 -0
  144. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/conftest.py +0 -0
  145. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_abi.py +0 -0
  146. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_abi_filtering_by_argument_name.py +0 -0
  147. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_abi_is_encodable.py +0 -0
  148. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_abi_named_tree.py +0 -0
  149. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_address.py +0 -0
  150. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_async_transaction.py +0 -0
  151. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_attach_modules.py +0 -0
  152. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_attributedict.py +0 -0
  153. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_caching_utils.py +0 -0
  154. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_construct_event_data_set.py +0 -0
  155. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_construct_event_filter_params.py +0 -0
  156. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_construct_event_topics.py +0 -0
  157. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_datatypes.py +0 -0
  158. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_decorators.py +0 -0
  159. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_encoding.py +0 -0
  160. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_event_filter_builder.py +0 -0
  161. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_event_interface.py +0 -0
  162. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_fee_utils.py +0 -0
  163. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_formatters.py +0 -0
  164. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_http_session_manager.py +0 -0
  165. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_is_predefined_block_number.py +0 -0
  166. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_is_probably_enum.py +0 -0
  167. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_is_recognized_type.py +0 -0
  168. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_math.py +0 -0
  169. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_method_formatters.py +0 -0
  170. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_prepare_transaction_replacement.py +0 -0
  171. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_select_filter_method.py +0 -0
  172. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_threads.py +0 -0
  173. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_valid_transaction_params.py +0 -0
  174. {web3-7.0.0b9 → web3-7.2.0}/tests/core/utilities/test_validation.py +0 -0
  175. {web3-7.0.0b9 → web3-7.2.0}/tests/core/web3-module/test_api.py +0 -0
  176. {web3-7.0.0b9 → web3-7.2.0}/tests/core/web3-module/test_attach_modules.py +0 -0
  177. {web3-7.0.0b9 → web3-7.2.0}/tests/core/web3-module/test_client_version.py +0 -0
  178. {web3-7.0.0b9 → web3-7.2.0}/tests/core/web3-module/test_conversions.py +0 -0
  179. {web3-7.0.0b9 → web3-7.2.0}/tests/core/web3-module/test_import_and_version.py +0 -0
  180. {web3-7.0.0b9 → web3-7.2.0}/tests/core/web3-module/test_keccak.py +0 -0
  181. {web3-7.0.0b9 → web3-7.2.0}/tests/core/web3-module/test_providers.py +0 -0
  182. {web3-7.0.0b9 → web3-7.2.0}/tests/core/web3-module/test_strict_bytes_type_checking.py +0 -0
  183. {web3-7.0.0b9 → web3-7.2.0}/tests/core/web3-module/test_web3_inheritance.py +0 -0
  184. {web3-7.0.0b9 → web3-7.2.0}/tests/ens/conftest.py +0 -0
  185. {web3-7.0.0b9 → web3-7.2.0}/tests/ens/normalization/normalization_tests.json +0 -0
  186. {web3-7.0.0b9 → web3-7.2.0}/tests/ens/normalization/test_normalize_name_ensip15.py +0 -0
  187. {web3-7.0.0b9 → web3-7.2.0}/tests/ens/test_ens.py +0 -0
  188. {web3-7.0.0b9 → web3-7.2.0}/tests/ens/test_get_registry.py +0 -0
  189. {web3-7.0.0b9 → web3-7.2.0}/tests/ens/test_get_text.py +0 -0
  190. {web3-7.0.0b9 → web3-7.2.0}/tests/ens/test_nameprep.py +0 -0
  191. {web3-7.0.0b9 → web3-7.2.0}/tests/ens/test_offchain_resolution.py +0 -0
  192. {web3-7.0.0b9 → web3-7.2.0}/tests/ens/test_setup_address.py +0 -0
  193. {web3-7.0.0b9 → web3-7.2.0}/tests/ens/test_setup_name.py +0 -0
  194. {web3-7.0.0b9 → web3-7.2.0}/tests/ens/test_utils.py +0 -0
  195. {web3-7.0.0b9 → web3-7.2.0}/tests/ens/test_wildcard_resolution.py +0 -0
  196. {web3-7.0.0b9 → web3-7.2.0}/tests/integration/README.md +0 -0
  197. {web3-7.0.0b9 → web3-7.2.0}/tests/integration/common.py +0 -0
  198. {web3-7.0.0b9 → web3-7.2.0}/tests/integration/conftest.py +0 -0
  199. {web3-7.0.0b9 → web3-7.2.0}/tests/integration/generate_fixtures/common.py +0 -0
  200. {web3-7.0.0b9 → web3-7.2.0}/tests/integration/geth-1.14.5-fixture.zip +0 -0
  201. {web3-7.0.0b9 → web3-7.2.0}/tests/integration/go_ethereum/__init__.py +0 -0
  202. {web3-7.0.0b9 → web3-7.2.0}/tests/integration/go_ethereum/common.py +0 -0
  203. {web3-7.0.0b9 → web3-7.2.0}/tests/integration/go_ethereum/conftest.py +0 -0
  204. {web3-7.0.0b9 → web3-7.2.0}/tests/integration/go_ethereum/test_goethereum_http.py +0 -0
  205. {web3-7.0.0b9 → web3-7.2.0}/tests/integration/go_ethereum/test_goethereum_ipc.py +0 -0
  206. {web3-7.0.0b9 → web3-7.2.0}/tests/integration/go_ethereum/test_goethereum_legacy_ws.py +0 -0
  207. {web3-7.0.0b9 → web3-7.2.0}/tests/integration/go_ethereum/test_goethereum_ws/__init__.py +0 -0
  208. {web3-7.0.0b9 → web3-7.2.0}/tests/integration/go_ethereum/test_goethereum_ws/conftest.py +0 -0
  209. {web3-7.0.0b9 → web3-7.2.0}/tests/integration/go_ethereum/test_goethereum_ws/test_async_await_w3.py +0 -0
  210. {web3-7.0.0b9 → web3-7.2.0}/tests/integration/go_ethereum/test_goethereum_ws/test_async_ctx_manager_w3.py +0 -0
  211. {web3-7.0.0b9 → web3-7.2.0}/tests/integration/go_ethereum/test_goethereum_ws/test_async_iterator_w3.py +0 -0
  212. {web3-7.0.0b9 → web3-7.2.0}/tests/integration/go_ethereum/utils.py +0 -0
  213. {web3-7.0.0b9 → web3-7.2.0}/tests/integration/test_ethereum_tester.py +0 -0
  214. {web3-7.0.0b9 → web3-7.2.0}/tests/utils.py +0 -0
  215. {web3-7.0.0b9 → web3-7.2.0}/web3/__init__.py +0 -0
  216. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/__init__.py +0 -0
  217. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/abi.py +0 -0
  218. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/abi_element_identifiers.py +0 -0
  219. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/async_caching.py +0 -0
  220. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/async_transactions.py +0 -0
  221. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/batching.py +0 -0
  222. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/blocks.py +0 -0
  223. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/caching.py +0 -0
  224. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/compat/__init__.py +0 -0
  225. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/__init__.py +0 -0
  226. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/compile_contracts.py +0 -0
  227. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/__init__.py +0 -0
  228. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/_custom_contract_data.py +0 -0
  229. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/arrays_contract.py +0 -0
  230. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/bytes_contracts.py +0 -0
  231. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/constructor_contracts.py +0 -0
  232. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/contract_caller_tester.py +0 -0
  233. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/emitter_contract.py +0 -0
  234. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/event_contracts.py +0 -0
  235. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/extended_resolver.py +0 -0
  236. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/fallback_function_contract.py +0 -0
  237. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/function_name_tester_contract.py +0 -0
  238. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/math_contract.py +0 -0
  239. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/offchain_lookup.py +0 -0
  240. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/offchain_resolver.py +0 -0
  241. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/panic_errors_contract.py +0 -0
  242. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/payable_tester.py +0 -0
  243. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/receive_function_contracts.py +0 -0
  244. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/reflector_contracts.py +0 -0
  245. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/revert_contract.py +0 -0
  246. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/simple_resolver.py +0 -0
  247. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/storage_contract.py +0 -0
  248. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/string_contract.py +0 -0
  249. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contract_sources/contract_data/tuple_contracts.py +0 -0
  250. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/contracts.py +0 -0
  251. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/datatypes.py +0 -0
  252. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/decorators.py +0 -0
  253. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/empty.py +0 -0
  254. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/encoding.py +0 -0
  255. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/ens.py +0 -0
  256. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/error_formatters_utils.py +0 -0
  257. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/events.py +0 -0
  258. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/fee_utils.py +0 -0
  259. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/filters.py +0 -0
  260. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/formatters.py +0 -0
  261. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/http_session_manager.py +0 -0
  262. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/hypothesis.py +0 -0
  263. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/math.py +0 -0
  264. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/method_formatters.py +0 -0
  265. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/module.py +0 -0
  266. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/module_testing/__init__.py +0 -0
  267. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/module_testing/go_ethereum_admin_module.py +0 -0
  268. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/module_testing/go_ethereum_txpool_module.py +0 -0
  269. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/module_testing/module_testing_utils.py +0 -0
  270. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/module_testing/net_module.py +0 -0
  271. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/module_testing/persistent_connection_provider.py +0 -0
  272. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/module_testing/utils.py +0 -0
  273. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/module_testing/web3_module.py +0 -0
  274. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/normalizers.py +0 -0
  275. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/rpc_abi.py +0 -0
  276. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/threads.py +0 -0
  277. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/transactions.py +0 -0
  278. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/type_conversion.py +0 -0
  279. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/utility_methods.py +0 -0
  280. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/validation.py +0 -0
  281. {web3-7.0.0b9 → web3-7.2.0}/web3/_utils/windows.py +0 -0
  282. {web3-7.0.0b9 → web3-7.2.0}/web3/auto/__init__.py +0 -0
  283. {web3-7.0.0b9 → web3-7.2.0}/web3/auto/gethdev.py +0 -0
  284. {web3-7.0.0b9 → web3-7.2.0}/web3/beacon/__init__.py +0 -0
  285. {web3-7.0.0b9 → web3-7.2.0}/web3/constants.py +0 -0
  286. {web3-7.0.0b9 → web3-7.2.0}/web3/contract/__init__.py +0 -0
  287. {web3-7.0.0b9 → web3-7.2.0}/web3/contract/base_contract.py +0 -0
  288. {web3-7.0.0b9 → web3-7.2.0}/web3/contract/utils.py +0 -0
  289. {web3-7.0.0b9 → web3-7.2.0}/web3/eth/__init__.py +0 -0
  290. {web3-7.0.0b9 → web3-7.2.0}/web3/eth/async_eth.py +0 -0
  291. {web3-7.0.0b9 → web3-7.2.0}/web3/eth/base_eth.py +0 -0
  292. {web3-7.0.0b9 → web3-7.2.0}/web3/eth/eth.py +0 -0
  293. {web3-7.0.0b9 → web3-7.2.0}/web3/exceptions.py +0 -0
  294. {web3-7.0.0b9 → web3-7.2.0}/web3/gas_strategies/__init__.py +0 -0
  295. {web3-7.0.0b9 → web3-7.2.0}/web3/gas_strategies/rpc.py +0 -0
  296. {web3-7.0.0b9 → web3-7.2.0}/web3/gas_strategies/time_based.py +0 -0
  297. {web3-7.0.0b9 → web3-7.2.0}/web3/geth.py +0 -0
  298. {web3-7.0.0b9 → web3-7.2.0}/web3/logs.py +0 -0
  299. {web3-7.0.0b9 → web3-7.2.0}/web3/main.py +0 -0
  300. {web3-7.0.0b9 → web3-7.2.0}/web3/manager.py +0 -0
  301. {web3-7.0.0b9 → web3-7.2.0}/web3/method.py +0 -0
  302. {web3-7.0.0b9 → web3-7.2.0}/web3/middleware/__init__.py +0 -0
  303. {web3-7.0.0b9 → web3-7.2.0}/web3/middleware/attrdict.py +0 -0
  304. {web3-7.0.0b9 → web3-7.2.0}/web3/middleware/buffered_gas_estimate.py +0 -0
  305. {web3-7.0.0b9 → web3-7.2.0}/web3/middleware/filter.py +0 -0
  306. {web3-7.0.0b9 → web3-7.2.0}/web3/middleware/formatting.py +0 -0
  307. {web3-7.0.0b9 → web3-7.2.0}/web3/middleware/gas_price_strategy.py +0 -0
  308. {web3-7.0.0b9 → web3-7.2.0}/web3/middleware/names.py +0 -0
  309. {web3-7.0.0b9 → web3-7.2.0}/web3/middleware/proof_of_authority.py +0 -0
  310. {web3-7.0.0b9 → web3-7.2.0}/web3/middleware/pythonic.py +0 -0
  311. {web3-7.0.0b9 → web3-7.2.0}/web3/middleware/stalecheck.py +0 -0
  312. {web3-7.0.0b9 → web3-7.2.0}/web3/middleware/validation.py +0 -0
  313. {web3-7.0.0b9 → web3-7.2.0}/web3/module.py +0 -0
  314. {web3-7.0.0b9 → web3-7.2.0}/web3/net.py +0 -0
  315. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/__init__.py +0 -0
  316. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/async_base.py +0 -0
  317. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/auto.py +0 -0
  318. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/base.py +0 -0
  319. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/eth_tester/__init__.py +0 -0
  320. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/eth_tester/defaults.py +0 -0
  321. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/eth_tester/main.py +0 -0
  322. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/eth_tester/middleware.py +0 -0
  323. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/ipc.py +0 -0
  324. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/legacy_websocket.py +0 -0
  325. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/persistent/__init__.py +0 -0
  326. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/persistent/async_ipc.py +0 -0
  327. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/persistent/persistent.py +0 -0
  328. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/persistent/persistent_connection.py +0 -0
  329. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/persistent/request_processor.py +0 -0
  330. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/persistent/utils.py +0 -0
  331. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/persistent/websocket.py +0 -0
  332. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/rpc/__init__.py +0 -0
  333. {web3-7.0.0b9 → web3-7.2.0}/web3/providers/rpc/utils.py +0 -0
  334. {web3-7.0.0b9 → web3-7.2.0}/web3/py.typed +0 -0
  335. {web3-7.0.0b9 → web3-7.2.0}/web3/scripts/__init__.py +0 -0
  336. {web3-7.0.0b9 → web3-7.2.0}/web3/scripts/release/__init__.py +0 -0
  337. {web3-7.0.0b9 → web3-7.2.0}/web3/scripts/release/test_package.py +0 -0
  338. {web3-7.0.0b9 → web3-7.2.0}/web3/testing.py +0 -0
  339. {web3-7.0.0b9 → web3-7.2.0}/web3/tracing.py +0 -0
  340. {web3-7.0.0b9 → web3-7.2.0}/web3/types.py +0 -0
  341. {web3-7.0.0b9 → web3-7.2.0}/web3/utils/__init__.py +0 -0
  342. {web3-7.0.0b9 → web3-7.2.0}/web3/utils/abi.py +0 -0
  343. {web3-7.0.0b9 → web3-7.2.0}/web3/utils/address.py +0 -0
  344. {web3-7.0.0b9 → web3-7.2.0}/web3/utils/async_exception_handling.py +0 -0
  345. {web3-7.0.0b9 → web3-7.2.0}/web3/utils/caching.py +0 -0
  346. {web3-7.0.0b9 → web3-7.2.0}/web3/utils/exception_handling.py +0 -0
  347. {web3-7.0.0b9 → web3-7.2.0}/web3.egg-info/dependency_links.txt +0 -0
  348. {web3-7.0.0b9 → web3-7.2.0}/web3.egg-info/not-zip-safe +0 -0
  349. {web3-7.0.0b9 → web3-7.2.0}/web3.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: web3
3
- Version: 7.0.0b9
3
+ Version: 7.2.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
@@ -20,13 +20,13 @@ Classifier: Programming Language :: Python :: 3.12
20
20
  Requires-Python: >=3.8, <4
21
21
  Description-Content-Type: text/markdown
22
22
  License-File: LICENSE
23
- Requires-Dist: aiohttp>=3.7.4.post0
24
23
  Requires-Dist: eth-abi>=5.0.1
25
24
  Requires-Dist: eth-account>=0.13.1
26
25
  Requires-Dist: eth-hash[pycryptodome]>=0.5.1
27
- Requires-Dist: eth-typing>=5.0.0b3
28
- Requires-Dist: eth-utils>=5.0.0b1
26
+ Requires-Dist: eth-typing>=5.0.0
27
+ Requires-Dist: eth-utils>=5.0.0
29
28
  Requires-Dist: hexbytes>=1.2.0
29
+ Requires-Dist: aiohttp>=3.7.4.post0
30
30
  Requires-Dist: pydantic>=2.4.0
31
31
  Requires-Dist: pywin32>=223; platform_system == "Windows"
32
32
  Requires-Dist: requests>=2.23.0
@@ -53,9 +53,8 @@ Requires-Dist: sphinx>=6.0.0; extra == "dev"
53
53
  Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "dev"
54
54
  Requires-Dist: sphinx_rtd_theme>=1.0.0; extra == "dev"
55
55
  Requires-Dist: towncrier<22,>=21; extra == "dev"
56
- Requires-Dist: eth-account>=0.13.0; extra == "dev"
57
56
  Requires-Dist: eth-tester[py-evm]<0.13.0b1,>=0.11.0b1; extra == "dev"
58
- Requires-Dist: py-geth>=5.0.0b1; extra == "dev"
57
+ Requires-Dist: py-geth>=5.0.0; extra == "dev"
59
58
  Requires-Dist: pytest-asyncio<0.23,>=0.18.1; extra == "dev"
60
59
  Requires-Dist: pytest-mock>=1.10; extra == "dev"
61
60
  Requires-Dist: pytest-xdist>=2.4.0; extra == "dev"
@@ -65,10 +64,9 @@ Requires-Dist: sphinx>=6.0.0; extra == "docs"
65
64
  Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "docs"
66
65
  Requires-Dist: sphinx_rtd_theme>=1.0.0; extra == "docs"
67
66
  Requires-Dist: towncrier<22,>=21; extra == "docs"
68
- Requires-Dist: eth-account>=0.13.0; extra == "docs"
69
67
  Provides-Extra: test
70
68
  Requires-Dist: eth-tester[py-evm]<0.13.0b1,>=0.11.0b1; extra == "test"
71
- Requires-Dist: py-geth>=5.0.0b1; extra == "test"
69
+ Requires-Dist: py-geth>=5.0.0; extra == "test"
72
70
  Requires-Dist: pytest-asyncio<0.23,>=0.18.1; extra == "test"
73
71
  Requires-Dist: pytest-mock>=1.10; extra == "test"
74
72
  Requires-Dist: pytest-xdist>=2.4.0; extra == "test"
@@ -26,13 +26,12 @@ extras_require = {
26
26
  "sphinx-autobuild>=2021.3.14",
27
27
  "sphinx_rtd_theme>=1.0.0",
28
28
  "towncrier>=21,<22",
29
- # web3 will work but emit warnings with eth-account>=0.12.2,
30
- # but doctests fail between 0.12.2 and 0.13.0
31
- "eth-account>=0.13.0",
32
29
  ],
33
30
  "test": [
31
+ # Note: ethereum-maintained libraries in this list should be added to the
32
+ # `install_pre_releases.py` script.
34
33
  "eth-tester[py-evm]>=0.11.0b1,<0.13.0b1",
35
- "py-geth>=5.0.0b1",
34
+ "py-geth>=5.0.0",
36
35
  "pytest-asyncio>=0.18.1,<0.23",
37
36
  "pytest-mock>=1.10",
38
37
  "pytest-xdist>=2.4.0",
@@ -52,7 +51,7 @@ with open("./README.md") as readme:
52
51
  setup(
53
52
  name="web3",
54
53
  # *IMPORTANT*: Don't manually change the version here. Use `make bump`, as described in readme
55
- version="7.0.0-beta.9",
54
+ version="7.2.0",
56
55
  description="""web3: A Python library for interacting with Ethereum""",
57
56
  long_description=long_description,
58
57
  long_description_content_type="text/markdown",
@@ -61,13 +60,15 @@ setup(
61
60
  url="https://github.com/ethereum/web3.py",
62
61
  include_package_data=True,
63
62
  install_requires=[
64
- "aiohttp>=3.7.4.post0",
63
+ # Note: ethereum-maintained libraries in this list should be added to the
64
+ # `install_pre_releases.py` script.
65
65
  "eth-abi>=5.0.1",
66
66
  "eth-account>=0.13.1",
67
67
  "eth-hash[pycryptodome]>=0.5.1",
68
- "eth-typing>=5.0.0b3",
69
- "eth-utils>=5.0.0b1",
68
+ "eth-typing>=5.0.0",
69
+ "eth-utils>=5.0.0",
70
70
  "hexbytes>=1.2.0",
71
+ "aiohttp>=3.7.4.post0",
71
72
  "pydantic>=2.4.0",
72
73
  "pywin32>=223;platform_system=='Windows'",
73
74
  "requests>=2.23.0",
Binary file
@@ -267,3 +267,16 @@ async def test_async_cl_node_get_version(async_beacon):
267
267
  async def test_async_cl_node_get_syncing(async_beacon):
268
268
  response = await async_beacon.get_syncing()
269
269
  _assert_valid_response(response)
270
+
271
+
272
+ # Blob endpoint tests
273
+
274
+
275
+ @pytest.mark.asyncio
276
+ async def test_async_cl_node_get_blob_sidecars(async_beacon):
277
+ response = await async_beacon.get_blob_sidecars("head")
278
+ _assert_valid_response(response)
279
+
280
+ # test with indices
281
+ with_indices = await async_beacon.get_blob_sidecars("head", [0, 1])
282
+ _assert_valid_response(with_indices)
@@ -223,3 +223,15 @@ def test_cl_node_get_version(beacon):
223
223
  def test_cl_node_get_syncing(beacon):
224
224
  response = beacon.get_syncing()
225
225
  _assert_valid_response(response)
226
+
227
+
228
+ # Blob endpoint tests
229
+
230
+
231
+ def test_cl_node_get_blob_sidecars(beacon):
232
+ response = beacon.get_blob_sidecars("head")
233
+ _assert_valid_response(response)
234
+
235
+ # test with indices
236
+ with_indices = beacon.get_blob_sidecars("head", [0, 1])
237
+ _assert_valid_response(with_indices)
@@ -53,6 +53,20 @@ def test_build_transaction_with_contract_no_arguments(
53
53
  }
54
54
 
55
55
 
56
+ def test_build_transaction_with_contract_no_arguments_no_parens(
57
+ w3, math_contract, build_transaction
58
+ ):
59
+ txn = math_contract.functions.incrementCounter.build_transaction()
60
+ assert dissoc(txn, "gas") == {
61
+ "to": math_contract.address,
62
+ "data": "0x5b34b966",
63
+ "value": 0,
64
+ "maxFeePerGas": 2750000000,
65
+ "maxPriorityFeePerGas": 10**9,
66
+ "chainId": 131277322940537,
67
+ }
68
+
69
+
56
70
  def test_build_transaction_with_contract_fallback_function(
57
71
  w3, fallback_function_contract
58
72
  ):
@@ -309,6 +323,21 @@ async def test_async_build_transaction_with_contract_no_arguments(
309
323
  }
310
324
 
311
325
 
326
+ @pytest.mark.asyncio
327
+ async def test_async_build_transaction_with_contract_no_arguments_no_parens(
328
+ async_w3, async_math_contract, async_build_transaction
329
+ ):
330
+ txn = await async_math_contract.functions.incrementCounter.build_transaction()
331
+ assert dissoc(txn, "gas") == {
332
+ "to": async_math_contract.address,
333
+ "data": "0x5b34b966",
334
+ "value": 0,
335
+ "maxFeePerGas": 2750000000,
336
+ "maxPriorityFeePerGas": 10**9,
337
+ "chainId": 131277322940537,
338
+ }
339
+
340
+
312
341
  @pytest.mark.asyncio
313
342
  async def test_async_build_transaction_with_contract_fallback_function(
314
343
  async_w3, async_fallback_function_contract
@@ -145,6 +145,10 @@ def test_call_with_no_arguments(math_contract, call):
145
145
  assert result == 13
146
146
 
147
147
 
148
+ def test_call_no_arguments_no_parens(math_contract):
149
+ assert math_contract.functions.return13.call() == 13
150
+
151
+
148
152
  def test_call_with_one_argument(math_contract, call):
149
153
  result = call(contract=math_contract, contract_function="multiply7", func_args=[3])
150
154
  assert result == 21
@@ -2287,6 +2291,12 @@ async def test_async_call_with_no_arguments(async_math_contract, call):
2287
2291
  assert result == 13
2288
2292
 
2289
2293
 
2294
+ @pytest.mark.asyncio
2295
+ async def test_async_call_with_no_arguments_no_parens(async_math_contract, call):
2296
+ result = await async_math_contract.functions.return13.call()
2297
+ assert result == 13
2298
+
2299
+
2290
2300
  @pytest.mark.asyncio
2291
2301
  async def test_async_call_with_one_argument(async_math_contract, call):
2292
2302
  result = await async_math_contract.functions.multiply7(3).call()
@@ -18,6 +18,19 @@ def test_contract_estimate_gas(w3, math_contract, estimate_gas, transact):
18
18
  assert abs(gas_estimate - gas_used) < 21000
19
19
 
20
20
 
21
+ def test_estimate_gas_can_be_called_without_parens(
22
+ w3, math_contract, estimate_gas, transact
23
+ ):
24
+ gas_estimate = math_contract.functions.incrementCounter.estimate_gas()
25
+
26
+ txn_hash = transact(contract=math_contract, contract_function="incrementCounter")
27
+
28
+ txn_receipt = w3.eth.wait_for_transaction_receipt(txn_hash)
29
+ gas_used = txn_receipt.get("gasUsed")
30
+
31
+ assert abs(gas_estimate - gas_used) < 21000
32
+
33
+
21
34
  def test_contract_fallback_estimate_gas(w3, fallback_function_contract):
22
35
  gas_estimate = fallback_function_contract.fallback.estimate_gas()
23
36
 
@@ -197,6 +210,24 @@ async def test_async_estimate_gas_accepts_latest_block(
197
210
  assert abs(gas_estimate - gas_used) < 21000
198
211
 
199
212
 
213
+ @pytest.mark.asyncio
214
+ async def test_async_estimate_gas_can_be_called_without_parens(
215
+ async_w3, async_math_contract, async_transact
216
+ ):
217
+ gas_estimate = await async_math_contract.functions.counter.estimate_gas(
218
+ block_identifier="latest"
219
+ )
220
+
221
+ txn_hash = await async_transact(
222
+ contract=async_math_contract, contract_function="incrementCounter"
223
+ )
224
+
225
+ txn_receipt = await async_w3.eth.wait_for_transaction_receipt(txn_hash)
226
+ gas_used = txn_receipt.get("gasUsed")
227
+
228
+ assert abs(gas_estimate - gas_used) < 21000
229
+
230
+
200
231
  @pytest.mark.asyncio
201
232
  async def test_async_estimate_gas_block_identifier_unique_estimates(
202
233
  async_w3, async_math_contract, async_transact
@@ -285,6 +285,17 @@ def test_receive_contract_with_fallback_function(receive_function_contract, call
285
285
  assert final_value == "receive"
286
286
 
287
287
 
288
+ def test_contract_can_transact_without_fn_parens(w3, math_contract, call):
289
+ initial_value = call(contract=math_contract, contract_function="counter")
290
+ txn_hash = math_contract.functions.incrementCounter.transact()
291
+ txn_receipt = w3.eth.wait_for_transaction_receipt(txn_hash)
292
+ assert txn_receipt is not None
293
+
294
+ final_value = call(contract=math_contract, contract_function="counter")
295
+
296
+ assert final_value - initial_value == 1
297
+
298
+
288
299
  @pytest.mark.asyncio
289
300
  async def test_async_transacting_with_contract_no_arguments(
290
301
  async_w3, async_math_contract, async_transact, async_call
@@ -306,6 +317,25 @@ async def test_async_transacting_with_contract_no_arguments(
306
317
  assert final_value - initial_value == 1
307
318
 
308
319
 
320
+ @pytest.mark.asyncio
321
+ async def test_async_transacting_with_contract_no_arguments_no_parens(
322
+ async_w3, async_math_contract, async_transact, async_call
323
+ ):
324
+ initial_value = await async_call(
325
+ contract=async_math_contract, contract_function="counter"
326
+ )
327
+
328
+ txn_hash = await async_math_contract.functions.incrementCounter.transact()
329
+ txn_receipt = await async_w3.eth.wait_for_transaction_receipt(txn_hash)
330
+ assert txn_receipt is not None
331
+
332
+ final_value = await async_call(
333
+ contract=async_math_contract, contract_function="counter"
334
+ )
335
+
336
+ assert final_value - initial_value == 1
337
+
338
+
309
339
  @pytest.mark.asyncio
310
340
  async def test_async_transact_not_sending_ether_to_nonpayable_function(
311
341
  async_w3, async_payable_tester_contract, async_transact, async_call
@@ -0,0 +1,81 @@
1
+ import pytest
2
+
3
+ from web3 import (
4
+ Web3,
5
+ )
6
+ from web3.exceptions import (
7
+ Web3ValueError,
8
+ )
9
+ from web3.middleware import (
10
+ FormattingMiddlewareBuilder,
11
+ Web3Middleware,
12
+ )
13
+
14
+
15
+ class TestMiddleware(Web3Middleware):
16
+ def response_processor(self, method, response):
17
+ if method == "eth_blockNumber":
18
+ response["result"] = 1234
19
+
20
+ return response
21
+
22
+
23
+ class TestMiddleware2(Web3Middleware):
24
+ def response_processor(self, method, response):
25
+ if method == "eth_blockNumber":
26
+ response["result"] = 4321
27
+
28
+ return response
29
+
30
+
31
+ def test_middleware_class_eq_magic_method():
32
+ w3_a = Web3()
33
+ w3_b = Web3()
34
+
35
+ mw1w3_a = TestMiddleware(w3_a)
36
+ assert mw1w3_a is not None
37
+ assert mw1w3_a != ""
38
+
39
+ mw1w3_a_equal = TestMiddleware(w3_a)
40
+ assert mw1w3_a == mw1w3_a_equal
41
+
42
+ mw2w3_a = TestMiddleware2(w3_a)
43
+ mw1w3_b = TestMiddleware(w3_b)
44
+ assert mw1w3_a != mw2w3_a
45
+ assert mw1w3_a != mw1w3_b
46
+
47
+
48
+ def test_unnamed_middleware_are_given_unique_keys(w3):
49
+ request_formatting_middleware = FormattingMiddlewareBuilder.build(
50
+ request_formatters={lambda x: x}
51
+ )
52
+ request_formatting_middleware2 = FormattingMiddlewareBuilder.build(
53
+ request_formatters={lambda x: x if x else None}
54
+ )
55
+ result_formatting_middleware = FormattingMiddlewareBuilder.build(
56
+ result_formatters={lambda x: x}
57
+ )
58
+ error_formatting_middleware = FormattingMiddlewareBuilder.build(
59
+ error_formatters={lambda x: x}
60
+ )
61
+
62
+ # adding different middleware should not cause an error
63
+ w3.middleware_onion.add(request_formatting_middleware)
64
+ w3.middleware_onion.add(request_formatting_middleware2)
65
+ w3.middleware_onion.add(result_formatting_middleware)
66
+ w3.middleware_onion.add(error_formatting_middleware)
67
+ assert isinstance(w3.eth.block_number, int)
68
+
69
+ with pytest.raises(Web3ValueError):
70
+ # adding the same middleware again should cause an error
71
+ w3.middleware_onion.add(request_formatting_middleware)
72
+
73
+
74
+ def test_unnamed_class_middleware_are_given_unique_keys(w3):
75
+ w3.middleware_onion.add(TestMiddleware)
76
+ w3.middleware_onion.add(TestMiddleware2)
77
+ assert isinstance(w3.eth.block_number, int)
78
+
79
+ with pytest.raises(Web3ValueError):
80
+ # adding the same middleware again should cause an error
81
+ w3.middleware_onion.add(TestMiddleware)
@@ -94,8 +94,8 @@ async def test_async_user_provided_session() -> None:
94
94
  assert cached_session == session
95
95
 
96
96
 
97
- def test_get_request_headers():
98
- provider = AsyncHTTPProvider()
97
+ @pytest.mark.parametrize("provider", (AsyncHTTPProvider(), AsyncHTTPProvider))
98
+ def test_get_request_headers(provider):
99
99
  headers = provider.get_request_headers()
100
100
  assert len(headers) == 2
101
101
  assert headers["Content-Type"] == "application/json"
@@ -101,8 +101,8 @@ def test_user_provided_session():
101
101
  assert adapter._pool_maxsize == 20
102
102
 
103
103
 
104
- def test_get_request_headers():
105
- provider = HTTPProvider()
104
+ @pytest.mark.parametrize("provider", (HTTPProvider(), HTTPProvider))
105
+ def test_get_request_headers(provider):
106
106
  headers = provider.get_request_headers()
107
107
  assert len(headers) == 2
108
108
  assert headers["Content-Type"] == "application/json"
@@ -11,9 +11,7 @@ DEFAULT_EXCEPTIONS = (
11
11
 
12
12
  def test_no_default_exceptions_are_raised_within_web3py():
13
13
  for root, dirs, files in os.walk(WEB3_PATH):
14
- if "module_testing" in dirs:
15
- dirs.remove("module_testing")
16
- continue
14
+ [dirs.remove(dir_) for dir_ in dirs if dir_ in ("scripts", "module_testing")]
17
15
  for file in files:
18
16
  if file.endswith(".py"):
19
17
  file_path = os.path.join(root, file)
Binary file
@@ -2,10 +2,10 @@ import contextlib
2
2
  import json
3
3
  import os
4
4
  import pprint
5
+ import re
5
6
  import shutil
6
7
  import socket
7
8
  import subprocess
8
- import sys
9
9
  import time
10
10
 
11
11
  import common
@@ -361,6 +361,32 @@ def setup_chain_state(w3):
361
361
  return geth_fixture
362
362
 
363
363
 
364
+ def update_circleci_geth_version(new_version):
365
+ file_path = "./.circleci/config.yml"
366
+ with open(file_path) as file:
367
+ lines = file.readlines()
368
+
369
+ replaced = False
370
+ for i, line in enumerate(lines):
371
+ if "geth_version:" in line:
372
+ if "default:" in lines[i + 1]:
373
+ lines[i + 1] = f' default: "{new_version}"\n'
374
+ replaced = True
375
+ break
376
+
377
+ if not replaced:
378
+ raise ValueError("`geth_version` for circleci not found / replaced.")
379
+
380
+ with open(file_path, "w") as file:
381
+ file.writelines(lines)
382
+ print(f"Updated geth_version to {new_version}")
383
+
384
+
364
385
  if __name__ == "__main__":
365
- fixture_dir = sys.argv[1]
366
- generate_go_ethereum_fixture(fixture_dir)
386
+ geth_binary = os.environ.get("GETH_BINARY", None)
387
+ if not geth_binary:
388
+ raise ValueError("GETH_BINARY not set. Cannot generate geth fixture.")
389
+
390
+ geth_version = re.search(r"geth-v([\d.]+)/", geth_binary).group(1)
391
+ generate_go_ethereum_fixture(f"./tests/integration/geth-{geth_version}-fixture")
392
+ update_circleci_geth_version(geth_version)
@@ -0,0 +1,12 @@
1
+ DEFAULT_HTTP_TIMEOUT = 30.0
2
+
3
+
4
+ def construct_user_agent(
5
+ module: str,
6
+ class_name: str,
7
+ ) -> str:
8
+ from web3 import (
9
+ __version__ as web3_version,
10
+ )
11
+
12
+ return f"web3.py/{web3_version}/{module}.{class_name}"
@@ -88,6 +88,7 @@ from web3.exceptions import (
88
88
  )
89
89
  from web3.middleware import (
90
90
  ExtraDataToPOAMiddleware,
91
+ SignAndSendRawMiddlewareBuilder,
91
92
  )
92
93
  from web3.types import (
93
94
  ENS,
@@ -725,6 +726,26 @@ class AsyncEthModuleTest:
725
726
  txn_hash = await async_w3.eth.send_raw_transaction(signed.raw_transaction)
726
727
  assert txn_hash == HexBytes(signed.hash)
727
728
 
729
+ @pytest.mark.asyncio
730
+ async def test_async_sign_and_send_raw_middleware(
731
+ self, async_w3: "AsyncWeb3", keyfile_account_pkey: HexStr
732
+ ) -> None:
733
+ keyfile_account = async_w3.eth.account.from_key(keyfile_account_pkey)
734
+ txn: TxParams = {
735
+ "from": keyfile_account.address,
736
+ "to": keyfile_account.address,
737
+ "value": Wei(0),
738
+ "gas": 21000,
739
+ }
740
+ async_w3.middleware_onion.add(
741
+ SignAndSendRawMiddlewareBuilder.build(keyfile_account), "signing"
742
+ )
743
+ txn_hash = await async_w3.eth.send_transaction(txn)
744
+ assert isinstance(txn_hash, HexBytes)
745
+
746
+ # clean up
747
+ async_w3.middleware_onion.remove("signing")
748
+
728
749
  @pytest.mark.asyncio
729
750
  async def test_GasPriceStrategyMiddleware(
730
751
  self,
@@ -3716,6 +3737,25 @@ class EthModuleTest:
3716
3737
  txn_hash = w3.eth.send_raw_transaction(signed.raw_transaction)
3717
3738
  assert txn_hash == HexBytes(signed.hash)
3718
3739
 
3740
+ def test_sign_and_send_raw_middleware(
3741
+ self, w3: "Web3", keyfile_account_pkey: HexStr
3742
+ ) -> None:
3743
+ keyfile_account = w3.eth.account.from_key(keyfile_account_pkey)
3744
+ txn: TxParams = {
3745
+ "from": keyfile_account.address,
3746
+ "to": keyfile_account.address,
3747
+ "value": Wei(0),
3748
+ "gas": 21000,
3749
+ }
3750
+ w3.middleware_onion.add(
3751
+ SignAndSendRawMiddlewareBuilder.build(keyfile_account), "signing"
3752
+ )
3753
+ txn_hash = w3.eth.send_transaction(txn)
3754
+ assert isinstance(txn_hash, HexBytes)
3755
+
3756
+ # cleanup
3757
+ w3.middleware_onion.remove("signing")
3758
+
3719
3759
  def test_eth_call(self, w3: "Web3", math_contract: "Contract") -> None:
3720
3760
  txn_params = math_contract._prepare_transaction(
3721
3761
  abi_element_identifier="add",
@@ -26,6 +26,9 @@ GET_BLINDED_BLOCKS = "/eth/v1/beacon/blinded_blocks/{0}"
26
26
  # rewards
27
27
  GET_REWARDS = "/eth/v1/beacon/rewards/blocks/{0}"
28
28
 
29
+ # blobs
30
+ GET_BLOB_SIDECARS = "/eth/v1/beacon/blob_sidecars/{0}"
31
+
29
32
  # light client
30
33
  GET_LIGHT_CLIENT_BOOTSTRAP_STRUCTURE = "/eth/v1/beacon/light_client/bootstrap/{0}"
31
34
  GET_LIGHT_CLIENT_UPDATES = "/eth/v1/beacon/light_client/updates"
@@ -1,6 +1,8 @@
1
1
  from typing import (
2
2
  Any,
3
3
  Dict,
4
+ List,
5
+ Optional,
4
6
  )
5
7
 
6
8
  from eth_typing import (
@@ -17,6 +19,7 @@ from web3.beacon.api_endpoints import (
17
19
  GET_BEACON_HEADS,
18
20
  GET_BEACON_STATE,
19
21
  GET_BLINDED_BLOCKS,
22
+ GET_BLOB_SIDECARS,
20
23
  GET_BLOCK,
21
24
  GET_BLOCK_ATTESTATIONS,
22
25
  GET_BLOCK_HEADER,
@@ -64,10 +67,12 @@ class AsyncBeacon:
64
67
  self.request_timeout = request_timeout
65
68
  self._request_session_manager = HTTPSessionManager()
66
69
 
67
- async def _async_make_get_request(self, endpoint_uri: str) -> Dict[str, Any]:
70
+ async def _async_make_get_request(
71
+ self, endpoint_uri: str, params: Optional[Dict[str, str]] = None
72
+ ) -> Dict[str, Any]:
68
73
  uri = URI(self.base_url + endpoint_uri)
69
74
  return await self._request_session_manager.async_json_make_get_request(
70
- uri, timeout=self.request_timeout
75
+ uri, params=params, timeout=self.request_timeout
71
76
  )
72
77
 
73
78
  # [ BEACON endpoints ]
@@ -220,3 +225,14 @@ class AsyncBeacon:
220
225
 
221
226
  async def get_syncing(self) -> Dict[str, Any]:
222
227
  return await self._async_make_get_request(GET_SYNCING)
228
+
229
+ # [ BLOB endpoints ]
230
+
231
+ async def get_blob_sidecars(
232
+ self, block_id: str, indices: Optional[List[int]] = None
233
+ ) -> Dict[str, Any]:
234
+ indices_param = {"indices": ",".join(map(str, indices))} if indices else None
235
+ return await self._async_make_get_request(
236
+ GET_BLOB_SIDECARS.format(block_id),
237
+ params=indices_param,
238
+ )
@@ -1,6 +1,8 @@
1
1
  from typing import (
2
2
  Any,
3
3
  Dict,
4
+ List,
5
+ Optional,
4
6
  )
5
7
 
6
8
  from eth_typing import (
@@ -17,6 +19,7 @@ from web3.beacon.api_endpoints import (
17
19
  GET_BEACON_HEADS,
18
20
  GET_BEACON_STATE,
19
21
  GET_BLINDED_BLOCKS,
22
+ GET_BLOB_SIDECARS,
20
23
  GET_BLOCK,
21
24
  GET_BLOCK_ATTESTATIONS,
22
25
  GET_BLOCK_HEADER,
@@ -62,10 +65,12 @@ class Beacon:
62
65
  self.request_timeout = request_timeout
63
66
  self._request_session_manager = HTTPSessionManager()
64
67
 
65
- def _make_get_request(self, endpoint_url: str) -> Dict[str, Any]:
68
+ def _make_get_request(
69
+ self, endpoint_url: str, params: Optional[Dict[str, str]] = None
70
+ ) -> Dict[str, Any]:
66
71
  uri = URI(self.base_url + endpoint_url)
67
72
  return self._request_session_manager.json_make_get_request(
68
- uri, timeout=self.request_timeout
73
+ uri, params=params, timeout=self.request_timeout
69
74
  )
70
75
 
71
76
  # [ BEACON endpoints ]
@@ -206,3 +211,14 @@ class Beacon:
206
211
 
207
212
  def get_syncing(self) -> Dict[str, Any]:
208
213
  return self._make_get_request(GET_SYNCING)
214
+
215
+ # [ BLOB endpoints ]
216
+
217
+ def get_blob_sidecars(
218
+ self, block_id: str, indices: Optional[List[int]] = None
219
+ ) -> Dict[str, Any]:
220
+ indices_param = {"indices": ",".join(map(str, indices))} if indices else None
221
+ return self._make_get_request(
222
+ GET_BLOB_SIDECARS.format(block_id),
223
+ params=indices_param,
224
+ )
@@ -319,8 +319,8 @@ class AsyncContractFunction(BaseContractFunction):
319
319
  state_override,
320
320
  ccip_read_enabled,
321
321
  self.decode_tuples,
322
- *self.args,
323
- **self.kwargs,
322
+ *self.args or (),
323
+ **self.kwargs or {},
324
324
  )
325
325
 
326
326
  async def transact(self, transaction: Optional[TxParams] = None) -> HexBytes:
@@ -332,8 +332,8 @@ class AsyncContractFunction(BaseContractFunction):
332
332
  setup_transaction,
333
333
  self.contract_abi,
334
334
  self.abi,
335
- *self.args,
336
- **self.kwargs,
335
+ *self.args or (),
336
+ **self.kwargs or {},
337
337
  )
338
338
 
339
339
  async def estimate_gas(
@@ -352,8 +352,8 @@ class AsyncContractFunction(BaseContractFunction):
352
352
  self.abi,
353
353
  block_identifier,
354
354
  state_override,
355
- *self.args,
356
- **self.kwargs,
355
+ *self.args or (),
356
+ **self.kwargs or {},
357
357
  )
358
358
 
359
359
  async def build_transaction(
@@ -367,8 +367,8 @@ class AsyncContractFunction(BaseContractFunction):
367
367
  built_transaction,
368
368
  self.contract_abi,
369
369
  self.abi,
370
- *self.args,
371
- **self.kwargs,
370
+ *self.args or (),
371
+ **self.kwargs or {},
372
372
  )
373
373
 
374
374
  @staticmethod