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