web3 7.0.0b7__tar.gz → 7.0.0b9__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.0.0b7/web3.egg-info → web3-7.0.0b9}/PKG-INFO +14 -8
- {web3-7.0.0b7 → web3-7.0.0b9}/README.md +7 -3
- {web3-7.0.0b7 → web3-7.0.0b9}/ens/async_ens.py +16 -7
- {web3-7.0.0b7 → web3-7.0.0b9}/ens/base_ens.py +3 -1
- {web3-7.0.0b7 → web3-7.0.0b9}/ens/exceptions.py +2 -7
- {web3-7.0.0b7 → web3-7.0.0b9}/ens/utils.py +0 -17
- {web3-7.0.0b7 → web3-7.0.0b9}/pyproject.toml +0 -1
- {web3-7.0.0b7 → web3-7.0.0b9}/setup.py +7 -5
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_attributes.py +2 -2
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_call_interface.py +15 -15
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_class_construction.py +2 -2
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_constructor_encoding.py +7 -7
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_method_abi_encoding.py +2 -2
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_method_to_argument_matching.py +18 -17
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_extracting_event_data.py +7 -7
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_extracting_event_data_old.py +2 -2
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/eth-module/test_transactions.py +2 -6
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/manager/test_response_formatters.py +13 -1
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/method-class/test_method.py +9 -9
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/providers/test_websocket_provider.py +14 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/test_library_files.py +1 -1
- web3-7.0.0b9/tests/core/utilities/test_abi.py +701 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_abi_named_tree.py +9 -5
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_http_session_manager.py +68 -2
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_method_formatters.py +44 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/integration/conftest.py +11 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/integration/test_ethereum_tester.py +8 -8
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/abi.py +100 -257
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/compat/__init__.py +1 -0
- web3-7.0.0b9/web3/_utils/contracts.py +381 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/encoding.py +4 -5
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/events.py +28 -33
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/fee_utils.py +2 -2
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/filters.py +2 -5
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/http_session_manager.py +30 -7
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/method_formatters.py +21 -3
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/module_testing/eth_module.py +61 -39
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/module_testing/module_testing_utils.py +51 -10
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/module_testing/persistent_connection_provider.py +46 -16
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/module_testing/web3_module.py +8 -8
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/normalizers.py +10 -8
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/validation.py +5 -7
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/contract/async_contract.py +18 -17
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/contract/base_contract.py +116 -80
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/contract/contract.py +16 -17
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/contract/utils.py +86 -55
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/eth/async_eth.py +1 -2
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/eth/eth.py +1 -2
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/exceptions.py +28 -9
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/gas_strategies/time_based.py +4 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/manager.py +68 -23
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/middleware/filter.py +3 -3
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/middleware/signing.py +6 -1
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/module.py +1 -1
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/persistent/async_ipc.py +34 -79
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/persistent/persistent.py +76 -7
- web3-7.0.0b9/web3/providers/persistent/persistent_connection.py +84 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/persistent/websocket.py +19 -59
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/types.py +5 -45
- web3-7.0.0b9/web3/utils/__init__.py +72 -0
- web3-7.0.0b9/web3/utils/abi.py +586 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/utils/caching.py +24 -0
- {web3-7.0.0b7 → web3-7.0.0b9/web3.egg-info}/PKG-INFO +14 -8
- {web3-7.0.0b7 → web3-7.0.0b9}/web3.egg-info/SOURCES.txt +1 -10
- {web3-7.0.0b7 → web3-7.0.0b9}/web3.egg-info/requires.txt +6 -4
- web3-7.0.0b7/tests/.DS_Store +0 -0
- web3-7.0.0b7/tests/core/contracts/test_args_and_kwargs_merger.py +0 -109
- web3-7.0.0b7/tests/core/utilities/test_abi.py +0 -383
- web3-7.0.0b7/tests/core/utilities/test_abi_filter_by_abi_name.py +0 -73
- web3-7.0.0b7/tests/integration/.DS_Store +0 -0
- web3-7.0.0b7/web3/_utils/contracts.py +0 -470
- web3-7.0.0b7/web3/providers/persistent/persistent_connection.py +0 -42
- web3-7.0.0b7/web3/tools/benchmark/__init__.py +0 -0
- web3-7.0.0b7/web3/tools/benchmark/main.py +0 -190
- web3-7.0.0b7/web3/tools/benchmark/node.py +0 -120
- web3-7.0.0b7/web3/tools/benchmark/reporting.py +0 -39
- web3-7.0.0b7/web3/tools/benchmark/utils.py +0 -69
- web3-7.0.0b7/web3/utils/__init__.py +0 -28
- web3-7.0.0b7/web3/utils/abi.py +0 -21
- {web3-7.0.0b7 → web3-7.0.0b9}/LICENSE +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/MANIFEST.in +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/ens/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/ens/_normalization.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/ens/abis.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/ens/auto.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/ens/constants.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/ens/contract_data.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/ens/ens.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/ens/specs/nf.json +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/ens/specs/normalization_spec.json +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/setup.cfg +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/beacon/test_async_beacon.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/beacon/test_beacon.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/conftest.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/admin-module/test_admin_addPeer.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/admin-module/test_admin_nodeInfo.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/admin-module/test_admin_peers.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/block-utils/test_select_method_for_block_identifier.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/caching-utils/test_generate_cache_key.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/caching-utils/test_request_caching.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/conftest.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/conftest.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_ambiguous_functions.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_build_transaction.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_caller_interface.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_constructor.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_deployment.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_estimate_gas.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_events_build_filter.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_example.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_init.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_method_abi_decoding.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_panic_errors.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_transact_interface.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_util_functions.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_offchain_lookup.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/utils.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/datastructures/test_datastructures.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/empty-object/test_empty_object_is_falsy.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/eth-module/conftest.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/eth-module/test_accounts.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/eth-module/test_block_api.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/eth-module/test_default_account_api.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/eth-module/test_eth_contract.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/eth-module/test_eth_fee_history.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/eth-module/test_eth_filter.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/eth-module/test_eth_properties.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/eth-module/test_gas_pricing.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/eth-module/test_poa.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/eth-tester-api/test_withdrawals.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/exceptions/test_exceptions.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/filtering/conftest.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/filtering/test_basic_filter_tests.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/filtering/test_contract_create_filter_topic_merging.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/filtering/test_contract_data_filters.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/filtering/test_contract_get_logs.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/filtering/test_contract_on_event_filtering.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/filtering/test_contract_past_event_filtering.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/filtering/test_contract_topic_filters.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/filtering/test_existing_filter_instance.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/filtering/test_filter_against_latest_blocks.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/filtering/test_filter_against_pending_transactions.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/filtering/test_filter_against_transaction_logs.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/filtering/test_filters_against_many_blocks.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/filtering/test_utils_functions.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/filtering/utils.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/gas-strategies/test_rpc_gas_pricing_strategies.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/gas-strategies/test_time_based_gas_price_strategy.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/manager/conftest.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/manager/test_default_middlewares.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/manager/test_middleware_can_be_stateful.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/manager/test_middleware_onion_api.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/manager/test_provider_property.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/manager/test_provider_request_wrapping.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/method-class/test_result_formatters.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/middleware/test_attrdict_middleware.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/middleware/test_eth_tester_middleware.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/middleware/test_filter_middleware.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/middleware/test_formatting_middleware.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/middleware/test_gas_price_strategy.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/middleware/test_name_to_address_middleware.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/middleware/test_stalecheck.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/middleware/test_transaction_signing.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/module-class/test_module.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/providers/test_async_http_provider.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/providers/test_async_ipc_provider.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/providers/test_async_tester_provider.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/providers/test_auto_provider.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/providers/test_base_provider.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/providers/test_http_provider.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/providers/test_http_request_retry.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/providers/test_ipc_provider.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/providers/test_legacy_websocket_provider.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/providers/test_tester_provider.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/testing-module/test_testing_mine.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/testing-module/test_testing_snapshot_and_revert.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/testing-module/test_testing_timeTravel.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/conftest.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_abi_filtering_by_argument_name.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_abi_is_encodable.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_address.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_async_transaction.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_attach_modules.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_attributedict.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_caching_utils.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_construct_event_data_set.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_construct_event_filter_params.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_construct_event_topics.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_datatypes.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_decorators.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_encoding.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_event_filter_builder.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_event_interface.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_fee_utils.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_formatters.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_is_predefined_block_number.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_is_probably_enum.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_is_recognized_type.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_math.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_prepare_transaction_replacement.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_select_filter_method.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_threads.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_valid_transaction_params.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/utilities/test_validation.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/web3-module/test_api.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/web3-module/test_attach_modules.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/web3-module/test_client_version.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/web3-module/test_conversions.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/web3-module/test_import_and_version.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/web3-module/test_keccak.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/web3-module/test_providers.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/web3-module/test_strict_bytes_type_checking.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/core/web3-module/test_web3_inheritance.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/ens/conftest.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/ens/normalization/normalization_tests.json +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/ens/normalization/test_normalize_name_ensip15.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/ens/test_ens.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/ens/test_get_registry.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/ens/test_get_text.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/ens/test_nameprep.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/ens/test_offchain_resolution.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/ens/test_setup_address.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/ens/test_setup_name.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/ens/test_utils.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/ens/test_wildcard_resolution.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/integration/README.md +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/integration/common.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/integration/generate_fixtures/common.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/integration/generate_fixtures/go_ethereum.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/integration/geth-1.14.5-fixture.zip +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/integration/go_ethereum/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/integration/go_ethereum/common.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/integration/go_ethereum/conftest.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/integration/go_ethereum/test_goethereum_http.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/integration/go_ethereum/test_goethereum_ipc.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/integration/go_ethereum/test_goethereum_legacy_ws.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/integration/go_ethereum/test_goethereum_ws/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/integration/go_ethereum/test_goethereum_ws/conftest.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/integration/go_ethereum/test_goethereum_ws/test_async_await_w3.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/integration/go_ethereum/test_goethereum_ws/test_async_ctx_manager_w3.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/integration/go_ethereum/test_goethereum_ws/test_async_iterator_w3.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/integration/go_ethereum/utils.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/tests/utils.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/__init__.py +0 -0
- /web3-7.0.0b7/web3/_utils/function_identifiers.py → /web3-7.0.0b9/web3/_utils/abi_element_identifiers.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/async_caching.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/async_transactions.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/batching.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/blocks.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/caching.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/compile_contracts.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/_custom_contract_data.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/arrays_contract.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/bytes_contracts.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/constructor_contracts.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/contract_caller_tester.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/emitter_contract.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/event_contracts.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/extended_resolver.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/fallback_function_contract.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/function_name_tester_contract.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/math_contract.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/offchain_lookup.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/offchain_resolver.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/panic_errors_contract.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/payable_tester.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/receive_function_contracts.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/reflector_contracts.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/revert_contract.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/simple_resolver.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/storage_contract.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/string_contract.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/contract_sources/contract_data/tuple_contracts.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/datatypes.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/decorators.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/empty.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/ens.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/error_formatters_utils.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/formatters.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/http.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/hypothesis.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/math.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/module.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/module_testing/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/module_testing/go_ethereum_admin_module.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/module_testing/go_ethereum_txpool_module.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/module_testing/net_module.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/module_testing/utils.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/rpc_abi.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/threads.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/transactions.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/type_conversion.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/utility_methods.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/_utils/windows.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/auto/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/auto/gethdev.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/beacon/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/beacon/api_endpoints.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/beacon/async_beacon.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/beacon/beacon.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/constants.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/contract/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/datastructures.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/eth/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/eth/base_eth.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/gas_strategies/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/gas_strategies/rpc.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/geth.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/logs.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/main.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/method.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/middleware/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/middleware/attrdict.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/middleware/base.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/middleware/buffered_gas_estimate.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/middleware/formatting.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/middleware/gas_price_strategy.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/middleware/names.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/middleware/proof_of_authority.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/middleware/pythonic.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/middleware/stalecheck.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/middleware/validation.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/net.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/async_base.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/auto.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/base.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/eth_tester/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/eth_tester/defaults.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/eth_tester/main.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/eth_tester/middleware.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/ipc.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/legacy_websocket.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/persistent/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/persistent/request_processor.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/persistent/utils.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/rpc/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/rpc/async_rpc.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/rpc/rpc.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/providers/rpc/utils.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/py.typed +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/scripts/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/scripts/release/__init__.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/scripts/release/test_package.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/testing.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/tracing.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/utils/address.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/utils/async_exception_handling.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3/utils/exception_handling.py +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3.egg-info/dependency_links.txt +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3.egg-info/not-zip-safe +0 -0
- {web3-7.0.0b7 → web3-7.0.0b9}/web3.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: web3
|
|
3
|
-
Version: 7.0.
|
|
3
|
+
Version: 7.0.0b9
|
|
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,15 +22,16 @@ Description-Content-Type: text/markdown
|
|
|
22
22
|
License-File: LICENSE
|
|
23
23
|
Requires-Dist: aiohttp>=3.7.4.post0
|
|
24
24
|
Requires-Dist: eth-abi>=5.0.1
|
|
25
|
-
Requires-Dist: eth-account>=0.
|
|
25
|
+
Requires-Dist: eth-account>=0.13.1
|
|
26
26
|
Requires-Dist: eth-hash[pycryptodome]>=0.5.1
|
|
27
|
-
Requires-Dist: eth-typing>=
|
|
28
|
-
Requires-Dist: eth-utils>=
|
|
27
|
+
Requires-Dist: eth-typing>=5.0.0b3
|
|
28
|
+
Requires-Dist: eth-utils>=5.0.0b1
|
|
29
29
|
Requires-Dist: hexbytes>=1.2.0
|
|
30
30
|
Requires-Dist: pydantic>=2.4.0
|
|
31
31
|
Requires-Dist: pywin32>=223; platform_system == "Windows"
|
|
32
|
-
Requires-Dist: requests>=2.
|
|
32
|
+
Requires-Dist: requests>=2.23.0
|
|
33
33
|
Requires-Dist: typing-extensions>=4.0.1
|
|
34
|
+
Requires-Dist: types-requests>=2.0.0
|
|
34
35
|
Requires-Dist: websockets>=10.0.0
|
|
35
36
|
Requires-Dist: pyunormalize>=15.0.0
|
|
36
37
|
Provides-Extra: dev
|
|
@@ -39,6 +40,7 @@ Requires-Dist: bumpversion>=0.5.3; extra == "dev"
|
|
|
39
40
|
Requires-Dist: flaky>=3.7.0; extra == "dev"
|
|
40
41
|
Requires-Dist: hypothesis>=3.31.2; extra == "dev"
|
|
41
42
|
Requires-Dist: ipython; extra == "dev"
|
|
43
|
+
Requires-Dist: mypy==1.10.0; extra == "dev"
|
|
42
44
|
Requires-Dist: pre-commit>=3.4.0; extra == "dev"
|
|
43
45
|
Requires-Dist: pytest-asyncio<0.23,>=0.21.2; extra == "dev"
|
|
44
46
|
Requires-Dist: pytest-mock>=1.10; extra == "dev"
|
|
@@ -80,7 +82,9 @@ Requires-Dist: pytest>=7.0.0; extra == "test"
|
|
|
80
82
|
[](https://pypi.python.org/pypi/web3)
|
|
81
83
|
[](https://web3py.readthedocs.io/en/latest/?badge=latest)
|
|
82
84
|
|
|
83
|
-
A Python
|
|
85
|
+
## A Python Library for Interacting with Ethereum
|
|
86
|
+
|
|
87
|
+
web3.py allows you to interact with the Ethereum blockchain using Python, enabling you to build decentralized applications, interact with smart contracts, and much more.
|
|
84
88
|
|
|
85
89
|
- Python 3.8+ support
|
|
86
90
|
|
|
@@ -95,7 +99,7 @@ ______________________________________________________________________
|
|
|
95
99
|
|
|
96
100
|
For additional guides, examples, and APIs, see the [documentation](https://web3py.readthedocs.io/en/latest/).
|
|
97
101
|
|
|
98
|
-
## Want to
|
|
102
|
+
## Want to Help?
|
|
99
103
|
|
|
100
104
|
Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on our
|
|
101
105
|
guidelines for [contributing](https://web3py.readthedocs.io/en/latest/contributing.html),
|
|
@@ -104,4 +108,6 @@ then check out issues that are labeled
|
|
|
104
108
|
|
|
105
109
|
______________________________________________________________________
|
|
106
110
|
|
|
107
|
-
|
|
111
|
+
## Questions on Implementation or Usage?
|
|
112
|
+
|
|
113
|
+
Join the conversation in the Ethereum Python Community [Discord](https://discord.gg/GHryRvPB84).
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
[](https://pypi.python.org/pypi/web3)
|
|
7
7
|
[](https://web3py.readthedocs.io/en/latest/?badge=latest)
|
|
8
8
|
|
|
9
|
-
A Python
|
|
9
|
+
## A Python Library for Interacting with Ethereum
|
|
10
|
+
|
|
11
|
+
web3.py allows you to interact with the Ethereum blockchain using Python, enabling you to build decentralized applications, interact with smart contracts, and much more.
|
|
10
12
|
|
|
11
13
|
- Python 3.8+ support
|
|
12
14
|
|
|
@@ -21,7 +23,7 @@ ______________________________________________________________________
|
|
|
21
23
|
|
|
22
24
|
For additional guides, examples, and APIs, see the [documentation](https://web3py.readthedocs.io/en/latest/).
|
|
23
25
|
|
|
24
|
-
## Want to
|
|
26
|
+
## Want to Help?
|
|
25
27
|
|
|
26
28
|
Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on our
|
|
27
29
|
guidelines for [contributing](https://web3py.readthedocs.io/en/latest/contributing.html),
|
|
@@ -30,4 +32,6 @@ then check out issues that are labeled
|
|
|
30
32
|
|
|
31
33
|
______________________________________________________________________
|
|
32
34
|
|
|
33
|
-
|
|
35
|
+
## Questions on Implementation or Usage?
|
|
36
|
+
|
|
37
|
+
Join the conversation in the Ethereum Python Community [Discord](https://discord.gg/GHryRvPB84).
|
|
@@ -4,6 +4,7 @@ from copy import (
|
|
|
4
4
|
from typing import (
|
|
5
5
|
TYPE_CHECKING,
|
|
6
6
|
Any,
|
|
7
|
+
Coroutine,
|
|
7
8
|
Optional,
|
|
8
9
|
Sequence,
|
|
9
10
|
Tuple,
|
|
@@ -469,9 +470,13 @@ class AsyncENS(BaseENS):
|
|
|
469
470
|
resolver_addr = await self.address("resolver.eth")
|
|
470
471
|
namehash = raw_name_to_hash(name)
|
|
471
472
|
if await self.ens.caller.resolver(namehash) != resolver_addr:
|
|
472
|
-
|
|
473
|
-
|
|
473
|
+
coro = cast(
|
|
474
|
+
Coroutine[Any, Any, HexBytes],
|
|
475
|
+
self.ens.functions.setResolver(namehash, resolver_addr).transact(
|
|
476
|
+
transact
|
|
477
|
+
),
|
|
474
478
|
)
|
|
479
|
+
await coro
|
|
475
480
|
return cast("AsyncContract", self._resolver_contract(address=resolver_addr))
|
|
476
481
|
|
|
477
482
|
async def _resolve(
|
|
@@ -553,11 +558,15 @@ class AsyncENS(BaseENS):
|
|
|
553
558
|
transact = deepcopy(transact)
|
|
554
559
|
transact["from"] = old_owner or owner
|
|
555
560
|
for label in reversed(unowned):
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
+
coro = cast(
|
|
562
|
+
Coroutine[Any, Any, HexBytes],
|
|
563
|
+
self.ens.functions.setSubnodeOwner(
|
|
564
|
+
raw_name_to_hash(owned),
|
|
565
|
+
label_to_hash(label),
|
|
566
|
+
owner,
|
|
567
|
+
).transact(transact),
|
|
568
|
+
)
|
|
569
|
+
await coro
|
|
561
570
|
owned = f"{label}.{owned}"
|
|
562
571
|
|
|
563
572
|
async def _setup_reverse(
|
|
@@ -11,13 +11,15 @@ from typing import (
|
|
|
11
11
|
from eth_typing import (
|
|
12
12
|
ChecksumAddress,
|
|
13
13
|
)
|
|
14
|
+
from eth_utils.abi import (
|
|
15
|
+
get_abi_output_types,
|
|
16
|
+
)
|
|
14
17
|
from hexbytes import (
|
|
15
18
|
HexBytes,
|
|
16
19
|
)
|
|
17
20
|
|
|
18
21
|
from .utils import (
|
|
19
22
|
address_to_reverse_domain,
|
|
20
|
-
get_abi_output_types,
|
|
21
23
|
is_valid_name,
|
|
22
24
|
label_to_hash,
|
|
23
25
|
normalize_name,
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
from eth_utils import (
|
|
2
|
-
ValidationError,
|
|
3
|
-
)
|
|
4
1
|
import idna
|
|
5
2
|
|
|
6
3
|
|
|
@@ -32,8 +29,7 @@ class AddressMismatch(ENSException):
|
|
|
32
29
|
"""
|
|
33
30
|
|
|
34
31
|
|
|
35
|
-
|
|
36
|
-
class InvalidName(idna.IDNAError, ENSException): # type: ignore[misc]
|
|
32
|
+
class InvalidName(idna.IDNAError, ENSException):
|
|
37
33
|
"""
|
|
38
34
|
Raised if the provided name does not meet the normalization
|
|
39
35
|
standards specified in `ENSIP-15
|
|
@@ -104,8 +100,7 @@ class UnderfundedBid(ENSException):
|
|
|
104
100
|
"""
|
|
105
101
|
|
|
106
102
|
|
|
107
|
-
|
|
108
|
-
class ENSValidationError(ENSException, ValidationError): # type: ignore[misc]
|
|
103
|
+
class ENSValidationError(ENSException):
|
|
109
104
|
"""
|
|
110
105
|
Raised if there is a validation error
|
|
111
106
|
"""
|
|
@@ -6,8 +6,6 @@ from typing import (
|
|
|
6
6
|
TYPE_CHECKING,
|
|
7
7
|
Any,
|
|
8
8
|
Collection,
|
|
9
|
-
Dict,
|
|
10
|
-
List,
|
|
11
9
|
Optional,
|
|
12
10
|
Sequence,
|
|
13
11
|
Tuple,
|
|
@@ -28,9 +26,6 @@ from eth_utils import (
|
|
|
28
26
|
to_bytes,
|
|
29
27
|
to_normalized_address,
|
|
30
28
|
)
|
|
31
|
-
from eth_utils.abi import (
|
|
32
|
-
collapse_if_tuple,
|
|
33
|
-
)
|
|
34
29
|
from hexbytes import (
|
|
35
30
|
HexBytes,
|
|
36
31
|
)
|
|
@@ -68,9 +63,6 @@ if TYPE_CHECKING:
|
|
|
68
63
|
AsyncBaseProvider,
|
|
69
64
|
BaseProvider,
|
|
70
65
|
)
|
|
71
|
-
from web3.types import ( # noqa: F401
|
|
72
|
-
ABIFunction,
|
|
73
|
-
)
|
|
74
66
|
|
|
75
67
|
|
|
76
68
|
def Web3() -> Type["_Web3"]:
|
|
@@ -293,15 +285,6 @@ def is_valid_ens_name(ens_name: str) -> bool:
|
|
|
293
285
|
return True
|
|
294
286
|
|
|
295
287
|
|
|
296
|
-
# borrowed from similar method at `web3._utils.abi` due to circular dependency
|
|
297
|
-
def get_abi_output_types(abi: "ABIFunction") -> List[str]:
|
|
298
|
-
return (
|
|
299
|
-
[]
|
|
300
|
-
if abi["type"] == "fallback"
|
|
301
|
-
else [collapse_if_tuple(cast(Dict[str, Any], arg)) for arg in abi["outputs"]]
|
|
302
|
-
)
|
|
303
|
-
|
|
304
|
-
|
|
305
288
|
# -- async -- #
|
|
306
289
|
|
|
307
290
|
|
|
@@ -11,6 +11,7 @@ extras_require = {
|
|
|
11
11
|
"flaky>=3.7.0",
|
|
12
12
|
"hypothesis>=3.31.2",
|
|
13
13
|
"ipython",
|
|
14
|
+
"mypy==1.10.0",
|
|
14
15
|
"pre-commit>=3.4.0",
|
|
15
16
|
"pytest-asyncio>=0.21.2,<0.23",
|
|
16
17
|
"pytest-mock>=1.10",
|
|
@@ -51,7 +52,7 @@ with open("./README.md") as readme:
|
|
|
51
52
|
setup(
|
|
52
53
|
name="web3",
|
|
53
54
|
# *IMPORTANT*: Don't manually change the version here. Use `make bump`, as described in readme
|
|
54
|
-
version="7.0.0-beta.
|
|
55
|
+
version="7.0.0-beta.9",
|
|
55
56
|
description="""web3: A Python library for interacting with Ethereum""",
|
|
56
57
|
long_description=long_description,
|
|
57
58
|
long_description_content_type="text/markdown",
|
|
@@ -62,15 +63,16 @@ setup(
|
|
|
62
63
|
install_requires=[
|
|
63
64
|
"aiohttp>=3.7.4.post0",
|
|
64
65
|
"eth-abi>=5.0.1",
|
|
65
|
-
"eth-account>=0.
|
|
66
|
+
"eth-account>=0.13.1",
|
|
66
67
|
"eth-hash[pycryptodome]>=0.5.1",
|
|
67
|
-
"eth-typing>=
|
|
68
|
-
"eth-utils>=
|
|
68
|
+
"eth-typing>=5.0.0b3",
|
|
69
|
+
"eth-utils>=5.0.0b1",
|
|
69
70
|
"hexbytes>=1.2.0",
|
|
70
71
|
"pydantic>=2.4.0",
|
|
71
72
|
"pywin32>=223;platform_system=='Windows'",
|
|
72
|
-
"requests>=2.
|
|
73
|
+
"requests>=2.23.0",
|
|
73
74
|
"typing-extensions>=4.0.1",
|
|
75
|
+
"types-requests>=2.0.0",
|
|
74
76
|
"websockets>=10.0.0",
|
|
75
77
|
"pyunormalize>=15.0.0",
|
|
76
78
|
],
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import pytest
|
|
2
2
|
|
|
3
3
|
from web3.exceptions import (
|
|
4
|
-
|
|
4
|
+
ABIEventNotFound,
|
|
5
5
|
ABIFunctionNotFound,
|
|
6
6
|
)
|
|
7
7
|
|
|
@@ -22,7 +22,7 @@ def test_getattr(w3, abi, attribute):
|
|
|
22
22
|
"attribute,error",
|
|
23
23
|
(
|
|
24
24
|
("functions", ABIFunctionNotFound),
|
|
25
|
-
("events",
|
|
25
|
+
("events", ABIEventNotFound),
|
|
26
26
|
("caller", ABIFunctionNotFound),
|
|
27
27
|
),
|
|
28
28
|
)
|
|
@@ -37,9 +37,9 @@ from web3.contract.contract import (
|
|
|
37
37
|
ContractFunction,
|
|
38
38
|
)
|
|
39
39
|
from web3.exceptions import (
|
|
40
|
+
ABIReceiveNotFound,
|
|
40
41
|
BadFunctionCallOutput,
|
|
41
42
|
BlockNumberOutOfRange,
|
|
42
|
-
FallbackNotFound,
|
|
43
43
|
InvalidAddress,
|
|
44
44
|
MismatchedABI,
|
|
45
45
|
NameNotFound,
|
|
@@ -271,7 +271,7 @@ def test_set_byte_array_non_strict(
|
|
|
271
271
|
@pytest.mark.parametrize("args", ([""], ["s"]))
|
|
272
272
|
def test_set_byte_array_with_invalid_args(arrays_contract, transact, args):
|
|
273
273
|
with pytest.raises(
|
|
274
|
-
|
|
274
|
+
MismatchedABI,
|
|
275
275
|
match="Could not identify the intended function with name `setByteValue`",
|
|
276
276
|
):
|
|
277
277
|
transact(
|
|
@@ -532,7 +532,7 @@ def test_call_receive_fallback_function(
|
|
|
532
532
|
|
|
533
533
|
|
|
534
534
|
def test_call_nonexistent_receive_function(fallback_function_contract):
|
|
535
|
-
with pytest.raises(
|
|
535
|
+
with pytest.raises(ABIReceiveNotFound, match="No receive function was found"):
|
|
536
536
|
fallback_function_contract.receive.call()
|
|
537
537
|
|
|
538
538
|
|
|
@@ -617,13 +617,13 @@ def test_no_functions_match_identifier(arrays_contract):
|
|
|
617
617
|
|
|
618
618
|
def test_function_1_match_identifier_wrong_number_of_args(arrays_contract):
|
|
619
619
|
regex = message_regex + diagnosis_arg_regex
|
|
620
|
-
with pytest.raises(
|
|
620
|
+
with pytest.raises(MismatchedABI, match=regex):
|
|
621
621
|
arrays_contract.functions.setBytes32Value().call()
|
|
622
622
|
|
|
623
623
|
|
|
624
624
|
def test_function_1_match_identifier_wrong_args_encoding(arrays_contract):
|
|
625
625
|
regex = message_regex + diagnosis_encoding_regex
|
|
626
|
-
with pytest.raises(
|
|
626
|
+
with pytest.raises(MismatchedABI, match=regex):
|
|
627
627
|
arrays_contract.functions.setBytes32Value("dog").call()
|
|
628
628
|
|
|
629
629
|
|
|
@@ -638,7 +638,7 @@ def test_function_1_match_identifier_wrong_args_encoding(arrays_contract):
|
|
|
638
638
|
def test_function_multiple_error_diagnoses(w3, arg1, arg2, diagnosis):
|
|
639
639
|
Contract = w3.eth.contract(abi=MULTIPLE_FUNCTIONS)
|
|
640
640
|
regex = message_regex + diagnosis
|
|
641
|
-
with pytest.raises(
|
|
641
|
+
with pytest.raises(MismatchedABI, match=regex):
|
|
642
642
|
if arg2:
|
|
643
643
|
Contract.functions.a(arg1, arg2).call()
|
|
644
644
|
else:
|
|
@@ -656,7 +656,7 @@ def test_function_wrong_args_for_tuple_collapses_args_in_message(
|
|
|
656
656
|
address,
|
|
657
657
|
tuple_contract,
|
|
658
658
|
):
|
|
659
|
-
with pytest.raises(
|
|
659
|
+
with pytest.raises(MismatchedABI) as e:
|
|
660
660
|
tuple_contract.functions.method(
|
|
661
661
|
(1, [2, 3], [(4, [True, [False]], [address])])
|
|
662
662
|
).call()
|
|
@@ -684,7 +684,7 @@ def test_function_wrong_args_for_tuple_collapses_args_in_message(
|
|
|
684
684
|
def test_function_wrong_args_for_tuple_collapses_kwargs_in_message(
|
|
685
685
|
address, tuple_contract
|
|
686
686
|
):
|
|
687
|
-
with pytest.raises(
|
|
687
|
+
with pytest.raises(MismatchedABI) as e:
|
|
688
688
|
tuple_contract.functions.method(
|
|
689
689
|
a=(1, [2, 3], [(4, [True, [False]], [address])]) # noqa: E501
|
|
690
690
|
).call()
|
|
@@ -790,7 +790,7 @@ def test_invalid_fixed_value_reflections(
|
|
|
790
790
|
fixed_reflector_contract, function, value, error
|
|
791
791
|
):
|
|
792
792
|
contract_func = fixed_reflector_contract.functions[function]
|
|
793
|
-
with pytest.raises(
|
|
793
|
+
with pytest.raises(MismatchedABI, match=error):
|
|
794
794
|
contract_func(value).call({"gas": 420000})
|
|
795
795
|
|
|
796
796
|
|
|
@@ -1419,7 +1419,7 @@ async def test_async_set_byte_array_strict_by_default(
|
|
|
1419
1419
|
async def test_async_set_strict_byte_array_with_invalid_args(
|
|
1420
1420
|
async_arrays_contract, async_transact, args
|
|
1421
1421
|
):
|
|
1422
|
-
with pytest.raises(
|
|
1422
|
+
with pytest.raises(MismatchedABI):
|
|
1423
1423
|
await async_transact(
|
|
1424
1424
|
contract=async_arrays_contract,
|
|
1425
1425
|
contract_function="setByteValue",
|
|
@@ -1719,7 +1719,7 @@ async def test_async_call_receive_fallback_function(
|
|
|
1719
1719
|
async def test_async_call_nonexistent_receive_function(
|
|
1720
1720
|
async_fallback_function_contract,
|
|
1721
1721
|
):
|
|
1722
|
-
with pytest.raises(
|
|
1722
|
+
with pytest.raises(ABIReceiveNotFound, match="No receive function was found"):
|
|
1723
1723
|
await async_fallback_function_contract.receive.call()
|
|
1724
1724
|
|
|
1725
1725
|
|
|
@@ -1786,7 +1786,7 @@ async def test_async_function_1_match_identifier_wrong_number_of_args(
|
|
|
1786
1786
|
async_arrays_contract,
|
|
1787
1787
|
):
|
|
1788
1788
|
regex = message_regex + diagnosis_arg_regex
|
|
1789
|
-
with pytest.raises(
|
|
1789
|
+
with pytest.raises(MismatchedABI, match=regex):
|
|
1790
1790
|
await async_arrays_contract.functions.setBytes32Value().call()
|
|
1791
1791
|
|
|
1792
1792
|
|
|
@@ -1795,7 +1795,7 @@ async def test_async_function_1_match_identifier_wrong_args_encoding(
|
|
|
1795
1795
|
async_arrays_contract,
|
|
1796
1796
|
):
|
|
1797
1797
|
regex = message_regex + diagnosis_encoding_regex
|
|
1798
|
-
with pytest.raises(
|
|
1798
|
+
with pytest.raises(MismatchedABI, match=regex):
|
|
1799
1799
|
await async_arrays_contract.functions.setBytes32Value("dog").call()
|
|
1800
1800
|
|
|
1801
1801
|
|
|
@@ -1811,7 +1811,7 @@ async def test_async_function_1_match_identifier_wrong_args_encoding(
|
|
|
1811
1811
|
async def test_async_function_multiple_error_diagnoses(async_w3, arg1, arg2, diagnosis):
|
|
1812
1812
|
Contract = async_w3.eth.contract(abi=MULTIPLE_FUNCTIONS)
|
|
1813
1813
|
regex = message_regex + diagnosis
|
|
1814
|
-
with pytest.raises(
|
|
1814
|
+
with pytest.raises(MismatchedABI, match=regex):
|
|
1815
1815
|
if arg2:
|
|
1816
1816
|
await Contract.functions.a(arg1, arg2).call()
|
|
1817
1817
|
else:
|
|
@@ -1920,7 +1920,7 @@ async def test_async_invalid_fixed_value_reflections(
|
|
|
1920
1920
|
async_fixed_reflector_contract, function, value, error
|
|
1921
1921
|
):
|
|
1922
1922
|
contract_func = async_fixed_reflector_contract.functions[function]
|
|
1923
|
-
with pytest.raises(
|
|
1923
|
+
with pytest.raises(MismatchedABI, match=error):
|
|
1924
1924
|
await contract_func(value).call({"gas": 420000})
|
|
1925
1925
|
|
|
1926
1926
|
|
|
@@ -9,7 +9,7 @@ from web3.contract import (
|
|
|
9
9
|
Contract,
|
|
10
10
|
)
|
|
11
11
|
from web3.exceptions import (
|
|
12
|
-
|
|
12
|
+
ABIFallbackNotFound,
|
|
13
13
|
Web3AttributeError,
|
|
14
14
|
)
|
|
15
15
|
|
|
@@ -84,5 +84,5 @@ def test_error_to_call_non_existent_fallback(
|
|
|
84
84
|
bytecode=math_contract_bytecode,
|
|
85
85
|
bytecode_runtime=math_contract_runtime,
|
|
86
86
|
)
|
|
87
|
-
with pytest.raises(
|
|
87
|
+
with pytest.raises(ABIFallbackNotFound):
|
|
88
88
|
math_contract.fallback.estimate_gas()
|
|
@@ -27,15 +27,15 @@ def test_contract_constructor_abi_encoding_with_constructor_with_no_args(
|
|
|
27
27
|
@pytest.mark.parametrize(
|
|
28
28
|
"args,kwargs",
|
|
29
29
|
(
|
|
30
|
-
(
|
|
31
|
-
("arg-is-ignored",
|
|
30
|
+
(tuple(), {"kwarg-is-ignored": True}),
|
|
31
|
+
("arg-is-ignored", {}),
|
|
32
32
|
),
|
|
33
33
|
)
|
|
34
34
|
def test_contract_error_if_additional_args_are_supplied_with_no_constructor_fn(
|
|
35
35
|
math_contract_factory, args, kwargs
|
|
36
36
|
):
|
|
37
37
|
with pytest.raises(TypeError, match="Constructor args"):
|
|
38
|
-
math_contract_factory._encode_constructor_data(args, kwargs)
|
|
38
|
+
math_contract_factory._encode_constructor_data(*args, **kwargs)
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
@pytest.mark.parametrize(
|
|
@@ -53,7 +53,7 @@ def test_error_if_invalid_arguments_supplied(
|
|
|
53
53
|
contract_with_constructor_args_factory, arguments
|
|
54
54
|
):
|
|
55
55
|
with pytest.raises(TypeError):
|
|
56
|
-
contract_with_constructor_args_factory._encode_constructor_data(arguments)
|
|
56
|
+
contract_with_constructor_args_factory._encode_constructor_data(*arguments)
|
|
57
57
|
|
|
58
58
|
|
|
59
59
|
@pytest.mark.parametrize(
|
|
@@ -76,7 +76,7 @@ def test_contract_constructor_encoding(
|
|
|
76
76
|
bytes_arg,
|
|
77
77
|
):
|
|
78
78
|
deploy_data = contract_with_constructor_args_factory._encode_constructor_data(
|
|
79
|
-
[1234, bytes_arg]
|
|
79
|
+
*[1234, bytes_arg]
|
|
80
80
|
)
|
|
81
81
|
expected_ending = encode_hex(
|
|
82
82
|
w3.codec.encode(["uint256", "bytes32"], [1234, bytes_arg])
|
|
@@ -98,7 +98,7 @@ def test_contract_constructor_encoding_non_strict(
|
|
|
98
98
|
):
|
|
99
99
|
deploy_data = (
|
|
100
100
|
non_strict_contract_with_constructor_args_factory._encode_constructor_data(
|
|
101
|
-
[1234, bytes_arg]
|
|
101
|
+
*[1234, bytes_arg]
|
|
102
102
|
)
|
|
103
103
|
)
|
|
104
104
|
encoded_args = "0x00000000000000000000000000000000000000000000000000000000000004d26162636400000000000000000000000000000000000000000000000000000000" # noqa: E501
|
|
@@ -126,5 +126,5 @@ def test_contract_constructor_encoding_strict_errors(
|
|
|
126
126
|
match="One or more arguments could not be encoded to the necessary ABI type.",
|
|
127
127
|
):
|
|
128
128
|
contract_with_constructor_args_factory._encode_constructor_data(
|
|
129
|
-
[1234, bytes_arg]
|
|
129
|
+
*[1234, bytes_arg]
|
|
130
130
|
)
|
|
@@ -5,7 +5,7 @@ from web3 import (
|
|
|
5
5
|
constants,
|
|
6
6
|
)
|
|
7
7
|
from web3.exceptions import (
|
|
8
|
-
|
|
8
|
+
MismatchedABI,
|
|
9
9
|
)
|
|
10
10
|
|
|
11
11
|
ABI_A = json.loads(
|
|
@@ -145,7 +145,7 @@ def test_contract_abi_encoding_kwargs(w3):
|
|
|
145
145
|
)
|
|
146
146
|
def test_contract_abi_encoding_strict_with_error(w3, arguments):
|
|
147
147
|
contract = w3.eth.contract(abi=ABI_C)
|
|
148
|
-
with pytest.raises(
|
|
148
|
+
with pytest.raises(MismatchedABI):
|
|
149
149
|
contract.encode_abi("a", arguments, data=None)
|
|
150
150
|
|
|
151
151
|
|
{web3-7.0.0b7 → web3-7.0.0b9}/tests/core/contracts/test_contract_method_to_argument_matching.py
RENAMED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import pytest
|
|
3
3
|
|
|
4
|
-
from
|
|
4
|
+
from eth_utils.abi import (
|
|
5
5
|
get_abi_input_types,
|
|
6
6
|
)
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
from web3._utils.abi_element_identifiers import (
|
|
8
9
|
FallbackFn,
|
|
9
10
|
ReceiveFn,
|
|
10
11
|
)
|
|
11
12
|
from web3.exceptions import (
|
|
12
|
-
|
|
13
|
+
MismatchedABI,
|
|
13
14
|
)
|
|
14
15
|
|
|
15
16
|
SINGLE_FN_NO_ARGS = json.loads(
|
|
@@ -106,7 +107,7 @@ MULTIPLE_FUNCTIONS = json.loads(
|
|
|
106
107
|
def test_finds_single_function_without_args(w3):
|
|
107
108
|
Contract = w3.eth.contract(abi=SINGLE_FN_NO_ARGS)
|
|
108
109
|
|
|
109
|
-
abi = Contract._find_matching_fn_abi("a", [])
|
|
110
|
+
abi = Contract._find_matching_fn_abi("a", *[])
|
|
110
111
|
assert abi["name"] == "a"
|
|
111
112
|
assert abi["inputs"] == []
|
|
112
113
|
|
|
@@ -114,7 +115,7 @@ def test_finds_single_function_without_args(w3):
|
|
|
114
115
|
def test_finds_single_function_with_args(w3):
|
|
115
116
|
Contract = w3.eth.contract(abi=SINGLE_FN_ONE_ARG)
|
|
116
117
|
|
|
117
|
-
abi = Contract._find_matching_fn_abi("a", [1234])
|
|
118
|
+
abi = Contract._find_matching_fn_abi("a", *[1234])
|
|
118
119
|
assert abi["name"] == "a"
|
|
119
120
|
assert len(abi["inputs"]) == 1
|
|
120
121
|
assert abi["inputs"][0]["type"] == "uint256"
|
|
@@ -123,22 +124,22 @@ def test_finds_single_function_with_args(w3):
|
|
|
123
124
|
def test_finds_fallback_function(w3):
|
|
124
125
|
Contract = w3.eth.contract(abi=FALLBACK_FUNCTION)
|
|
125
126
|
|
|
126
|
-
abi = Contract._find_matching_fn_abi(FallbackFn, [])
|
|
127
|
+
abi = Contract._find_matching_fn_abi(FallbackFn, *[])
|
|
127
128
|
assert abi["type"] == "fallback"
|
|
128
129
|
|
|
129
130
|
|
|
130
131
|
def test_finds_receive_function(w3):
|
|
131
132
|
Contract = w3.eth.contract(abi=RECEIVE_FUNCTION)
|
|
132
133
|
|
|
133
|
-
abi = Contract._find_matching_fn_abi(ReceiveFn, [])
|
|
134
|
+
abi = Contract._find_matching_fn_abi(ReceiveFn, *[])
|
|
134
135
|
assert abi["type"] == "receive"
|
|
135
136
|
|
|
136
137
|
|
|
137
138
|
def test_error_when_no_function_name_match(w3):
|
|
138
139
|
Contract = w3.eth.contract(abi=SINGLE_FN_NO_ARGS)
|
|
139
140
|
|
|
140
|
-
with pytest.raises(
|
|
141
|
-
Contract._find_matching_fn_abi("no_function_name", [1234])
|
|
141
|
+
with pytest.raises(MismatchedABI):
|
|
142
|
+
Contract._find_matching_fn_abi("no_function_name", *[1234])
|
|
142
143
|
|
|
143
144
|
|
|
144
145
|
@pytest.mark.parametrize(
|
|
@@ -159,7 +160,7 @@ def test_finds_function_with_matching_args_non_strict(
|
|
|
159
160
|
):
|
|
160
161
|
contract = w3_non_strict_abi.eth.contract(abi=MULTIPLE_FUNCTIONS)
|
|
161
162
|
|
|
162
|
-
abi = contract._find_matching_fn_abi("a", arguments)
|
|
163
|
+
abi = contract._find_matching_fn_abi("a", *arguments)
|
|
163
164
|
assert abi["name"] == "a"
|
|
164
165
|
assert len(abi["inputs"]) == len(expected_types)
|
|
165
166
|
assert get_abi_input_types(abi) == expected_types
|
|
@@ -167,23 +168,23 @@ def test_finds_function_with_matching_args_non_strict(
|
|
|
167
168
|
|
|
168
169
|
def test_finds_function_with_matching_args_strict_type_checking_by_default(w3):
|
|
169
170
|
contract = w3.eth.contract(abi=MULTIPLE_FUNCTIONS)
|
|
170
|
-
with pytest.raises(
|
|
171
|
-
contract._find_matching_fn_abi("a", [""])
|
|
171
|
+
with pytest.raises(MismatchedABI):
|
|
172
|
+
contract._find_matching_fn_abi("a", *[""])
|
|
172
173
|
|
|
173
174
|
|
|
174
175
|
def test_error_when_duplicate_match(w3):
|
|
175
176
|
Contract = w3.eth.contract(abi=MULTIPLE_FUNCTIONS)
|
|
176
177
|
|
|
177
|
-
with pytest.raises(
|
|
178
|
-
Contract._find_matching_fn_abi("a", [100])
|
|
178
|
+
with pytest.raises(MismatchedABI):
|
|
179
|
+
Contract._find_matching_fn_abi("a", *[100])
|
|
179
180
|
|
|
180
181
|
|
|
181
182
|
@pytest.mark.parametrize("arguments", (["0xf00b47"], [b""], [""], ["00" * 16]))
|
|
182
183
|
def test_strict_errors_if_type_is_wrong(w3, arguments):
|
|
183
184
|
Contract = w3.eth.contract(abi=MULTIPLE_FUNCTIONS)
|
|
184
185
|
|
|
185
|
-
with pytest.raises(
|
|
186
|
-
Contract._find_matching_fn_abi("a", arguments)
|
|
186
|
+
with pytest.raises(MismatchedABI):
|
|
187
|
+
Contract._find_matching_fn_abi("a", *arguments)
|
|
187
188
|
|
|
188
189
|
|
|
189
190
|
@pytest.mark.parametrize(
|
|
@@ -198,7 +199,7 @@ def test_strict_errors_if_type_is_wrong(w3, arguments):
|
|
|
198
199
|
def test_strict_finds_function_with_matching_args(w3, arguments, expected_types):
|
|
199
200
|
Contract = w3.eth.contract(abi=MULTIPLE_FUNCTIONS)
|
|
200
201
|
|
|
201
|
-
abi = Contract._find_matching_fn_abi("a", arguments)
|
|
202
|
+
abi = Contract._find_matching_fn_abi("a", *arguments)
|
|
202
203
|
assert abi["name"] == "a"
|
|
203
204
|
assert len(abi["inputs"]) == len(expected_types)
|
|
204
205
|
assert get_abi_input_types(abi) == expected_types
|