web3 7.10.0__tar.gz → 7.11.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {web3-7.10.0/web3.egg-info → web3-7.11.0}/PKG-INFO +5 -5
- {web3-7.10.0 → web3-7.11.0}/ens/exceptions.py +1 -1
- {web3-7.10.0 → web3-7.11.0}/pyproject.toml +1 -1
- {web3-7.10.0 → web3-7.11.0}/setup.py +3 -3
- {web3-7.10.0 → web3-7.11.0}/tests/conftest.py +0 -9
- {web3-7.10.0 → web3-7.11.0}/tests/core/eth-module/test_block_api.py +5 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/eth-module/test_transactions.py +168 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/filtering/test_contract_data_filters.py +8 -5
- {web3-7.10.0 → web3-7.11.0}/tests/core/filtering/test_contract_topic_filters.py +8 -5
- {web3-7.10.0 → web3-7.11.0}/tests/core/filtering/utils.py +2 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/providers/test_async_http_provider.py +18 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/providers/test_http_provider.py +18 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/providers/test_ipc_provider.py +15 -0
- web3-7.11.0/tests/core/providers/test_legacy_websocket_provider.py +29 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/providers/test_websocket_provider.py +56 -0
- {web3-7.10.0 → web3-7.11.0}/tests/integration/common.py +4 -4
- {web3-7.10.0 → web3-7.11.0}/tests/integration/conftest.py +6 -6
- {web3-7.10.0 → web3-7.11.0}/tests/integration/go_ethereum/conftest.py +77 -59
- {web3-7.10.0 → web3-7.11.0}/tests/integration/go_ethereum/test_goethereum_http.py +28 -48
- {web3-7.10.0 → web3-7.11.0}/tests/integration/go_ethereum/test_goethereum_ipc.py +12 -17
- {web3-7.10.0 → web3-7.11.0}/tests/integration/go_ethereum/test_goethereum_legacy_ws.py +9 -26
- {web3-7.10.0 → web3-7.11.0}/tests/integration/go_ethereum/test_goethereum_ws/conftest.py +5 -20
- {web3-7.10.0 → web3-7.11.0}/tests/integration/go_ethereum/test_goethereum_ws/test_async_await_w3.py +8 -7
- {web3-7.10.0 → web3-7.11.0}/tests/integration/go_ethereum/test_goethereum_ws/test_async_ctx_manager_w3.py +6 -7
- {web3-7.10.0 → web3-7.11.0}/tests/integration/go_ethereum/test_goethereum_ws/test_async_iterator_w3.py +8 -7
- {web3-7.10.0 → web3-7.11.0}/tests/integration/go_ethereum/utils.py +0 -26
- {web3-7.10.0 → web3-7.11.0}/tests/integration/test_ethereum_tester.py +19 -19
- {web3-7.10.0 → web3-7.11.0}/tests/utils.py +21 -6
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/batching.py +42 -1
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/encoding.py +8 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/ens.py +9 -1
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/method_formatters.py +56 -7
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/module_testing/eth_module.py +153 -64
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/module_testing/module_testing_utils.py +0 -12
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/module_testing/persistent_connection_provider.py +3 -3
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/normalizers.py +1 -1
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/rpc_abi.py +5 -4
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/utility_methods.py +8 -6
- {web3-7.10.0 → web3-7.11.0}/web3/providers/async_base.py +5 -6
- {web3-7.10.0 → web3-7.11.0}/web3/providers/base.py +5 -5
- {web3-7.10.0 → web3-7.11.0}/web3/providers/eth_tester/middleware.py +20 -0
- {web3-7.10.0 → web3-7.11.0}/web3/providers/ipc.py +2 -0
- {web3-7.10.0 → web3-7.11.0}/web3/providers/legacy_websocket.py +2 -0
- {web3-7.10.0 → web3-7.11.0}/web3/providers/persistent/persistent.py +15 -10
- {web3-7.10.0 → web3-7.11.0}/web3/providers/persistent/request_processor.py +10 -1
- {web3-7.10.0 → web3-7.11.0}/web3/providers/rpc/async_rpc.py +2 -0
- {web3-7.10.0 → web3-7.11.0}/web3/providers/rpc/rpc.py +2 -0
- {web3-7.10.0 → web3-7.11.0}/web3/types.py +27 -0
- {web3-7.10.0 → web3-7.11.0}/web3/utils/caching.py +8 -5
- {web3-7.10.0 → web3-7.11.0/web3.egg-info}/PKG-INFO +5 -5
- {web3-7.10.0 → web3-7.11.0}/web3.egg-info/requires.txt +4 -4
- web3-7.10.0/tests/core/providers/test_legacy_websocket_provider.py +0 -81
- {web3-7.10.0 → web3-7.11.0}/LICENSE +0 -0
- {web3-7.10.0 → web3-7.11.0}/MANIFEST.in +0 -0
- {web3-7.10.0 → web3-7.11.0}/README.md +0 -0
- {web3-7.10.0 → web3-7.11.0}/ens/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/ens/_normalization.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/ens/abis.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/ens/async_ens.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/ens/auto.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/ens/base_ens.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/ens/constants.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/ens/contract_data.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/ens/ens.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/ens/specs/nf.json +0 -0
- {web3-7.10.0 → web3-7.11.0}/ens/specs/normalization_spec.json +0 -0
- {web3-7.10.0 → web3-7.11.0}/ens/utils.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/scripts/release/test_package.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/setup.cfg +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/.DS_Store +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/beacon/test_async_beacon.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/beacon/test_beacon.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/admin-module/test_admin_addPeer.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/admin-module/test_admin_nodeInfo.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/admin-module/test_admin_peers.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/block-utils/test_select_method_for_block_identifier.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/caching-utils/test_generate_cache_key.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/caching-utils/test_request_caching.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/conftest.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/conftest.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_ambiguous_events.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_ambiguous_functions.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_attributes.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_build_transaction.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_call_interface.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_caller_interface.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_class_construction.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_constructor.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_constructor_encoding.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_deployment.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_estimate_gas.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_events.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_events_build_filter.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_example.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_init.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_method_abi_decoding.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_method_abi_encoding.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_method_to_argument_matching.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_panic_errors.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_transact_interface.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_contract_util_functions.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_extracting_event_data.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_extracting_event_data_old.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/test_offchain_lookup.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/contracts/utils.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/datastructures/test_datastructures.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/empty-object/test_empty_object_is_falsy.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/eth-module/conftest.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/eth-module/test_accounts.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/eth-module/test_default_account_api.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/eth-module/test_eth_contract.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/eth-module/test_eth_fee_history.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/eth-module/test_eth_filter.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/eth-module/test_eth_properties.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/eth-module/test_gas_pricing.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/eth-module/test_poa.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/eth-tester-api/test_withdrawals.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/exceptions/test_exceptions.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/filtering/conftest.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/filtering/test_basic_filter_tests.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/filtering/test_contract_create_filter_topic_merging.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/filtering/test_contract_get_logs.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/filtering/test_contract_on_event_filtering.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/filtering/test_contract_past_event_filtering.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/filtering/test_existing_filter_instance.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/filtering/test_filter_against_latest_blocks.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/filtering/test_filter_against_pending_transactions.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/filtering/test_filter_against_transaction_logs.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/filtering/test_filters_against_many_blocks.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/filtering/test_utils_functions.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/gas-strategies/test_rpc_gas_pricing_strategies.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/gas-strategies/test_time_based_gas_price_strategy.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/manager/conftest.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/manager/test_default_middlewares.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/manager/test_middleware_can_be_stateful.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/manager/test_middleware_onion_api.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/manager/test_provider_property.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/manager/test_provider_request_wrapping.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/manager/test_response_formatters.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/method-class/test_method.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/method-class/test_result_formatters.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/middleware/test_attrdict_middleware.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/middleware/test_eth_tester_middleware.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/middleware/test_filter_middleware.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/middleware/test_formatting_middleware.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/middleware/test_gas_price_strategy.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/middleware/test_middleware.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/middleware/test_name_to_address_middleware.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/middleware/test_stalecheck.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/middleware/test_transaction_signing.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/module-class/test_module.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/providers/test_async_ipc_provider.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/providers/test_async_tester_provider.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/providers/test_auto_provider.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/providers/test_base_provider.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/providers/test_http_request_retry.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/providers/test_provider_init.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/providers/test_tester_provider.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/subscriptions/test_subscription_manager.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/subscriptions/test_subscriptions.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/test_library_files.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/testing-module/test_testing_mine.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/testing-module/test_testing_snapshot_and_revert.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/testing-module/test_testing_timeTravel.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/conftest.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_abi.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_abi_filtering_by_argument_name.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_abi_is_encodable.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_abi_named_tree.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_address.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_async_transaction.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_attach_modules.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_attributedict.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_caching_utils.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_construct_event_data_set.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_construct_event_filter_params.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_construct_event_topics.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_datatypes.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_decorators.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_encoding.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_event_filter_builder.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_event_interface.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_fee_utils.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_formatters.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_http_session_manager.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_is_predefined_block_number.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_is_probably_enum.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_is_recognized_type.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_math.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_method_formatters.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_prepare_transaction_replacement.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_select_filter_method.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_threads.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_valid_transaction_params.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/utilities/test_validation.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/web3-module/test_api.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/web3-module/test_attach_modules.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/web3-module/test_client_version.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/web3-module/test_conversions.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/web3-module/test_import_and_version.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/web3-module/test_keccak.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/web3-module/test_providers.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/web3-module/test_strict_bytes_type_checking.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/core/web3-module/test_web3_inheritance.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/ens/conftest.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/ens/normalization/normalization_tests.json +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/ens/normalization/test_normalize_name_ensip15.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/ens/test_ens.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/ens/test_get_registry.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/ens/test_get_text.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/ens/test_nameprep.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/ens/test_offchain_resolution.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/ens/test_setup_address.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/ens/test_setup_name.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/ens/test_utils.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/ens/test_wildcard_resolution.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/integration/.DS_Store +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/integration/README.md +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/integration/generate_fixtures/common.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/integration/generate_fixtures/go_ethereum.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/integration/geth-1.15.5-fixture.zip +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/integration/go_ethereum/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/integration/go_ethereum/common.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/tests/integration/go_ethereum/test_goethereum_ws/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/abi.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/abi_element_identifiers.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/async_caching.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/async_transactions.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/blocks.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/caching/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/caching/caching_utils.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/caching/request_caching_validation.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/compat/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/compile_contracts.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/_custom_contract_data.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/ambiguous_function_contract.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/arrays_contract.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/bytes_contracts.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/constructor_contracts.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/contract_caller_tester.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/emitter_contract.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/event_contracts.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/extended_resolver.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/fallback_function_contract.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/function_name_tester_contract.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/math_contract.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/offchain_lookup.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/offchain_resolver.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/panic_errors_contract.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/payable_tester.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/receive_function_contracts.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/reflector_contracts.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/revert_contract.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/simple_resolver.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/storage_contract.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/string_contract.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contract_sources/contract_data/tuple_contracts.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/contracts.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/datatypes.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/decorators.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/empty.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/error_formatters_utils.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/events.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/fee_utils.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/filters.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/formatters.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/http.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/http_session_manager.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/hypothesis.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/math.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/module.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/module_testing/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/module_testing/go_ethereum_admin_module.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/module_testing/go_ethereum_debug_module.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/module_testing/go_ethereum_txpool_module.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/module_testing/net_module.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/module_testing/utils.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/module_testing/web3_module.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/threads.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/transactions.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/type_conversion.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/validation.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/_utils/windows.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/auto/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/auto/gethdev.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/beacon/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/beacon/api_endpoints.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/beacon/async_beacon.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/beacon/beacon.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/constants.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/contract/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/contract/async_contract.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/contract/base_contract.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/contract/contract.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/contract/utils.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/datastructures.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/eth/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/eth/async_eth.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/eth/base_eth.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/eth/eth.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/exceptions.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/gas_strategies/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/gas_strategies/rpc.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/gas_strategies/time_based.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/geth.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/logs.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/main.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/manager.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/method.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/middleware/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/middleware/attrdict.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/middleware/base.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/middleware/buffered_gas_estimate.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/middleware/filter.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/middleware/formatting.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/middleware/gas_price_strategy.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/middleware/names.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/middleware/proof_of_authority.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/middleware/pythonic.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/middleware/signing.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/middleware/stalecheck.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/middleware/validation.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/module.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/net.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/providers/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/providers/auto.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/providers/eth_tester/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/providers/eth_tester/defaults.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/providers/eth_tester/main.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/providers/persistent/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/providers/persistent/async_ipc.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/providers/persistent/persistent_connection.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/providers/persistent/subscription_container.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/providers/persistent/subscription_manager.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/providers/persistent/utils.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/providers/persistent/websocket.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/providers/rpc/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/providers/rpc/utils.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/py.typed +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/scripts/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/scripts/install_pre_releases.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/scripts/parse_pygeth_version.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/scripts/release/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/scripts/release/test_package.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/testing.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/tracing.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/utils/__init__.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/utils/abi.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/utils/address.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/utils/async_exception_handling.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/utils/exception_handling.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3/utils/subscriptions.py +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3.egg-info/SOURCES.txt +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3.egg-info/dependency_links.txt +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3.egg-info/not-zip-safe +0 -0
- {web3-7.10.0 → web3-7.11.0}/web3.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: web3
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.11.0
|
|
4
4
|
Summary: web3: A Python library for interacting with Ethereum
|
|
5
5
|
Home-page: https://github.com/ethereum/web3.py
|
|
6
6
|
Author: The Ethereum Foundation
|
|
@@ -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,7 +76,7 @@ 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
81
|
Dynamic: author
|
|
82
82
|
Dynamic: author-email
|
|
@@ -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.0",
|
|
59
59
|
description="""web3: A Python library for interacting with Ethereum""",
|
|
60
60
|
long_description=long_description,
|
|
61
61
|
long_description_content_type="text/markdown",
|
|
@@ -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)
|
|
@@ -510,3 +510,59 @@ async def test_websocket_provider_raises_errors_from_cache_not_tied_to_a_request
|
|
|
510
510
|
with pytest.raises(Web3RPCError, match="Request shutdown"):
|
|
511
511
|
await asyncio.sleep(0.1)
|
|
512
512
|
await async_w3.eth.block_number
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
@pytest.mark.asyncio
|
|
516
|
+
async def test_req_info_cache_size_can_be_set_and_warns_when_full(caplog):
|
|
517
|
+
with patch(
|
|
518
|
+
"web3.providers.persistent.websocket.connect",
|
|
519
|
+
new=lambda *_1, **_2: _mocked_ws_conn(),
|
|
520
|
+
):
|
|
521
|
+
async_w3 = await AsyncWeb3(
|
|
522
|
+
WebSocketProvider("ws://mocked", request_information_cache_size=1)
|
|
523
|
+
)
|
|
524
|
+
async_w3.provider._request_processor.cache_request_information(
|
|
525
|
+
RPCEndpoint("eth_getBlockByNumber"),
|
|
526
|
+
["latest"],
|
|
527
|
+
tuple(),
|
|
528
|
+
tuple(),
|
|
529
|
+
)
|
|
530
|
+
|
|
531
|
+
assert len(async_w3.provider._request_processor._request_information_cache) == 1
|
|
532
|
+
assert (
|
|
533
|
+
"Request information cache is full. This may result in unexpected "
|
|
534
|
+
"behavior. Consider increasing the ``request_information_cache_size`` "
|
|
535
|
+
"on the provider."
|
|
536
|
+
) in caplog.text
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
@pytest.mark.asyncio
|
|
540
|
+
async def test_raise_stray_errors_from_cache_handles_list_response_without_error():
|
|
541
|
+
provider = WebSocketProvider("ws://mocked")
|
|
542
|
+
_mock_ws(provider)
|
|
543
|
+
|
|
544
|
+
bad_response = [
|
|
545
|
+
{"id": None, "jsonrpc": "2.0", "error": {"code": 21, "message": "oops"}}
|
|
546
|
+
]
|
|
547
|
+
provider._request_processor._request_response_cache._data["bad_key"] = bad_response
|
|
548
|
+
|
|
549
|
+
# assert no errors raised
|
|
550
|
+
provider._raise_stray_errors_from_cache()
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
@pytest.mark.asyncio
|
|
554
|
+
async def test_websocket_provider_is_batching_when_make_batch_request():
|
|
555
|
+
def assert_is_batching_and_return_response(*_args, **_kwargs) -> bytes:
|
|
556
|
+
assert provider._is_batching
|
|
557
|
+
return b'{"jsonrpc":"2.0","id":1,"result":["0x1"]}'
|
|
558
|
+
|
|
559
|
+
provider = WebSocketProvider("ws://mocked")
|
|
560
|
+
_mock_ws(provider)
|
|
561
|
+
provider._get_response_for_request_id = AsyncMock()
|
|
562
|
+
provider._get_response_for_request_id.side_effect = (
|
|
563
|
+
assert_is_batching_and_return_response
|
|
564
|
+
)
|
|
565
|
+
|
|
566
|
+
assert not provider._is_batching
|
|
567
|
+
await provider.make_batch_request([("eth_blockNumber", [])])
|
|
568
|
+
assert not provider._is_batching
|
|
@@ -13,11 +13,11 @@ COINBASE = "0xdc544d1aa88ff8bbd2f2aec754b1f1e99e1812fd"
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class MiscWebSocketTest:
|
|
16
|
-
def test_websocket_max_size_error(self, w3
|
|
17
|
-
|
|
16
|
+
def test_websocket_max_size_error(self, w3):
|
|
17
|
+
w3_ = Web3(
|
|
18
18
|
Web3.LegacyWebSocketProvider(
|
|
19
|
-
endpoint_uri=endpoint_uri, websocket_kwargs={"max_size": 1}
|
|
19
|
+
endpoint_uri=w3.provider.endpoint_uri, websocket_kwargs={"max_size": 1}
|
|
20
20
|
)
|
|
21
21
|
)
|
|
22
22
|
with pytest.raises((OSError, ConnectionClosed)):
|
|
23
|
-
|
|
23
|
+
w3_.eth.get_block(0)
|
|
@@ -19,7 +19,7 @@ from web3._utils.contract_sources.contract_data.revert_contract import (
|
|
|
19
19
|
)
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
@pytest.fixture
|
|
22
|
+
@pytest.fixture
|
|
23
23
|
def math_contract_factory(w3):
|
|
24
24
|
contract_factory = w3.eth.contract(
|
|
25
25
|
abi=MATH_CONTRACT_ABI, bytecode=MATH_CONTRACT_BYTECODE
|
|
@@ -27,7 +27,7 @@ def math_contract_factory(w3):
|
|
|
27
27
|
return contract_factory
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
@pytest.fixture
|
|
30
|
+
@pytest.fixture
|
|
31
31
|
def emitter_contract_factory(w3):
|
|
32
32
|
contract_factory = w3.eth.contract(
|
|
33
33
|
abi=EMITTER_CONTRACT_ABI, bytecode=EMITTER_CONTRACT_BYTECODE
|
|
@@ -35,7 +35,7 @@ def emitter_contract_factory(w3):
|
|
|
35
35
|
return contract_factory
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
@pytest.fixture
|
|
38
|
+
@pytest.fixture
|
|
39
39
|
def revert_contract_factory(w3):
|
|
40
40
|
contract_factory = w3.eth.contract(
|
|
41
41
|
abi=REVERT_CONTRACT_ABI, bytecode=REVERT_CONTRACT_BYTECODE
|
|
@@ -43,7 +43,7 @@ def revert_contract_factory(w3):
|
|
|
43
43
|
return contract_factory
|
|
44
44
|
|
|
45
45
|
|
|
46
|
-
@pytest.fixture
|
|
46
|
+
@pytest.fixture
|
|
47
47
|
def offchain_lookup_contract_factory(w3):
|
|
48
48
|
contract_factory = w3.eth.contract(
|
|
49
49
|
abi=OFFCHAIN_LOOKUP_ABI, bytecode=OFFCHAIN_LOOKUP_BYTECODE
|
|
@@ -51,7 +51,7 @@ def offchain_lookup_contract_factory(w3):
|
|
|
51
51
|
return contract_factory
|
|
52
52
|
|
|
53
53
|
|
|
54
|
-
@pytest.fixture
|
|
54
|
+
@pytest.fixture
|
|
55
55
|
def async_offchain_lookup_contract_factory(async_w3):
|
|
56
56
|
contract_factory = async_w3.eth.contract(
|
|
57
57
|
abi=OFFCHAIN_LOOKUP_ABI, bytecode=OFFCHAIN_LOOKUP_BYTECODE
|
|
@@ -59,7 +59,7 @@ def async_offchain_lookup_contract_factory(async_w3):
|
|
|
59
59
|
return contract_factory
|
|
60
60
|
|
|
61
61
|
|
|
62
|
-
@pytest.fixture
|
|
62
|
+
@pytest.fixture
|
|
63
63
|
def event_loop():
|
|
64
64
|
loop = asyncio.get_event_loop_policy().new_event_loop()
|
|
65
65
|
yield loop
|