web3 7.0.0b5__tar.gz → 7.0.0b7__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 (368) hide show
  1. {web3-7.0.0b5 → web3-7.0.0b7}/LICENSE +1 -1
  2. web3-7.0.0b7/MANIFEST.in +13 -0
  3. {web3-7.0.0b5/web3.egg-info → web3-7.0.0b7}/PKG-INFO +37 -23
  4. {web3-7.0.0b5 → web3-7.0.0b7}/README.md +4 -2
  5. {web3-7.0.0b5 → web3-7.0.0b7}/ens/__init__.py +13 -2
  6. {web3-7.0.0b5 → web3-7.0.0b7}/setup.py +32 -22
  7. web3-7.0.0b7/tests/.DS_Store +0 -0
  8. web3-7.0.0b7/tests/beacon/test_async_beacon.py +269 -0
  9. web3-7.0.0b7/tests/beacon/test_beacon.py +225 -0
  10. web3-7.0.0b7/tests/conftest.py +124 -0
  11. web3-7.0.0b7/tests/core/admin-module/test_admin_addPeer.py +7 -0
  12. web3-7.0.0b7/tests/core/admin-module/test_admin_nodeInfo.py +7 -0
  13. web3-7.0.0b7/tests/core/admin-module/test_admin_peers.py +4 -0
  14. web3-7.0.0b7/tests/core/block-utils/test_select_method_for_block_identifier.py +48 -0
  15. web3-7.0.0b7/tests/core/caching-utils/test_generate_cache_key.py +51 -0
  16. web3-7.0.0b7/tests/core/caching-utils/test_request_caching.py +309 -0
  17. web3-7.0.0b7/tests/core/conftest.py +133 -0
  18. web3-7.0.0b7/tests/core/contracts/conftest.py +762 -0
  19. web3-7.0.0b7/tests/core/contracts/test_args_and_kwargs_merger.py +109 -0
  20. web3-7.0.0b7/tests/core/contracts/test_contract_ambiguous_functions.py +197 -0
  21. web3-7.0.0b7/tests/core/contracts/test_contract_attributes.py +43 -0
  22. web3-7.0.0b7/tests/core/contracts/test_contract_build_transaction.py +529 -0
  23. web3-7.0.0b7/tests/core/contracts/test_contract_call_interface.py +2339 -0
  24. web3-7.0.0b7/tests/core/contracts/test_contract_caller_interface.py +496 -0
  25. web3-7.0.0b7/tests/core/contracts/test_contract_class_construction.py +88 -0
  26. web3-7.0.0b7/tests/core/contracts/test_contract_constructor.py +604 -0
  27. web3-7.0.0b7/tests/core/contracts/test_contract_constructor_encoding.py +130 -0
  28. web3-7.0.0b7/tests/core/contracts/test_contract_deployment.py +238 -0
  29. web3-7.0.0b7/tests/core/contracts/test_contract_estimate_gas.py +216 -0
  30. web3-7.0.0b7/tests/core/contracts/test_contract_events_build_filter.py +71 -0
  31. web3-7.0.0b7/tests/core/contracts/test_contract_example.py +212 -0
  32. web3-7.0.0b7/tests/core/contracts/test_contract_init.py +77 -0
  33. web3-7.0.0b7/tests/core/contracts/test_contract_method_abi_decoding.py +149 -0
  34. web3-7.0.0b7/tests/core/contracts/test_contract_method_abi_encoding.py +199 -0
  35. web3-7.0.0b7/tests/core/contracts/test_contract_method_to_argument_matching.py +204 -0
  36. web3-7.0.0b7/tests/core/contracts/test_contract_panic_errors.py +48 -0
  37. web3-7.0.0b7/tests/core/contracts/test_contract_transact_interface.py +612 -0
  38. web3-7.0.0b7/tests/core/contracts/test_contract_util_functions.py +128 -0
  39. web3-7.0.0b7/tests/core/contracts/test_extracting_event_data.py +1265 -0
  40. web3-7.0.0b7/tests/core/contracts/test_extracting_event_data_old.py +155 -0
  41. web3-7.0.0b7/tests/core/contracts/test_offchain_lookup.py +210 -0
  42. web3-7.0.0b7/tests/core/contracts/utils.py +27 -0
  43. web3-7.0.0b7/tests/core/datastructures/test_datastructures.py +209 -0
  44. web3-7.0.0b7/tests/core/empty-object/test_empty_object_is_falsy.py +8 -0
  45. web3-7.0.0b7/tests/core/eth-module/conftest.py +6 -0
  46. web3-7.0.0b7/tests/core/eth-module/test_accounts.py +580 -0
  47. web3-7.0.0b7/tests/core/eth-module/test_block_api.py +173 -0
  48. web3-7.0.0b7/tests/core/eth-module/test_default_account_api.py +46 -0
  49. web3-7.0.0b7/tests/core/eth-module/test_eth_contract.py +47 -0
  50. web3-7.0.0b7/tests/core/eth-module/test_eth_fee_history.py +22 -0
  51. web3-7.0.0b7/tests/core/eth-module/test_eth_filter.py +47 -0
  52. web3-7.0.0b7/tests/core/eth-module/test_eth_properties.py +26 -0
  53. web3-7.0.0b7/tests/core/eth-module/test_gas_pricing.py +27 -0
  54. web3-7.0.0b7/tests/core/eth-module/test_poa.py +46 -0
  55. web3-7.0.0b7/tests/core/eth-module/test_transactions.py +426 -0
  56. web3-7.0.0b7/tests/core/eth-tester-api/test_withdrawals.py +55 -0
  57. web3-7.0.0b7/tests/core/exceptions/test_exceptions.py +32 -0
  58. web3-7.0.0b7/tests/core/filtering/conftest.py +108 -0
  59. web3-7.0.0b7/tests/core/filtering/test_basic_filter_tests.py +78 -0
  60. web3-7.0.0b7/tests/core/filtering/test_contract_create_filter_topic_merging.py +16 -0
  61. web3-7.0.0b7/tests/core/filtering/test_contract_data_filters.py +475 -0
  62. web3-7.0.0b7/tests/core/filtering/test_contract_get_logs.py +398 -0
  63. web3-7.0.0b7/tests/core/filtering/test_contract_on_event_filtering.py +476 -0
  64. web3-7.0.0b7/tests/core/filtering/test_contract_past_event_filtering.py +190 -0
  65. web3-7.0.0b7/tests/core/filtering/test_contract_topic_filters.py +440 -0
  66. web3-7.0.0b7/tests/core/filtering/test_existing_filter_instance.py +84 -0
  67. web3-7.0.0b7/tests/core/filtering/test_filter_against_latest_blocks.py +52 -0
  68. web3-7.0.0b7/tests/core/filtering/test_filter_against_pending_transactions.py +59 -0
  69. web3-7.0.0b7/tests/core/filtering/test_filter_against_transaction_logs.py +40 -0
  70. web3-7.0.0b7/tests/core/filtering/test_filters_against_many_blocks.py +269 -0
  71. web3-7.0.0b7/tests/core/filtering/test_utils_functions.py +225 -0
  72. web3-7.0.0b7/tests/core/filtering/utils.py +77 -0
  73. web3-7.0.0b7/tests/core/gas-strategies/test_rpc_gas_pricing_strategies.py +11 -0
  74. web3-7.0.0b7/tests/core/gas-strategies/test_time_based_gas_price_strategy.py +279 -0
  75. web3-7.0.0b7/tests/core/manager/conftest.py +38 -0
  76. web3-7.0.0b7/tests/core/manager/test_default_middlewares.py +24 -0
  77. web3-7.0.0b7/tests/core/manager/test_middleware_can_be_stateful.py +36 -0
  78. web3-7.0.0b7/tests/core/manager/test_middleware_onion_api.py +187 -0
  79. web3-7.0.0b7/tests/core/manager/test_provider_property.py +20 -0
  80. web3-7.0.0b7/tests/core/manager/test_provider_request_wrapping.py +33 -0
  81. web3-7.0.0b7/tests/core/manager/test_response_formatters.py +360 -0
  82. web3-7.0.0b7/tests/core/method-class/test_method.py +387 -0
  83. web3-7.0.0b7/tests/core/method-class/test_result_formatters.py +51 -0
  84. web3-7.0.0b7/tests/core/middleware/test_attrdict_middleware.py +122 -0
  85. web3-7.0.0b7/tests/core/middleware/test_eth_tester_middleware.py +131 -0
  86. web3-7.0.0b7/tests/core/middleware/test_filter_middleware.py +381 -0
  87. web3-7.0.0b7/tests/core/middleware/test_formatting_middleware.py +103 -0
  88. web3-7.0.0b7/tests/core/middleware/test_gas_price_strategy.py +69 -0
  89. web3-7.0.0b7/tests/core/middleware/test_name_to_address_middleware.py +180 -0
  90. web3-7.0.0b7/tests/core/middleware/test_stalecheck.py +234 -0
  91. web3-7.0.0b7/tests/core/middleware/test_transaction_signing.py +611 -0
  92. web3-7.0.0b7/tests/core/module-class/test_module.py +98 -0
  93. web3-7.0.0b7/tests/core/providers/test_async_http_provider.py +105 -0
  94. web3-7.0.0b7/tests/core/providers/test_async_ipc_provider.py +260 -0
  95. web3-7.0.0b7/tests/core/providers/test_async_tester_provider.py +67 -0
  96. web3-7.0.0b7/tests/core/providers/test_auto_provider.py +61 -0
  97. web3-7.0.0b7/tests/core/providers/test_base_provider.py +57 -0
  98. web3-7.0.0b7/tests/core/providers/test_http_provider.py +112 -0
  99. web3-7.0.0b7/tests/core/providers/test_http_request_retry.py +208 -0
  100. web3-7.0.0b7/tests/core/providers/test_ipc_provider.py +187 -0
  101. web3-7.0.0b7/tests/core/providers/test_legacy_websocket_provider.py +79 -0
  102. web3-7.0.0b7/tests/core/providers/test_tester_provider.py +120 -0
  103. web3-7.0.0b7/tests/core/providers/test_websocket_provider.py +367 -0
  104. web3-7.0.0b7/tests/core/test_library_files.py +30 -0
  105. web3-7.0.0b7/tests/core/testing-module/test_testing_mine.py +22 -0
  106. web3-7.0.0b7/tests/core/testing-module/test_testing_snapshot_and_revert.py +47 -0
  107. web3-7.0.0b7/tests/core/testing-module/test_testing_timeTravel.py +9 -0
  108. web3-7.0.0b7/tests/core/utilities/conftest.py +14 -0
  109. web3-7.0.0b7/tests/core/utilities/test_abi.py +383 -0
  110. web3-7.0.0b7/tests/core/utilities/test_abi_filter_by_abi_name.py +73 -0
  111. web3-7.0.0b7/tests/core/utilities/test_abi_filtering_by_argument_name.py +61 -0
  112. web3-7.0.0b7/tests/core/utilities/test_abi_is_encodable.py +102 -0
  113. web3-7.0.0b7/tests/core/utilities/test_abi_named_tree.py +107 -0
  114. web3-7.0.0b7/tests/core/utilities/test_address.py +71 -0
  115. web3-7.0.0b7/tests/core/utilities/test_async_transaction.py +97 -0
  116. web3-7.0.0b7/tests/core/utilities/test_attach_modules.py +209 -0
  117. web3-7.0.0b7/tests/core/utilities/test_attributedict.py +109 -0
  118. web3-7.0.0b7/tests/core/utilities/test_caching_utils.py +35 -0
  119. web3-7.0.0b7/tests/core/utilities/test_construct_event_data_set.py +150 -0
  120. web3-7.0.0b7/tests/core/utilities/test_construct_event_filter_params.py +103 -0
  121. web3-7.0.0b7/tests/core/utilities/test_construct_event_topics.py +164 -0
  122. web3-7.0.0b7/tests/core/utilities/test_datatypes.py +38 -0
  123. web3-7.0.0b7/tests/core/utilities/test_decorators.py +23 -0
  124. web3-7.0.0b7/tests/core/utilities/test_encoding.py +295 -0
  125. web3-7.0.0b7/tests/core/utilities/test_event_filter_builder.py +80 -0
  126. web3-7.0.0b7/tests/core/utilities/test_event_interface.py +34 -0
  127. web3-7.0.0b7/tests/core/utilities/test_fee_utils.py +48 -0
  128. web3-7.0.0b7/tests/core/utilities/test_formatters.py +56 -0
  129. web3-7.0.0b7/tests/core/utilities/test_http_session_manager.py +478 -0
  130. web3-7.0.0b7/tests/core/utilities/test_is_predefined_block_number.py +22 -0
  131. web3-7.0.0b7/tests/core/utilities/test_is_probably_enum.py +23 -0
  132. web3-7.0.0b7/tests/core/utilities/test_is_recognized_type.py +182 -0
  133. web3-7.0.0b7/tests/core/utilities/test_math.py +57 -0
  134. web3-7.0.0b7/tests/core/utilities/test_method_formatters.py +194 -0
  135. web3-7.0.0b7/tests/core/utilities/test_prepare_transaction_replacement.py +132 -0
  136. web3-7.0.0b7/tests/core/utilities/test_select_filter_method.py +44 -0
  137. web3-7.0.0b7/tests/core/utilities/test_threads.py +110 -0
  138. web3-7.0.0b7/tests/core/utilities/test_valid_transaction_params.py +178 -0
  139. web3-7.0.0b7/tests/core/utilities/test_validation.py +147 -0
  140. web3-7.0.0b7/tests/core/web3-module/test_api.py +2 -0
  141. web3-7.0.0b7/tests/core/web3-module/test_attach_modules.py +107 -0
  142. web3-7.0.0b7/tests/core/web3-module/test_client_version.py +2 -0
  143. web3-7.0.0b7/tests/core/web3-module/test_conversions.py +255 -0
  144. web3-7.0.0b7/tests/core/web3-module/test_import_and_version.py +5 -0
  145. web3-7.0.0b7/tests/core/web3-module/test_keccak.py +121 -0
  146. web3-7.0.0b7/tests/core/web3-module/test_providers.py +32 -0
  147. web3-7.0.0b7/tests/core/web3-module/test_strict_bytes_type_checking.py +106 -0
  148. web3-7.0.0b7/tests/core/web3-module/test_web3_inheritance.py +12 -0
  149. web3-7.0.0b7/tests/ens/conftest.py +663 -0
  150. web3-7.0.0b7/tests/ens/normalization/normalization_tests.json +1 -0
  151. web3-7.0.0b7/tests/ens/normalization/test_normalize_name_ensip15.py +47 -0
  152. web3-7.0.0b7/tests/ens/test_ens.py +270 -0
  153. web3-7.0.0b7/tests/ens/test_get_registry.py +56 -0
  154. web3-7.0.0b7/tests/ens/test_get_text.py +166 -0
  155. web3-7.0.0b7/tests/ens/test_nameprep.py +37 -0
  156. web3-7.0.0b7/tests/ens/test_offchain_resolution.py +234 -0
  157. web3-7.0.0b7/tests/ens/test_setup_address.py +288 -0
  158. web3-7.0.0b7/tests/ens/test_setup_name.py +250 -0
  159. web3-7.0.0b7/tests/ens/test_utils.py +233 -0
  160. web3-7.0.0b7/tests/ens/test_wildcard_resolution.py +48 -0
  161. web3-7.0.0b7/tests/integration/.DS_Store +0 -0
  162. web3-7.0.0b7/tests/integration/README.md +68 -0
  163. web3-7.0.0b7/tests/integration/common.py +23 -0
  164. web3-7.0.0b7/tests/integration/conftest.py +66 -0
  165. web3-7.0.0b7/tests/integration/generate_fixtures/common.py +239 -0
  166. web3-7.0.0b7/tests/integration/generate_fixtures/go_ethereum.py +366 -0
  167. web3-7.0.0b7/tests/integration/geth-1.14.5-fixture.zip +0 -0
  168. web3-7.0.0b7/tests/integration/go_ethereum/common.py +123 -0
  169. web3-7.0.0b7/tests/integration/go_ethereum/conftest.py +363 -0
  170. web3-7.0.0b7/tests/integration/go_ethereum/test_goethereum_http.py +156 -0
  171. web3-7.0.0b7/tests/integration/go_ethereum/test_goethereum_ipc.py +115 -0
  172. web3-7.0.0b7/tests/integration/go_ethereum/test_goethereum_legacy_ws.py +109 -0
  173. web3-7.0.0b7/tests/integration/go_ethereum/test_goethereum_ws/conftest.py +48 -0
  174. web3-7.0.0b7/tests/integration/go_ethereum/test_goethereum_ws/test_async_await_w3.py +73 -0
  175. web3-7.0.0b7/tests/integration/go_ethereum/test_goethereum_ws/test_async_ctx_manager_w3.py +74 -0
  176. web3-7.0.0b7/tests/integration/go_ethereum/test_goethereum_ws/test_async_iterator_w3.py +74 -0
  177. web3-7.0.0b7/tests/integration/go_ethereum/utils.py +77 -0
  178. web3-7.0.0b7/tests/integration/test_ethereum_tester.py +678 -0
  179. web3-7.0.0b7/tests/utils.py +87 -0
  180. {web3-7.0.0b5 → web3-7.0.0b7}/web3/__init__.py +21 -5
  181. web3-7.0.0b7/web3/_utils/batching.py +217 -0
  182. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/caching.py +26 -2
  183. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/compat/__init__.py +1 -0
  184. web3-7.0.0b7/web3/_utils/contract_sources/contract_data/arrays_contract.py +97 -0
  185. web3-7.0.0b7/web3/_utils/contract_sources/contract_data/bytes_contracts.py +79 -0
  186. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/contract_sources/contract_data/constructor_contracts.py +7 -7
  187. web3-7.0.0b7/web3/_utils/contract_sources/contract_data/contract_caller_tester.py +59 -0
  188. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/contract_sources/contract_data/emitter_contract.py +3 -3
  189. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/contract_sources/contract_data/event_contracts.py +5 -5
  190. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/contract_sources/contract_data/extended_resolver.py +3 -3
  191. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/contract_sources/contract_data/fallback_function_contract.py +3 -3
  192. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/contract_sources/contract_data/function_name_tester_contract.py +3 -3
  193. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/contract_sources/contract_data/math_contract.py +3 -3
  194. web3-7.0.0b7/web3/_utils/contract_sources/contract_data/offchain_lookup.py +52 -0
  195. web3-7.0.0b7/web3/_utils/contract_sources/contract_data/offchain_resolver.py +100 -0
  196. web3-7.0.0b7/web3/_utils/contract_sources/contract_data/panic_errors_contract.py +99 -0
  197. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/contract_sources/contract_data/payable_tester.py +3 -3
  198. web3-7.0.0b7/web3/_utils/contract_sources/contract_data/receive_function_contracts.py +58 -0
  199. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/contract_sources/contract_data/reflector_contracts.py +3 -3
  200. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/contract_sources/contract_data/revert_contract.py +3 -3
  201. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/contract_sources/contract_data/simple_resolver.py +3 -3
  202. web3-7.0.0b7/web3/_utils/contract_sources/contract_data/storage_contract.py +50 -0
  203. web3-7.0.0b7/web3/_utils/contract_sources/contract_data/string_contract.py +42 -0
  204. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/contract_sources/contract_data/tuple_contracts.py +5 -5
  205. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/events.py +2 -2
  206. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/http.py +3 -0
  207. web3-7.0.0b7/web3/_utils/http_session_manager.py +280 -0
  208. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/method_formatters.py +0 -2
  209. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/module_testing/eth_module.py +92 -119
  210. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/module_testing/module_testing_utils.py +27 -9
  211. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/module_testing/persistent_connection_provider.py +1 -0
  212. web3-7.0.0b7/web3/_utils/module_testing/web3_module.py +736 -0
  213. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/rpc_abi.py +0 -3
  214. {web3-7.0.0b5 → web3-7.0.0b7}/web3/beacon/__init__.py +5 -0
  215. {web3-7.0.0b5 → web3-7.0.0b7}/web3/beacon/async_beacon.py +9 -5
  216. {web3-7.0.0b5 → web3-7.0.0b7}/web3/beacon/beacon.py +7 -5
  217. {web3-7.0.0b5 → web3-7.0.0b7}/web3/contract/__init__.py +7 -0
  218. {web3-7.0.0b5 → web3-7.0.0b7}/web3/contract/base_contract.py +10 -1
  219. {web3-7.0.0b5 → web3-7.0.0b7}/web3/contract/utils.py +112 -4
  220. {web3-7.0.0b5 → web3-7.0.0b7}/web3/eth/__init__.py +7 -0
  221. {web3-7.0.0b5 → web3-7.0.0b7}/web3/eth/async_eth.py +5 -37
  222. {web3-7.0.0b5 → web3-7.0.0b7}/web3/eth/eth.py +7 -57
  223. {web3-7.0.0b5 → web3-7.0.0b7}/web3/exceptions.py +20 -0
  224. {web3-7.0.0b5 → web3-7.0.0b7}/web3/gas_strategies/time_based.py +2 -2
  225. {web3-7.0.0b5 → web3-7.0.0b7}/web3/main.py +21 -9
  226. {web3-7.0.0b5 → web3-7.0.0b7}/web3/manager.py +113 -8
  227. {web3-7.0.0b5 → web3-7.0.0b7}/web3/method.py +29 -9
  228. {web3-7.0.0b5 → web3-7.0.0b7}/web3/middleware/__init__.py +17 -0
  229. {web3-7.0.0b5 → web3-7.0.0b7}/web3/middleware/base.py +43 -0
  230. {web3-7.0.0b5 → web3-7.0.0b7}/web3/module.py +47 -7
  231. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/__init__.py +21 -0
  232. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/async_base.py +55 -23
  233. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/base.py +59 -26
  234. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/eth_tester/__init__.py +5 -0
  235. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/eth_tester/defaults.py +0 -6
  236. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/eth_tester/middleware.py +3 -8
  237. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/ipc.py +23 -8
  238. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/legacy_websocket.py +26 -1
  239. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/persistent/__init__.py +7 -0
  240. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/persistent/async_ipc.py +60 -76
  241. web3-7.0.0b7/web3/providers/persistent/persistent.py +232 -0
  242. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/persistent/request_processor.py +98 -14
  243. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/persistent/websocket.py +43 -66
  244. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/rpc/__init__.py +5 -0
  245. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/rpc/async_rpc.py +34 -12
  246. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/rpc/rpc.py +34 -12
  247. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/rpc/utils.py +0 -3
  248. web3-7.0.0b7/web3/py.typed +0 -0
  249. web3-7.0.0b7/web3/scripts/__init__.py +0 -0
  250. web3-7.0.0b7/web3/scripts/release/__init__.py +0 -0
  251. web3-7.0.0b7/web3/tools/benchmark/__init__.py +0 -0
  252. {web3-7.0.0b5 → web3-7.0.0b7}/web3/tools/benchmark/main.py +7 -6
  253. {web3-7.0.0b5 → web3-7.0.0b7}/web3/tools/benchmark/node.py +1 -1
  254. {web3-7.0.0b5 → web3-7.0.0b7}/web3/types.py +7 -1
  255. web3-7.0.0b7/web3/utils/__init__.py +28 -0
  256. {web3-7.0.0b5 → web3-7.0.0b7}/web3/utils/async_exception_handling.py +19 -7
  257. {web3-7.0.0b5 → web3-7.0.0b7}/web3/utils/exception_handling.py +7 -5
  258. {web3-7.0.0b5 → web3-7.0.0b7/web3.egg-info}/PKG-INFO +37 -23
  259. web3-7.0.0b7/web3.egg-info/SOURCES.txt +350 -0
  260. {web3-7.0.0b5 → web3-7.0.0b7}/web3.egg-info/requires.txt +25 -15
  261. web3-7.0.0b5/MANIFEST.in +0 -7
  262. web3-7.0.0b5/web3/_utils/contract_sources/contract_data/address_reflector.py +0 -29
  263. web3-7.0.0b5/web3/_utils/contract_sources/contract_data/arrays_contract.py +0 -97
  264. web3-7.0.0b5/web3/_utils/contract_sources/contract_data/bytes_contracts.py +0 -79
  265. web3-7.0.0b5/web3/_utils/contract_sources/contract_data/contract_caller_tester.py +0 -59
  266. web3-7.0.0b5/web3/_utils/contract_sources/contract_data/offchain_lookup.py +0 -52
  267. web3-7.0.0b5/web3/_utils/contract_sources/contract_data/offchain_resolver.py +0 -100
  268. web3-7.0.0b5/web3/_utils/contract_sources/contract_data/panic_errors_contract.py +0 -99
  269. web3-7.0.0b5/web3/_utils/contract_sources/contract_data/receive_function_contracts.py +0 -58
  270. web3-7.0.0b5/web3/_utils/contract_sources/contract_data/storage_contract.py +0 -50
  271. web3-7.0.0b5/web3/_utils/contract_sources/contract_data/string_contract.py +0 -42
  272. web3-7.0.0b5/web3/_utils/module_testing/web3_module.py +0 -315
  273. web3-7.0.0b5/web3/_utils/request.py +0 -265
  274. web3-7.0.0b5/web3/providers/persistent/persistent.py +0 -108
  275. web3-7.0.0b5/web3/utils/__init__.py +0 -19
  276. web3-7.0.0b5/web3.egg-info/SOURCES.txt +0 -173
  277. {web3-7.0.0b5 → web3-7.0.0b7}/ens/_normalization.py +0 -0
  278. {web3-7.0.0b5 → web3-7.0.0b7}/ens/abis.py +0 -0
  279. {web3-7.0.0b5 → web3-7.0.0b7}/ens/async_ens.py +0 -0
  280. {web3-7.0.0b5 → web3-7.0.0b7}/ens/auto.py +0 -0
  281. {web3-7.0.0b5 → web3-7.0.0b7}/ens/base_ens.py +0 -0
  282. {web3-7.0.0b5 → web3-7.0.0b7}/ens/constants.py +0 -0
  283. {web3-7.0.0b5 → web3-7.0.0b7}/ens/contract_data.py +0 -0
  284. {web3-7.0.0b5 → web3-7.0.0b7}/ens/ens.py +0 -0
  285. {web3-7.0.0b5 → web3-7.0.0b7}/ens/exceptions.py +0 -0
  286. {web3-7.0.0b5 → web3-7.0.0b7}/ens/specs/nf.json +0 -0
  287. {web3-7.0.0b5 → web3-7.0.0b7}/ens/specs/normalization_spec.json +0 -0
  288. {web3-7.0.0b5 → web3-7.0.0b7}/ens/utils.py +0 -0
  289. {web3-7.0.0b5 → web3-7.0.0b7}/pyproject.toml +8 -8
  290. {web3-7.0.0b5 → web3-7.0.0b7}/setup.cfg +0 -0
  291. {web3-7.0.0b5/web3/_utils → web3-7.0.0b7/tests}/__init__.py +0 -0
  292. {web3-7.0.0b5/web3/_utils/contract_sources → web3-7.0.0b7/tests/core/utilities}/__init__.py +0 -0
  293. {web3-7.0.0b5/web3/_utils/contract_sources/contract_data → web3-7.0.0b7/tests/integration/go_ethereum}/__init__.py +0 -0
  294. {web3-7.0.0b5/web3/gas_strategies → web3-7.0.0b7/tests/integration/go_ethereum/test_goethereum_ws}/__init__.py +0 -0
  295. {web3-7.0.0b5/web3/scripts → web3-7.0.0b7/web3/_utils}/__init__.py +0 -0
  296. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/abi.py +0 -0
  297. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/async_caching.py +0 -0
  298. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/async_transactions.py +0 -0
  299. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/blocks.py +0 -0
  300. {web3-7.0.0b5/web3/scripts/release → web3-7.0.0b7/web3/_utils/contract_sources}/__init__.py +0 -0
  301. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/contract_sources/compile_contracts.py +0 -0
  302. {web3-7.0.0b5/web3/tools/benchmark → web3-7.0.0b7/web3/_utils/contract_sources/contract_data}/__init__.py +0 -0
  303. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/contract_sources/contract_data/_custom_contract_data.py +0 -0
  304. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/contracts.py +0 -0
  305. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/datatypes.py +0 -0
  306. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/decorators.py +0 -0
  307. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/empty.py +0 -0
  308. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/encoding.py +0 -0
  309. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/ens.py +0 -0
  310. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/error_formatters_utils.py +0 -0
  311. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/fee_utils.py +0 -0
  312. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/filters.py +0 -0
  313. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/formatters.py +0 -0
  314. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/function_identifiers.py +0 -0
  315. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/hypothesis.py +0 -0
  316. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/math.py +0 -0
  317. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/module.py +0 -0
  318. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/module_testing/__init__.py +0 -0
  319. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/module_testing/go_ethereum_admin_module.py +0 -0
  320. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/module_testing/go_ethereum_txpool_module.py +0 -0
  321. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/module_testing/net_module.py +0 -0
  322. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/module_testing/utils.py +0 -0
  323. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/normalizers.py +0 -0
  324. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/threads.py +0 -0
  325. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/transactions.py +0 -0
  326. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/type_conversion.py +0 -0
  327. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/utility_methods.py +0 -0
  328. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/validation.py +0 -0
  329. {web3-7.0.0b5 → web3-7.0.0b7}/web3/_utils/windows.py +0 -0
  330. {web3-7.0.0b5 → web3-7.0.0b7}/web3/auto/__init__.py +0 -0
  331. {web3-7.0.0b5 → web3-7.0.0b7}/web3/auto/gethdev.py +0 -0
  332. {web3-7.0.0b5 → web3-7.0.0b7}/web3/beacon/api_endpoints.py +0 -0
  333. {web3-7.0.0b5 → web3-7.0.0b7}/web3/constants.py +0 -0
  334. {web3-7.0.0b5 → web3-7.0.0b7}/web3/contract/async_contract.py +0 -0
  335. {web3-7.0.0b5 → web3-7.0.0b7}/web3/contract/contract.py +0 -0
  336. {web3-7.0.0b5 → web3-7.0.0b7}/web3/datastructures.py +0 -0
  337. {web3-7.0.0b5 → web3-7.0.0b7}/web3/eth/base_eth.py +0 -0
  338. /web3-7.0.0b5/web3/py.typed → /web3-7.0.0b7/web3/gas_strategies/__init__.py +0 -0
  339. {web3-7.0.0b5 → web3-7.0.0b7}/web3/gas_strategies/rpc.py +0 -0
  340. {web3-7.0.0b5 → web3-7.0.0b7}/web3/geth.py +0 -0
  341. {web3-7.0.0b5 → web3-7.0.0b7}/web3/logs.py +0 -0
  342. {web3-7.0.0b5 → web3-7.0.0b7}/web3/middleware/attrdict.py +0 -0
  343. {web3-7.0.0b5 → web3-7.0.0b7}/web3/middleware/buffered_gas_estimate.py +0 -0
  344. {web3-7.0.0b5 → web3-7.0.0b7}/web3/middleware/filter.py +0 -0
  345. {web3-7.0.0b5 → web3-7.0.0b7}/web3/middleware/formatting.py +0 -0
  346. {web3-7.0.0b5 → web3-7.0.0b7}/web3/middleware/gas_price_strategy.py +0 -0
  347. {web3-7.0.0b5 → web3-7.0.0b7}/web3/middleware/names.py +0 -0
  348. {web3-7.0.0b5 → web3-7.0.0b7}/web3/middleware/proof_of_authority.py +0 -0
  349. {web3-7.0.0b5 → web3-7.0.0b7}/web3/middleware/pythonic.py +0 -0
  350. {web3-7.0.0b5 → web3-7.0.0b7}/web3/middleware/signing.py +0 -0
  351. {web3-7.0.0b5 → web3-7.0.0b7}/web3/middleware/stalecheck.py +0 -0
  352. {web3-7.0.0b5 → web3-7.0.0b7}/web3/middleware/validation.py +0 -0
  353. {web3-7.0.0b5 → web3-7.0.0b7}/web3/net.py +0 -0
  354. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/auto.py +0 -0
  355. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/eth_tester/main.py +0 -0
  356. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/persistent/persistent_connection.py +0 -0
  357. {web3-7.0.0b5 → web3-7.0.0b7}/web3/providers/persistent/utils.py +0 -0
  358. {web3-7.0.0b5 → web3-7.0.0b7}/web3/scripts/release/test_package.py +0 -0
  359. {web3-7.0.0b5 → web3-7.0.0b7}/web3/testing.py +0 -0
  360. {web3-7.0.0b5 → web3-7.0.0b7}/web3/tools/benchmark/reporting.py +0 -0
  361. {web3-7.0.0b5 → web3-7.0.0b7}/web3/tools/benchmark/utils.py +0 -0
  362. {web3-7.0.0b5 → web3-7.0.0b7}/web3/tracing.py +0 -0
  363. {web3-7.0.0b5 → web3-7.0.0b7}/web3/utils/abi.py +0 -0
  364. {web3-7.0.0b5 → web3-7.0.0b7}/web3/utils/address.py +0 -0
  365. {web3-7.0.0b5 → web3-7.0.0b7}/web3/utils/caching.py +0 -0
  366. {web3-7.0.0b5 → web3-7.0.0b7}/web3.egg-info/dependency_links.txt +0 -0
  367. {web3-7.0.0b5 → web3-7.0.0b7}/web3.egg-info/not-zip-safe +0 -0
  368. {web3-7.0.0b5 → web3-7.0.0b7}/web3.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2016 The Ethereum Foundation
3
+ Copyright (c) 2016-2024 The Ethereum Foundation
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,13 @@
1
+ include LICENSE
2
+ include README.md
3
+
4
+ recursive-include ens/specs *
5
+ recursive-include scripts *
6
+ recursive-include tests *
7
+
8
+ global-include *.pyi
9
+
10
+ recursive-exclude * __pycache__
11
+ recursive-exclude * *.py[co]
12
+ prune .tox
13
+ prune venv*
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: web3
3
- Version: 7.0.0b5
4
- Summary: web3.py
3
+ Version: 7.0.0b7
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
7
7
  Author-email: snakecharmers@ethereum.org
@@ -16,7 +16,8 @@ Classifier: Programming Language :: Python :: 3.8
16
16
  Classifier: Programming Language :: Python :: 3.9
17
17
  Classifier: Programming Language :: Python :: 3.10
18
18
  Classifier: Programming Language :: Python :: 3.11
19
- Requires-Python: >=3.8
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Requires-Python: >=3.8, <4
20
21
  Description-Content-Type: text/markdown
21
22
  License-File: LICENSE
22
23
  Requires-Dist: aiohttp>=3.7.4.post0
@@ -32,39 +33,52 @@ Requires-Dist: requests>=2.16.0
32
33
  Requires-Dist: typing-extensions>=4.0.1
33
34
  Requires-Dist: websockets>=10.0.0
34
35
  Requires-Dist: pyunormalize>=15.0.0
35
- Provides-Extra: tester
36
- Requires-Dist: eth-tester[py-evm]<0.12.0b1,>=0.11.0b1; extra == "tester"
37
- Requires-Dist: py-geth>=4.1.0; extra == "tester"
38
- Provides-Extra: docs
39
- Requires-Dist: sphinx>=5.3.0; extra == "docs"
40
- Requires-Dist: sphinx_rtd_theme>=1.0.0; extra == "docs"
41
- Requires-Dist: towncrier<22,>=21; extra == "docs"
42
36
  Provides-Extra: dev
43
- Requires-Dist: eth-tester[py-evm]<0.12.0b1,>=0.11.0b1; extra == "dev"
44
- Requires-Dist: py-geth>=4.1.0; extra == "dev"
45
- Requires-Dist: sphinx>=5.3.0; extra == "dev"
46
- Requires-Dist: sphinx_rtd_theme>=1.0.0; extra == "dev"
47
- Requires-Dist: towncrier<22,>=21; extra == "dev"
48
37
  Requires-Dist: build>=0.9.0; extra == "dev"
49
- Requires-Dist: bumpversion; extra == "dev"
38
+ Requires-Dist: bumpversion>=0.5.3; extra == "dev"
50
39
  Requires-Dist: flaky>=3.7.0; extra == "dev"
51
40
  Requires-Dist: hypothesis>=3.31.2; extra == "dev"
41
+ Requires-Dist: ipython; extra == "dev"
52
42
  Requires-Dist: pre-commit>=3.4.0; extra == "dev"
53
- Requires-Dist: pytest-asyncio<0.23,>=0.18.1; extra == "dev"
43
+ Requires-Dist: pytest-asyncio<0.23,>=0.21.2; extra == "dev"
54
44
  Requires-Dist: pytest-mock>=1.10; extra == "dev"
55
- Requires-Dist: pytest-watch>=4.2; extra == "dev"
56
- Requires-Dist: pytest-xdist>=1.29; extra == "dev"
57
- Requires-Dist: pytest>=7.0.0; extra == "dev"
58
45
  Requires-Dist: setuptools>=38.6.0; extra == "dev"
59
- Requires-Dist: tox>=3.18.0; extra == "dev"
46
+ Requires-Dist: tox>=4.0.0; extra == "dev"
60
47
  Requires-Dist: tqdm>4.32; extra == "dev"
61
48
  Requires-Dist: twine>=1.13; extra == "dev"
49
+ Requires-Dist: wheel; extra == "dev"
50
+ Requires-Dist: sphinx>=6.0.0; extra == "dev"
51
+ Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "dev"
52
+ Requires-Dist: sphinx_rtd_theme>=1.0.0; extra == "dev"
53
+ Requires-Dist: towncrier<22,>=21; extra == "dev"
54
+ Requires-Dist: eth-account>=0.13.0; extra == "dev"
55
+ Requires-Dist: eth-tester[py-evm]<0.13.0b1,>=0.11.0b1; extra == "dev"
56
+ Requires-Dist: py-geth>=5.0.0b1; extra == "dev"
57
+ Requires-Dist: pytest-asyncio<0.23,>=0.18.1; extra == "dev"
58
+ Requires-Dist: pytest-mock>=1.10; extra == "dev"
59
+ Requires-Dist: pytest-xdist>=2.4.0; extra == "dev"
60
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
61
+ Provides-Extra: docs
62
+ Requires-Dist: sphinx>=6.0.0; extra == "docs"
63
+ Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "docs"
64
+ Requires-Dist: sphinx_rtd_theme>=1.0.0; extra == "docs"
65
+ Requires-Dist: towncrier<22,>=21; extra == "docs"
66
+ Requires-Dist: eth-account>=0.13.0; extra == "docs"
67
+ Provides-Extra: test
68
+ Requires-Dist: eth-tester[py-evm]<0.13.0b1,>=0.11.0b1; extra == "test"
69
+ Requires-Dist: py-geth>=5.0.0b1; extra == "test"
70
+ Requires-Dist: pytest-asyncio<0.23,>=0.18.1; extra == "test"
71
+ Requires-Dist: pytest-mock>=1.10; extra == "test"
72
+ Requires-Dist: pytest-xdist>=2.4.0; extra == "test"
73
+ Requires-Dist: pytest>=7.0.0; extra == "test"
62
74
 
63
75
  # web3.py
64
76
 
65
- [![Documentation Status](https://readthedocs.org/projects/web3py/badge/?version=latest)](https://web3py.readthedocs.io/en/latest/?badge=latest)
66
- [![Discord](https://img.shields.io/discord/809793915578089484?color=blue&label=chat&logo=discord&logoColor=white)](https://discord.gg/GHryRvPB84)
77
+ [![Join the conversation on Discord](https://img.shields.io/discord/809793915578089484?color=blue&label=chat&logo=discord&logoColor=white)](https://discord.gg/GHryRvPB84)
67
78
  [![Build Status](https://circleci.com/gh/ethereum/web3.py.svg?style=shield)](https://circleci.com/gh/ethereum/web3.py)
79
+ [![PyPI version](https://badge.fury.io/py/web3.svg)](https://badge.fury.io/py/web3)
80
+ [![Python versions](https://img.shields.io/pypi/pyversions/web3.svg)](https://pypi.python.org/pypi/web3)
81
+ [![Docs build](https://readthedocs.org/projects/web3py/badge/?version=latest)](https://web3py.readthedocs.io/en/latest/?badge=latest)
68
82
 
69
83
  A Python library for interacting with Ethereum.
70
84
 
@@ -1,8 +1,10 @@
1
1
  # web3.py
2
2
 
3
- [![Documentation Status](https://readthedocs.org/projects/web3py/badge/?version=latest)](https://web3py.readthedocs.io/en/latest/?badge=latest)
4
- [![Discord](https://img.shields.io/discord/809793915578089484?color=blue&label=chat&logo=discord&logoColor=white)](https://discord.gg/GHryRvPB84)
3
+ [![Join the conversation on Discord](https://img.shields.io/discord/809793915578089484?color=blue&label=chat&logo=discord&logoColor=white)](https://discord.gg/GHryRvPB84)
5
4
  [![Build Status](https://circleci.com/gh/ethereum/web3.py.svg?style=shield)](https://circleci.com/gh/ethereum/web3.py)
5
+ [![PyPI version](https://badge.fury.io/py/web3.svg)](https://badge.fury.io/py/web3)
6
+ [![Python versions](https://img.shields.io/pypi/pyversions/web3.svg)](https://pypi.python.org/pypi/web3)
7
+ [![Docs build](https://readthedocs.org/projects/web3py/badge/?version=latest)](https://web3py.readthedocs.io/en/latest/?badge=latest)
6
8
 
7
9
  A Python library for interacting with Ethereum.
8
10
 
@@ -1,5 +1,3 @@
1
- # flake8: noqa
2
-
3
1
  from .async_ens import (
4
2
  AsyncENS,
5
3
  )
@@ -18,3 +16,16 @@ from .exceptions import (
18
16
  UnderfundedBid,
19
17
  UnownedName,
20
18
  )
19
+
20
+ __all__ = [
21
+ "AsyncENS",
22
+ "BaseENS",
23
+ "ENS",
24
+ "AddressMismatch",
25
+ "BidTooLow",
26
+ "InvalidLabel",
27
+ "InvalidName",
28
+ "UnauthorizedError",
29
+ "UnderfundedBid",
30
+ "UnownedName",
31
+ ]
@@ -5,47 +5,56 @@ from setuptools import (
5
5
  )
6
6
 
7
7
  extras_require = {
8
- "tester": [
9
- "eth-tester[py-evm]>=0.11.0b1,<0.12.0b1",
10
- "py-geth>=4.1.0",
11
- ],
12
- "docs": [
13
- "sphinx>=5.3.0",
14
- "sphinx_rtd_theme>=1.0.0",
15
- "towncrier>=21,<22",
16
- ],
17
8
  "dev": [
18
9
  "build>=0.9.0",
19
- "bumpversion",
10
+ "bumpversion>=0.5.3",
20
11
  "flaky>=3.7.0",
21
12
  "hypothesis>=3.31.2",
13
+ "ipython",
22
14
  "pre-commit>=3.4.0",
23
- "pytest-asyncio>=0.18.1,<0.23",
15
+ "pytest-asyncio>=0.21.2,<0.23",
24
16
  "pytest-mock>=1.10",
25
- "pytest-watch>=4.2",
26
- "pytest-xdist>=1.29",
27
- "pytest>=7.0.0",
28
17
  "setuptools>=38.6.0",
29
- "tox>=3.18.0",
18
+ "tox>=4.0.0",
30
19
  "tqdm>4.32",
31
20
  "twine>=1.13",
21
+ "wheel",
22
+ ],
23
+ "docs": [
24
+ "sphinx>=6.0.0",
25
+ "sphinx-autobuild>=2021.3.14",
26
+ "sphinx_rtd_theme>=1.0.0",
27
+ "towncrier>=21,<22",
28
+ # web3 will work but emit warnings with eth-account>=0.12.2,
29
+ # but doctests fail between 0.12.2 and 0.13.0
30
+ "eth-account>=0.13.0",
31
+ ],
32
+ "test": [
33
+ "eth-tester[py-evm]>=0.11.0b1,<0.13.0b1",
34
+ "py-geth>=5.0.0b1",
35
+ "pytest-asyncio>=0.18.1,<0.23",
36
+ "pytest-mock>=1.10",
37
+ "pytest-xdist>=2.4.0",
38
+ "pytest>=7.0.0",
32
39
  ],
33
40
  }
34
41
 
35
42
  extras_require["dev"] = (
36
- extras_require["tester"] + extras_require["docs"] + extras_require["dev"]
43
+ extras_require["dev"] + extras_require["docs"] + extras_require["test"]
37
44
  )
38
45
 
46
+
39
47
  with open("./README.md") as readme:
40
48
  long_description = readme.read()
41
49
 
50
+
42
51
  setup(
43
52
  name="web3",
44
- # *IMPORTANT*: Don't manually change the version here. Use the 'bumpversion' utility.
45
- version="7.0.0-beta.5",
46
- description="""web3.py""",
47
- long_description_content_type="text/markdown",
53
+ # *IMPORTANT*: Don't manually change the version here. Use `make bump`, as described in readme
54
+ version="7.0.0-beta.7",
55
+ description="""web3: A Python library for interacting with Ethereum""",
48
56
  long_description=long_description,
57
+ long_description_content_type="text/markdown",
49
58
  author="The Ethereum Foundation",
50
59
  author_email="snakecharmers@ethereum.org",
51
60
  url="https://github.com/ethereum/web3.py",
@@ -65,13 +74,13 @@ setup(
65
74
  "websockets>=10.0.0",
66
75
  "pyunormalize>=15.0.0",
67
76
  ],
68
- python_requires=">=3.8",
77
+ python_requires=">=3.8, <4",
69
78
  extras_require=extras_require,
70
79
  py_modules=["web3", "ens"],
71
80
  license="MIT",
72
81
  zip_safe=False,
73
82
  keywords="ethereum",
74
- packages=find_packages(exclude=["tests", "tests.*"]),
83
+ packages=find_packages(exclude=["scripts", "scripts.*", "tests", "tests.*"]),
75
84
  package_data={"web3": ["py.typed"]},
76
85
  classifiers=[
77
86
  "Development Status :: 5 - Production/Stable",
@@ -83,5 +92,6 @@ setup(
83
92
  "Programming Language :: Python :: 3.9",
84
93
  "Programming Language :: Python :: 3.10",
85
94
  "Programming Language :: Python :: 3.11",
95
+ "Programming Language :: Python :: 3.12",
86
96
  ],
87
97
  )
Binary file
@@ -0,0 +1,269 @@
1
+ import pytest
2
+ from random import (
3
+ randint,
4
+ )
5
+
6
+ from aiohttp.client_exceptions import (
7
+ InvalidURL,
8
+ )
9
+ import pytest_asyncio
10
+
11
+ from web3.beacon import (
12
+ AsyncBeacon,
13
+ )
14
+
15
+ # tested against lighthouse which uses port 5052 by default
16
+ BASE_URL = "http://localhost:5052"
17
+
18
+
19
+ def _assert_valid_response(response):
20
+ # assert valid response according to Beacon API spec
21
+ assert isinstance(response, dict)
22
+ assert "data" in response
23
+
24
+
25
+ @pytest.fixture
26
+ def async_beacon():
27
+ return AsyncBeacon(base_url=BASE_URL, request_timeout=30.0)
28
+
29
+
30
+ @pytest_asyncio.fixture(autouse=True)
31
+ async def _cleanup(async_beacon):
32
+ yield
33
+ [
34
+ await session.close()
35
+ for _, session in async_beacon._request_session_manager.session_cache.items()
36
+ ]
37
+
38
+
39
+ # sanity check to make sure the positive test cases are valid
40
+ @pytest.mark.asyncio
41
+ async def test_async_cl_beacon_raises_exception_on_invalid_url(async_beacon):
42
+ with pytest.raises(InvalidURL):
43
+ await async_beacon._async_make_get_request(
44
+ BASE_URL + "/eth/v1/beacon/nonexistent"
45
+ )
46
+
47
+
48
+ @pytest.mark.asyncio
49
+ async def test_async_beacon_user_request_timeout():
50
+ beacon = AsyncBeacon(base_url=BASE_URL, request_timeout=0.001)
51
+ with pytest.raises(TimeoutError):
52
+ await beacon.get_validators()
53
+
54
+
55
+ # Beacon endpoint tests:
56
+
57
+
58
+ @pytest.mark.asyncio
59
+ async def test_async_cl_beacon_get_genesis(async_beacon):
60
+ response = await async_beacon.get_genesis()
61
+ _assert_valid_response(response)
62
+
63
+
64
+ @pytest.mark.asyncio
65
+ async def test_async_cl_beacon_get_hash_root(async_beacon):
66
+ response = await async_beacon.get_hash_root()
67
+ _assert_valid_response(response)
68
+
69
+
70
+ @pytest.mark.asyncio
71
+ async def test_async_cl_beacon_get_fork_data(async_beacon):
72
+ response = await async_beacon.get_fork_data()
73
+ _assert_valid_response(response)
74
+
75
+
76
+ @pytest.mark.asyncio
77
+ async def test_async_cl_beacon_get_finality_checkpoint(async_beacon):
78
+ response = await async_beacon.get_finality_checkpoint()
79
+ _assert_valid_response(response)
80
+
81
+
82
+ @pytest.mark.asyncio
83
+ async def test_async_cl_beacon_get_validators(async_beacon):
84
+ response = await async_beacon.get_validators()
85
+ _assert_valid_response(response)
86
+
87
+
88
+ @pytest.mark.asyncio
89
+ async def test_async_cl_beacon_get_validator(async_beacon):
90
+ validators_response = await async_beacon.get_validators()
91
+ _assert_valid_response(validators_response)
92
+
93
+ validators = validators_response["data"]
94
+ random_validator = validators[randint(0, len(validators))]
95
+ random_validator_pubkey = random_validator["validator"]["pubkey"]
96
+
97
+ response = await async_beacon.get_validator(random_validator_pubkey)
98
+ _assert_valid_response(response)
99
+
100
+
101
+ @pytest.mark.asyncio
102
+ async def test_async_cl_beacon_get_validator_balances(async_beacon):
103
+ response = await async_beacon.get_validator_balances()
104
+ _assert_valid_response(response)
105
+
106
+
107
+ @pytest.mark.asyncio
108
+ async def test_async_cl_beacon_get_epoch_committees(async_beacon):
109
+ response = await async_beacon.get_epoch_committees()
110
+ _assert_valid_response(response)
111
+
112
+
113
+ @pytest.mark.asyncio
114
+ async def test_async_cl_beacon_get_epoch_sync_committees(async_beacon):
115
+ response = await async_beacon.get_epoch_sync_committees()
116
+ _assert_valid_response(response)
117
+
118
+
119
+ @pytest.mark.asyncio
120
+ async def test_async_cl_beacon_get_epoch_randao(async_beacon):
121
+ response = await async_beacon.get_epoch_randao()
122
+ _assert_valid_response(response)
123
+
124
+
125
+ @pytest.mark.asyncio
126
+ async def test_async_cl_beacon_get_block_headers(async_beacon):
127
+ response = await async_beacon.get_block_headers()
128
+ _assert_valid_response(response)
129
+
130
+
131
+ @pytest.mark.asyncio
132
+ async def test_async_cl_beacon_get_block_header(async_beacon):
133
+ response = await async_beacon.get_block_header("head")
134
+ _assert_valid_response(response)
135
+
136
+
137
+ @pytest.mark.asyncio
138
+ async def test_async_cl_beacon_get_block(async_beacon):
139
+ response = await async_beacon.get_block("head")
140
+ _assert_valid_response(response)
141
+
142
+
143
+ @pytest.mark.asyncio
144
+ async def test_async_cl_beacon_get_block_root(async_beacon):
145
+ response = await async_beacon.get_block_root("head")
146
+ _assert_valid_response(response)
147
+
148
+
149
+ @pytest.mark.asyncio
150
+ async def test_async_cl_beacon_get_blinded_blocks(async_beacon):
151
+ response = await async_beacon.get_blinded_blocks("head")
152
+ _assert_valid_response(response)
153
+
154
+
155
+ @pytest.mark.asyncio
156
+ async def test_async_cl_beacon_get_rewards(async_beacon):
157
+ response = await async_beacon.get_rewards("head")
158
+ _assert_valid_response(response)
159
+
160
+
161
+ @pytest.mark.asyncio
162
+ async def test_async_cl_beacon_get_block_attestations(async_beacon):
163
+ response = await async_beacon.get_block_attestations("head")
164
+ _assert_valid_response(response)
165
+
166
+
167
+ @pytest.mark.asyncio
168
+ async def test_async_cl_beacon_get_attestations(async_beacon):
169
+ response = await async_beacon.get_attestations()
170
+ _assert_valid_response(response)
171
+
172
+
173
+ @pytest.mark.asyncio
174
+ async def test_async_cl_beacon_get_attester_slashings(async_beacon):
175
+ response = await async_beacon.get_attester_slashings()
176
+ _assert_valid_response(response)
177
+
178
+
179
+ @pytest.mark.asyncio
180
+ async def test_async_cl_beacon_get_proposer_slashings(async_beacon):
181
+ response = await async_beacon.get_proposer_slashings()
182
+ _assert_valid_response(response)
183
+
184
+
185
+ @pytest.mark.asyncio
186
+ async def test_async_cl_beacon_get_voluntary_exits(async_beacon):
187
+ response = await async_beacon.get_voluntary_exits()
188
+ _assert_valid_response(response)
189
+
190
+
191
+ @pytest.mark.asyncio
192
+ async def test_async_cl_beacon_get_bls_to_execution_changes(async_beacon):
193
+ response = await async_beacon.get_bls_to_execution_changes()
194
+ _assert_valid_response(response)
195
+
196
+
197
+ # Config endpoint tests:
198
+
199
+
200
+ @pytest.mark.asyncio
201
+ async def test_async_cl_config_get_fork_schedule(async_beacon):
202
+ response = await async_beacon.get_fork_schedule()
203
+ _assert_valid_response(response)
204
+
205
+
206
+ @pytest.mark.asyncio
207
+ async def test_async_cl_config_get_spec(async_beacon):
208
+ response = await async_beacon.get_spec()
209
+ _assert_valid_response(response)
210
+
211
+
212
+ @pytest.mark.asyncio
213
+ async def test_async_cl_config_get_deposit_contract(async_beacon):
214
+ response = await async_beacon.get_deposit_contract()
215
+ _assert_valid_response(response)
216
+
217
+
218
+ # Debug endpoint tests:
219
+
220
+
221
+ @pytest.mark.asyncio
222
+ async def test_async_cl_debug_get_beacon_state(async_beacon):
223
+ response = await async_beacon.get_beacon_state()
224
+ _assert_valid_response(response)
225
+
226
+
227
+ @pytest.mark.asyncio
228
+ async def test_async_cl_debug_get_beacon_heads(async_beacon):
229
+ response = await async_beacon.get_beacon_heads()
230
+ _assert_valid_response(response)
231
+
232
+
233
+ # Node endpoint tests:
234
+
235
+
236
+ @pytest.mark.asyncio
237
+ async def test_async_cl_node_get_node_identity(async_beacon):
238
+ response = await async_beacon.get_node_identity()
239
+ _assert_valid_response(response)
240
+
241
+
242
+ @pytest.mark.asyncio
243
+ async def test_async_cl_node_get_peers(async_beacon):
244
+ response = await async_beacon.get_peers()
245
+ _assert_valid_response(response)
246
+
247
+
248
+ @pytest.mark.asyncio
249
+ async def test_async_cl_node_get_peer(async_beacon):
250
+ response = await async_beacon.get_peer("")
251
+ _assert_valid_response(response)
252
+
253
+
254
+ @pytest.mark.asyncio
255
+ async def test_async_cl_node_get_health(async_beacon):
256
+ response = await async_beacon.get_health()
257
+ assert isinstance(response, int)
258
+
259
+
260
+ @pytest.mark.asyncio
261
+ async def test_async_cl_node_get_version(async_beacon):
262
+ response = await async_beacon.get_version()
263
+ _assert_valid_response(response)
264
+
265
+
266
+ @pytest.mark.asyncio
267
+ async def test_async_cl_node_get_syncing(async_beacon):
268
+ response = await async_beacon.get_syncing()
269
+ _assert_valid_response(response)