web3 6.19.0__tar.gz → 6.20.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {web3-6.19.0 → web3-6.20.1}/PKG-INFO +1 -1
- {web3-6.19.0 → web3-6.20.1}/pyproject.toml +1 -1
- {web3-6.19.0 → web3-6.20.1}/setup.py +1 -1
- web3-6.20.1/tests/.DS_Store +0 -0
- web3-6.20.1/tests/beacon/test_async_beacon.py +267 -0
- web3-6.20.1/tests/beacon/test_beacon.py +231 -0
- web3-6.20.1/tests/conftest.py +109 -0
- web3-6.20.1/tests/core/admin-module/test_admin_addPeer.py +7 -0
- web3-6.20.1/tests/core/admin-module/test_admin_nodeInfo.py +7 -0
- web3-6.20.1/tests/core/admin-module/test_admin_peers.py +4 -0
- web3-6.20.1/tests/core/block-utils/test_select_method_for_block_identifier.py +45 -0
- web3-6.20.1/tests/core/caching-utils/test_generate_cache_key.py +51 -0
- web3-6.20.1/tests/core/conftest.py +131 -0
- web3-6.20.1/tests/core/contracts/conftest.py +749 -0
- web3-6.20.1/tests/core/contracts/test_args_and_kwargs_merger.py +109 -0
- web3-6.20.1/tests/core/contracts/test_contract_ambiguous_functions.py +193 -0
- web3-6.20.1/tests/core/contracts/test_contract_attributes.py +43 -0
- web3-6.20.1/tests/core/contracts/test_contract_build_transaction.py +528 -0
- web3-6.20.1/tests/core/contracts/test_contract_call_interface.py +2315 -0
- web3-6.20.1/tests/core/contracts/test_contract_caller_interface.py +415 -0
- web3-6.20.1/tests/core/contracts/test_contract_class_construction.py +87 -0
- web3-6.20.1/tests/core/contracts/test_contract_constructor.py +597 -0
- web3-6.20.1/tests/core/contracts/test_contract_constructor_encoding.py +130 -0
- web3-6.20.1/tests/core/contracts/test_contract_deployment.py +238 -0
- web3-6.20.1/tests/core/contracts/test_contract_estimate_gas.py +216 -0
- web3-6.20.1/tests/core/contracts/test_contract_events_build_filter.py +67 -0
- web3-6.20.1/tests/core/contracts/test_contract_example.py +220 -0
- web3-6.20.1/tests/core/contracts/test_contract_init.py +76 -0
- web3-6.20.1/tests/core/contracts/test_contract_method_abi_decoding.py +149 -0
- web3-6.20.1/tests/core/contracts/test_contract_method_abi_encoding.py +233 -0
- web3-6.20.1/tests/core/contracts/test_contract_method_to_argument_matching.py +204 -0
- web3-6.20.1/tests/core/contracts/test_contract_panic_errors.py +48 -0
- web3-6.20.1/tests/core/contracts/test_contract_transact_interface.py +614 -0
- web3-6.20.1/tests/core/contracts/test_contract_util_functions.py +128 -0
- web3-6.20.1/tests/core/contracts/test_extracting_event_data.py +1162 -0
- web3-6.20.1/tests/core/contracts/test_extracting_event_data_old.py +155 -0
- web3-6.20.1/tests/core/contracts/test_offchain_lookup.py +210 -0
- web3-6.20.1/tests/core/contracts/utils.py +27 -0
- web3-6.20.1/tests/core/datastructures/test_datastructures.py +209 -0
- web3-6.20.1/tests/core/empty-object/test_empty_object_is_falsy.py +8 -0
- web3-6.20.1/tests/core/eth-module/conftest.py +16 -0
- web3-6.20.1/tests/core/eth-module/test_accounts.py +578 -0
- web3-6.20.1/tests/core/eth-module/test_block_api.py +191 -0
- web3-6.20.1/tests/core/eth-module/test_default_account_api.py +41 -0
- web3-6.20.1/tests/core/eth-module/test_eth_contract.py +47 -0
- web3-6.20.1/tests/core/eth-module/test_eth_fee_history.py +22 -0
- web3-6.20.1/tests/core/eth-module/test_eth_filter.py +50 -0
- web3-6.20.1/tests/core/eth-module/test_eth_properties.py +33 -0
- web3-6.20.1/tests/core/eth-module/test_gas_pricing.py +27 -0
- web3-6.20.1/tests/core/eth-module/test_poa.py +58 -0
- web3-6.20.1/tests/core/eth-module/test_transactions.py +466 -0
- web3-6.20.1/tests/core/eth-tester-api/test_withdrawals.py +55 -0
- web3-6.20.1/tests/core/exceptions/test_exceptions.py +32 -0
- web3-6.20.1/tests/core/filtering/conftest.py +108 -0
- web3-6.20.1/tests/core/filtering/test_basic_filter_tests.py +78 -0
- web3-6.20.1/tests/core/filtering/test_contract_create_filter_topic_merging.py +16 -0
- web3-6.20.1/tests/core/filtering/test_contract_data_filters.py +475 -0
- web3-6.20.1/tests/core/filtering/test_contract_get_logs.py +394 -0
- web3-6.20.1/tests/core/filtering/test_contract_on_event_filtering.py +476 -0
- web3-6.20.1/tests/core/filtering/test_contract_past_event_filtering.py +190 -0
- web3-6.20.1/tests/core/filtering/test_contract_topic_filters.py +440 -0
- web3-6.20.1/tests/core/filtering/test_existing_filter_instance.py +84 -0
- web3-6.20.1/tests/core/filtering/test_filter_against_latest_blocks.py +52 -0
- web3-6.20.1/tests/core/filtering/test_filter_against_pending_transactions.py +60 -0
- web3-6.20.1/tests/core/filtering/test_filter_against_transaction_logs.py +40 -0
- web3-6.20.1/tests/core/filtering/test_filters_against_many_blocks.py +311 -0
- web3-6.20.1/tests/core/filtering/test_utils_functions.py +222 -0
- web3-6.20.1/tests/core/filtering/utils.py +77 -0
- web3-6.20.1/tests/core/gas-strategies/test_rpc_gas_pricing_strategies.py +11 -0
- web3-6.20.1/tests/core/gas-strategies/test_time_based_gas_price_strategy.py +291 -0
- web3-6.20.1/tests/core/manager/conftest.py +30 -0
- web3-6.20.1/tests/core/manager/test_default_middlewares.py +49 -0
- web3-6.20.1/tests/core/manager/test_middleware_can_be_stateful.py +30 -0
- web3-6.20.1/tests/core/manager/test_middleware_onion_api.py +184 -0
- web3-6.20.1/tests/core/manager/test_provider_property.py +20 -0
- web3-6.20.1/tests/core/manager/test_provider_request_wrapping.py +31 -0
- web3-6.20.1/tests/core/manager/test_response_formatters.py +342 -0
- web3-6.20.1/tests/core/method-class/test_method.py +384 -0
- web3-6.20.1/tests/core/method-class/test_result_formatters.py +58 -0
- web3-6.20.1/tests/core/middleware/test_attrdict_middleware.py +157 -0
- web3-6.20.1/tests/core/middleware/test_eth_tester_middleware.py +205 -0
- web3-6.20.1/tests/core/middleware/test_filter_middleware.py +404 -0
- web3-6.20.1/tests/core/middleware/test_formatting_middleware.py +126 -0
- web3-6.20.1/tests/core/middleware/test_gas_price_strategy.py +93 -0
- web3-6.20.1/tests/core/middleware/test_name_to_address_middleware.py +182 -0
- web3-6.20.1/tests/core/middleware/test_stalecheck.py +224 -0
- web3-6.20.1/tests/core/middleware/test_transaction_signing.py +617 -0
- web3-6.20.1/tests/core/module-class/test_module.py +98 -0
- web3-6.20.1/tests/core/providers/test_async_http_provider.py +109 -0
- web3-6.20.1/tests/core/providers/test_async_tester_provider.py +67 -0
- web3-6.20.1/tests/core/providers/test_auto_provider.py +57 -0
- web3-6.20.1/tests/core/providers/test_base_provider.py +57 -0
- web3-6.20.1/tests/core/providers/test_http_provider.py +112 -0
- web3-6.20.1/tests/core/providers/test_ipc_provider.py +103 -0
- web3-6.20.1/tests/core/providers/test_tester_provider.py +120 -0
- web3-6.20.1/tests/core/providers/test_websocket_provider.py +86 -0
- web3-6.20.1/tests/core/testing-module/test_testing_mine.py +22 -0
- web3-6.20.1/tests/core/testing-module/test_testing_snapshot_and_revert.py +47 -0
- web3-6.20.1/tests/core/testing-module/test_testing_timeTravel.py +9 -0
- web3-6.20.1/tests/core/utilities/conftest.py +14 -0
- web3-6.20.1/tests/core/utilities/test_abi.py +384 -0
- web3-6.20.1/tests/core/utilities/test_abi_filter_by_abi_name.py +73 -0
- web3-6.20.1/tests/core/utilities/test_abi_filtering_by_argument_name.py +61 -0
- web3-6.20.1/tests/core/utilities/test_abi_is_encodable.py +102 -0
- web3-6.20.1/tests/core/utilities/test_abi_named_tree.py +107 -0
- web3-6.20.1/tests/core/utilities/test_address.py +71 -0
- web3-6.20.1/tests/core/utilities/test_async_transaction.py +97 -0
- web3-6.20.1/tests/core/utilities/test_attach_modules.py +215 -0
- web3-6.20.1/tests/core/utilities/test_attributedict.py +109 -0
- web3-6.20.1/tests/core/utilities/test_caching_utils.py +35 -0
- web3-6.20.1/tests/core/utilities/test_construct_event_data_set.py +150 -0
- web3-6.20.1/tests/core/utilities/test_construct_event_filter_params.py +103 -0
- web3-6.20.1/tests/core/utilities/test_construct_event_topics.py +164 -0
- web3-6.20.1/tests/core/utilities/test_datatypes.py +35 -0
- web3-6.20.1/tests/core/utilities/test_decorators.py +23 -0
- web3-6.20.1/tests/core/utilities/test_encoding.py +291 -0
- web3-6.20.1/tests/core/utilities/test_event_filter_builder.py +80 -0
- web3-6.20.1/tests/core/utilities/test_event_interface.py +34 -0
- web3-6.20.1/tests/core/utilities/test_fee_utils.py +64 -0
- web3-6.20.1/tests/core/utilities/test_formatters.py +53 -0
- web3-6.20.1/tests/core/utilities/test_is_predefined_block_number.py +22 -0
- web3-6.20.1/tests/core/utilities/test_is_probably_enum.py +23 -0
- web3-6.20.1/tests/core/utilities/test_is_recognized_type.py +182 -0
- web3-6.20.1/tests/core/utilities/test_math.py +48 -0
- web3-6.20.1/tests/core/utilities/test_method_formatters.py +194 -0
- web3-6.20.1/tests/core/utilities/test_prepare_transaction_replacement.py +129 -0
- web3-6.20.1/tests/core/utilities/test_select_filter_method.py +44 -0
- web3-6.20.1/tests/core/utilities/test_threads.py +107 -0
- web3-6.20.1/tests/core/utilities/test_valid_transaction_params.py +174 -0
- web3-6.20.1/tests/core/utilities/test_validation.py +145 -0
- web3-6.20.1/tests/core/web3-module/test_api.py +2 -0
- web3-6.20.1/tests/core/web3-module/test_attach_modules.py +107 -0
- web3-6.20.1/tests/core/web3-module/test_client_version.py +2 -0
- web3-6.20.1/tests/core/web3-module/test_conversions.py +257 -0
- web3-6.20.1/tests/core/web3-module/test_import_and_version.py +5 -0
- web3-6.20.1/tests/core/web3-module/test_keccak.py +123 -0
- web3-6.20.1/tests/core/web3-module/test_providers.py +32 -0
- web3-6.20.1/tests/core/web3-module/test_strict_bytes_type_checking.py +106 -0
- web3-6.20.1/tests/core/web3-module/test_web3_inheritance.py +12 -0
- web3-6.20.1/tests/ens/conftest.py +661 -0
- web3-6.20.1/tests/ens/normalization/normalization_tests.json +1 -0
- web3-6.20.1/tests/ens/normalization/test_normalize_name_ensip15.py +47 -0
- web3-6.20.1/tests/ens/test_ens.py +279 -0
- web3-6.20.1/tests/ens/test_get_registry.py +53 -0
- web3-6.20.1/tests/ens/test_get_text.py +166 -0
- web3-6.20.1/tests/ens/test_nameprep.py +37 -0
- web3-6.20.1/tests/ens/test_offchain_resolution.py +234 -0
- web3-6.20.1/tests/ens/test_setup_address.py +288 -0
- web3-6.20.1/tests/ens/test_setup_name.py +250 -0
- web3-6.20.1/tests/ens/test_utils.py +229 -0
- web3-6.20.1/tests/ens/test_wildcard_resolution.py +48 -0
- web3-6.20.1/tests/integration/.DS_Store +0 -0
- web3-6.20.1/tests/integration/README.md +94 -0
- web3-6.20.1/tests/integration/common.py +23 -0
- web3-6.20.1/tests/integration/conftest.py +108 -0
- web3-6.20.1/tests/integration/generate_fixtures/common.py +236 -0
- web3-6.20.1/tests/integration/generate_fixtures/go_ethereum.py +370 -0
- web3-6.20.1/tests/integration/go_ethereum/common.py +116 -0
- web3-6.20.1/tests/integration/go_ethereum/conftest.py +413 -0
- web3-6.20.1/tests/integration/go_ethereum/test_goethereum_http.py +170 -0
- web3-6.20.1/tests/integration/go_ethereum/test_goethereum_ipc.py +90 -0
- web3-6.20.1/tests/integration/go_ethereum/utils.py +65 -0
- web3-6.20.1/tests/integration/test_ethereum_tester.py +673 -0
- web3-6.20.1/tests/utils.py +87 -0
- {web3-6.19.0 → web3-6.20.1}/web3/__init__.py +21 -3
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/module_testing/module_testing_utils.py +12 -9
- {web3-6.19.0 → web3-6.20.1}/web3/providers/__init__.py +19 -0
- {web3-6.19.0 → web3-6.20.1}/web3/providers/persistent.py +10 -4
- {web3-6.19.0 → web3-6.20.1}/web3/providers/websocket/websocket_v2.py +2 -3
- web3-6.20.1/web3/scripts/release/__init__.py +0 -0
- web3-6.20.1/web3/tools/benchmark/__init__.py +0 -0
- web3-6.20.1/web3/tools/pytest_ethereum/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/types.py +27 -1
- {web3-6.19.0 → web3-6.20.1}/web3.egg-info/PKG-INFO +1 -1
- {web3-6.19.0 → web3-6.20.1}/web3.egg-info/SOURCES.txt +164 -0
- {web3-6.19.0 → web3-6.20.1}/LICENSE +0 -0
- {web3-6.19.0 → web3-6.20.1}/MANIFEST.in +0 -0
- {web3-6.19.0 → web3-6.20.1}/README.md +0 -0
- {web3-6.19.0 → web3-6.20.1}/ens/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ens/_normalization.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ens/abis.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ens/async_ens.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ens/auto.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ens/base_ens.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ens/constants.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ens/contract_data.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ens/ens.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ens/exceptions.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ens/specs/nf.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ens/specs/normalization_spec.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ens/utils.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/_utils/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/_utils/backend.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/_utils/cache.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/_utils/chains.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/_utils/contract.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/_utils/deployments.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/_utils/ipfs.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/_utils/protobuf/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/_utils/protobuf/ipfs_file_pb2.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/_utils/registry.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/ens/v3.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/escrow/with_bytecode_v3.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/ipfs_file.proto +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/owned/output_v3.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/owned/with_contract_type_v3.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/registry/contracts/Authority.sol +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/registry/contracts/IndexedOrderedSetLib.sol +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/registry/contracts/PackageDB.sol +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/registry/contracts/PackageRegistry.sol +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/registry/contracts/PackageRegistryInterface.sol +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/registry/contracts/ReleaseDB.sol +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/registry/contracts/ReleaseValidator.sol +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/registry/solc_input.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/registry/solc_output.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/registry/v3.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/safe-math-lib/v3-strict-no-deployments.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/simple-registry/contracts/Ownable.sol +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/simple-registry/contracts/PackageRegistry.sol +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/simple-registry/contracts/PackageRegistryInterface.sol +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/simple-registry/solc_input.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/simple-registry/solc_output.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/simple-registry/v3.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/standard-token/output_v3.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/standard-token/with_bytecode_v3.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/vyper_registry/0.1.0.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/vyper_registry/registry.vy +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/assets/vyper_registry/registry_with_delete.vy +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/backends/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/backends/base.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/backends/http.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/backends/ipfs.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/backends/registry.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/constants.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/contract.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/dependencies.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/deployments.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/escrow/1.0.0-pretty.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/escrow/1.0.0.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/escrow/contracts/Escrow.sol +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/escrow/contracts/SafeSendLib.sol +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/escrow/v3-pretty.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/escrow/v3.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/owned/1.0.0-pretty.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/owned/1.0.0.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/owned/contracts/Owned.sol +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/owned/v3-pretty.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/owned/v3.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/piper-coin/1.0.0-pretty.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/piper-coin/1.0.0.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/piper-coin/v3-pretty.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/piper-coin/v3.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/safe-math-lib/1.0.0-pretty.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/safe-math-lib/1.0.0.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/safe-math-lib/contracts/SafeMathLib.sol +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/safe-math-lib/v3-pretty.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/safe-math-lib/v3.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/standard-token/1.0.0-pretty.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/standard-token/1.0.0.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/standard-token/contracts/AbstractToken.sol +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/standard-token/contracts/StandardToken.sol +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/standard-token/v3-pretty.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/standard-token/v3.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/transferable/1.0.0-pretty.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/transferable/1.0.0.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/transferable/contracts/Transferable.sol +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/transferable/v3-pretty.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/transferable/v3.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/wallet/1.0.0-pretty.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/wallet/1.0.0.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/wallet/contracts/Wallet.sol +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/wallet/v3-pretty.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/wallet/v3.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/wallet-with-send/1.0.0-pretty.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/wallet-with-send/1.0.0.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/wallet-with-send/contracts/WalletWithSend.sol +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/wallet-with-send/v3-pretty.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/examples/wallet-with-send/v3.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/spec/package.spec.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/ethpm-spec/spec/v3.spec.json +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/exceptions.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/package.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/tools/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/tools/builder.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/tools/checker.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/tools/get_manifest.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/uri.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/validation/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/validation/manifest.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/validation/misc.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/validation/package.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/ethpm/validation/uri.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/setup.cfg +0 -0
- {web3-6.19.0/web3/_utils → web3-6.20.1/tests}/__init__.py +0 -0
- {web3-6.19.0/web3/_utils/contract_sources → web3-6.20.1/tests/core/utilities}/__init__.py +0 -0
- {web3-6.19.0/web3/_utils/contract_sources/contract_data → web3-6.20.1/tests/integration/go_ethereum}/__init__.py +0 -0
- {web3-6.19.0/web3/gas_strategies → web3-6.20.1/web3/_utils}/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/abi.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/async_caching.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/async_transactions.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/blocks.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/caching.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/compat/__init__.py +0 -0
- {web3-6.19.0/web3/scripts → web3-6.20.1/web3/_utils/contract_sources}/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/compile_contracts.py +0 -0
- {web3-6.19.0/web3/scripts/release → web3-6.20.1/web3/_utils/contract_sources/contract_data}/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/_custom_contract_data.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/address_reflector.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/arrays_contract.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/bytes_contracts.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/constructor_contracts.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/contract_caller_tester.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/emitter_contract.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/event_contracts.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/extended_resolver.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/fallback_function_contract.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/function_name_tester_contract.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/math_contract.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/offchain_lookup.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/offchain_resolver.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/panic_errors_contract.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/payable_tester.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/receive_function_contracts.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/reflector_contracts.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/revert_contract.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/simple_resolver.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/storage_contract.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/string_contract.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contract_sources/contract_data/tuple_contracts.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/contracts.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/datatypes.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/decorators.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/empty.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/encoding.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/ens.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/error_formatters_utils.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/events.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/fee_utils.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/filters.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/formatters.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/function_identifiers.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/http.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/hypothesis.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/math.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/method_formatters.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/miner.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/module.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/module_testing/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/module_testing/eth_module.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/module_testing/go_ethereum_admin_module.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/module_testing/go_ethereum_personal_module.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/module_testing/go_ethereum_txpool_module.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/module_testing/net_module.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/module_testing/persistent_connection_provider.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/module_testing/web3_module.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/normalizers.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/request.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/rpc_abi.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/threads.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/transactions.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/type_conversion.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/utility_methods.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/validation.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/_utils/windows.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/auto/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/auto/gethdev.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/beacon/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/beacon/api_endpoints.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/beacon/async_beacon.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/beacon/main.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/constants.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/contract/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/contract/async_contract.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/contract/base_contract.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/contract/contract.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/contract/utils.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/datastructures.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/eth/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/eth/async_eth.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/eth/base_eth.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/eth/eth.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/exceptions.py +0 -0
- {web3-6.19.0/web3/tools/benchmark → web3-6.20.1/web3/gas_strategies}/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/gas_strategies/rpc.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/gas_strategies/time_based.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/geth.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/logs.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/main.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/manager.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/method.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/abi.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/async_cache.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/attrdict.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/buffered_gas_estimate.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/cache.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/exception_handling.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/exception_retry_request.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/filter.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/fixture.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/formatting.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/gas_price_strategy.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/geth_poa.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/names.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/normalize_request_parameters.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/pythonic.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/signing.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/simulate_unmined_transaction.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/stalecheck.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/middleware/validation.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/module.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/net.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/pm.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/providers/async_base.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/providers/async_rpc.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/providers/auto.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/providers/base.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/providers/eth_tester/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/providers/eth_tester/defaults.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/providers/eth_tester/main.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/providers/eth_tester/middleware.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/providers/ipc.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/providers/rpc.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/providers/websocket/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/providers/websocket/request_processor.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/providers/websocket/websocket.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/providers/websocket/websocket_connection.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/py.typed +0 -0
- {web3-6.19.0/web3/tools/pytest_ethereum → web3-6.20.1/web3/scripts}/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/scripts/release/test_package.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/testing.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/tools/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/tools/benchmark/main.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/tools/benchmark/node.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/tools/benchmark/reporting.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/tools/benchmark/utils.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/tools/pytest_ethereum/_utils.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/tools/pytest_ethereum/deployer.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/tools/pytest_ethereum/exceptions.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/tools/pytest_ethereum/linker.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/tools/pytest_ethereum/plugins.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/tracing.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/utils/__init__.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/utils/abi.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/utils/address.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/utils/async_exception_handling.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/utils/caching.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3/utils/exception_handling.py +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3.egg-info/dependency_links.txt +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3.egg-info/entry_points.txt +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3.egg-info/not-zip-safe +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3.egg-info/requires.txt +0 -0
- {web3-6.19.0 → web3-6.20.1}/web3.egg-info/top_level.txt +0 -0
|
@@ -34,7 +34,7 @@ log_date_format = "%m-%d %H:%M:%S"
|
|
|
34
34
|
[tool.towncrier]
|
|
35
35
|
# Read https://github.com/ethereum/web3.py/blob/main/newsfragments/README.md for instructions
|
|
36
36
|
package = "web3"
|
|
37
|
-
filename = "docs/
|
|
37
|
+
filename = "docs/release_notes.rst"
|
|
38
38
|
directory = "newsfragments"
|
|
39
39
|
underlines = ["-", "~", "^"]
|
|
40
40
|
title_format = "web3.py v{version} ({project_date})"
|
|
@@ -51,7 +51,7 @@ with open("./README.md") as readme:
|
|
|
51
51
|
setup(
|
|
52
52
|
name="web3",
|
|
53
53
|
# *IMPORTANT*: Don't manually change the version here. Use the 'bumpversion' utility.
|
|
54
|
-
version="6.
|
|
54
|
+
version="6.20.1",
|
|
55
55
|
description="""web3.py""",
|
|
56
56
|
long_description_content_type="text/markdown",
|
|
57
57
|
long_description=long_description,
|
|
Binary file
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from random import (
|
|
3
|
+
randint,
|
|
4
|
+
)
|
|
5
|
+
|
|
6
|
+
import pytest_asyncio
|
|
7
|
+
|
|
8
|
+
from web3._utils.request import (
|
|
9
|
+
_async_session_cache,
|
|
10
|
+
)
|
|
11
|
+
from web3.beacon import (
|
|
12
|
+
AsyncBeacon,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
# tested against lighthouse which uses port 5052 by default
|
|
16
|
+
BASE_URL = "http://localhost:5052"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _assert_valid_response(response):
|
|
20
|
+
# assert valid response according to Beacon API spec
|
|
21
|
+
assert isinstance(response, dict)
|
|
22
|
+
assert "data" in response
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@pytest.fixture
|
|
26
|
+
def async_beacon():
|
|
27
|
+
return AsyncBeacon(base_url=BASE_URL)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@pytest_asyncio.fixture(autouse=True)
|
|
31
|
+
async def _cleanup():
|
|
32
|
+
yield
|
|
33
|
+
[await session.close() for _, session in _async_session_cache.items()]
|
|
34
|
+
_async_session_cache.clear()
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
# sanity check to make sure the positive test cases are valid
|
|
38
|
+
@pytest.mark.asyncio
|
|
39
|
+
async def test_async_cl_beacon_raises_exception_on_invalid_url(async_beacon):
|
|
40
|
+
with pytest.raises(ValueError):
|
|
41
|
+
await async_beacon._async_make_get_request(
|
|
42
|
+
BASE_URL + "/eth/v1/beacon/nonexistent"
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@pytest.mark.asyncio
|
|
47
|
+
async def test_async_beacon_user_request_timeout():
|
|
48
|
+
beacon = AsyncBeacon(base_url=BASE_URL, request_timeout=0.001)
|
|
49
|
+
with pytest.raises(TimeoutError):
|
|
50
|
+
await beacon.get_validators()
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
# Beacon endpoint tests:
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
@pytest.mark.asyncio
|
|
57
|
+
async def test_async_cl_beacon_get_genesis(async_beacon):
|
|
58
|
+
response = await async_beacon.get_genesis()
|
|
59
|
+
_assert_valid_response(response)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
@pytest.mark.asyncio
|
|
63
|
+
async def test_async_cl_beacon_get_hash_root(async_beacon):
|
|
64
|
+
response = await async_beacon.get_hash_root()
|
|
65
|
+
_assert_valid_response(response)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
@pytest.mark.asyncio
|
|
69
|
+
async def test_async_cl_beacon_get_fork_data(async_beacon):
|
|
70
|
+
response = await async_beacon.get_fork_data()
|
|
71
|
+
_assert_valid_response(response)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
@pytest.mark.asyncio
|
|
75
|
+
async def test_async_cl_beacon_get_finality_checkpoint(async_beacon):
|
|
76
|
+
response = await async_beacon.get_finality_checkpoint()
|
|
77
|
+
_assert_valid_response(response)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
@pytest.mark.asyncio
|
|
81
|
+
async def test_async_cl_beacon_get_validators(async_beacon):
|
|
82
|
+
response = await async_beacon.get_validators()
|
|
83
|
+
_assert_valid_response(response)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
@pytest.mark.asyncio
|
|
87
|
+
async def test_async_cl_beacon_get_validator(async_beacon):
|
|
88
|
+
validators_response = await async_beacon.get_validators()
|
|
89
|
+
_assert_valid_response(validators_response)
|
|
90
|
+
|
|
91
|
+
validators = validators_response["data"]
|
|
92
|
+
random_validator = validators[randint(0, len(validators))]
|
|
93
|
+
random_validator_pubkey = random_validator["validator"]["pubkey"]
|
|
94
|
+
|
|
95
|
+
response = await async_beacon.get_validator(random_validator_pubkey)
|
|
96
|
+
_assert_valid_response(response)
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
@pytest.mark.asyncio
|
|
100
|
+
async def test_async_cl_beacon_get_validator_balances(async_beacon):
|
|
101
|
+
response = await async_beacon.get_validator_balances()
|
|
102
|
+
_assert_valid_response(response)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
@pytest.mark.asyncio
|
|
106
|
+
async def test_async_cl_beacon_get_epoch_committees(async_beacon):
|
|
107
|
+
response = await async_beacon.get_epoch_committees()
|
|
108
|
+
_assert_valid_response(response)
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
@pytest.mark.asyncio
|
|
112
|
+
async def test_async_cl_beacon_get_epoch_sync_committees(async_beacon):
|
|
113
|
+
response = await async_beacon.get_epoch_sync_committees()
|
|
114
|
+
_assert_valid_response(response)
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
@pytest.mark.asyncio
|
|
118
|
+
async def test_async_cl_beacon_get_epoch_randao(async_beacon):
|
|
119
|
+
response = await async_beacon.get_epoch_randao()
|
|
120
|
+
_assert_valid_response(response)
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
@pytest.mark.asyncio
|
|
124
|
+
async def test_async_cl_beacon_get_block_headers(async_beacon):
|
|
125
|
+
response = await async_beacon.get_block_headers()
|
|
126
|
+
_assert_valid_response(response)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
@pytest.mark.asyncio
|
|
130
|
+
async def test_async_cl_beacon_get_block_header(async_beacon):
|
|
131
|
+
response = await async_beacon.get_block_header("head")
|
|
132
|
+
_assert_valid_response(response)
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
@pytest.mark.asyncio
|
|
136
|
+
async def test_async_cl_beacon_get_block(async_beacon):
|
|
137
|
+
response = await async_beacon.get_block("head")
|
|
138
|
+
_assert_valid_response(response)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
@pytest.mark.asyncio
|
|
142
|
+
async def test_async_cl_beacon_get_block_root(async_beacon):
|
|
143
|
+
response = await async_beacon.get_block_root("head")
|
|
144
|
+
_assert_valid_response(response)
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
@pytest.mark.asyncio
|
|
148
|
+
async def test_async_cl_beacon_get_blinded_blocks(async_beacon):
|
|
149
|
+
response = await async_beacon.get_blinded_blocks("head")
|
|
150
|
+
_assert_valid_response(response)
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
@pytest.mark.asyncio
|
|
154
|
+
async def test_async_cl_beacon_get_rewards(async_beacon):
|
|
155
|
+
response = await async_beacon.get_rewards("head")
|
|
156
|
+
_assert_valid_response(response)
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
@pytest.mark.asyncio
|
|
160
|
+
async def test_async_cl_beacon_get_block_attestations(async_beacon):
|
|
161
|
+
response = await async_beacon.get_block_attestations("head")
|
|
162
|
+
_assert_valid_response(response)
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
@pytest.mark.asyncio
|
|
166
|
+
async def test_async_cl_beacon_get_attestations(async_beacon):
|
|
167
|
+
response = await async_beacon.get_attestations()
|
|
168
|
+
_assert_valid_response(response)
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
@pytest.mark.asyncio
|
|
172
|
+
async def test_async_cl_beacon_get_attester_slashings(async_beacon):
|
|
173
|
+
response = await async_beacon.get_attester_slashings()
|
|
174
|
+
_assert_valid_response(response)
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
@pytest.mark.asyncio
|
|
178
|
+
async def test_async_cl_beacon_get_proposer_slashings(async_beacon):
|
|
179
|
+
response = await async_beacon.get_proposer_slashings()
|
|
180
|
+
_assert_valid_response(response)
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
@pytest.mark.asyncio
|
|
184
|
+
async def test_async_cl_beacon_get_voluntary_exits(async_beacon):
|
|
185
|
+
response = await async_beacon.get_voluntary_exits()
|
|
186
|
+
_assert_valid_response(response)
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
@pytest.mark.asyncio
|
|
190
|
+
async def test_async_cl_beacon_get_bls_to_execution_changes(async_beacon):
|
|
191
|
+
response = await async_beacon.get_bls_to_execution_changes()
|
|
192
|
+
_assert_valid_response(response)
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
# Config endpoint tests:
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
@pytest.mark.asyncio
|
|
199
|
+
async def test_async_cl_config_get_fork_schedule(async_beacon):
|
|
200
|
+
response = await async_beacon.get_fork_schedule()
|
|
201
|
+
_assert_valid_response(response)
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
@pytest.mark.asyncio
|
|
205
|
+
async def test_async_cl_config_get_spec(async_beacon):
|
|
206
|
+
response = await async_beacon.get_spec()
|
|
207
|
+
_assert_valid_response(response)
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
@pytest.mark.asyncio
|
|
211
|
+
async def test_async_cl_config_get_deposit_contract(async_beacon):
|
|
212
|
+
response = await async_beacon.get_deposit_contract()
|
|
213
|
+
_assert_valid_response(response)
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
# Debug endpoint tests:
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
@pytest.mark.asyncio
|
|
220
|
+
async def test_async_cl_debug_get_beacon_state(async_beacon):
|
|
221
|
+
response = await async_beacon.get_beacon_state()
|
|
222
|
+
_assert_valid_response(response)
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
@pytest.mark.asyncio
|
|
226
|
+
async def test_async_cl_debug_get_beacon_heads(async_beacon):
|
|
227
|
+
response = await async_beacon.get_beacon_heads()
|
|
228
|
+
_assert_valid_response(response)
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
# Node endpoint tests:
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
@pytest.mark.asyncio
|
|
235
|
+
async def test_async_cl_node_get_node_identity(async_beacon):
|
|
236
|
+
response = await async_beacon.get_node_identity()
|
|
237
|
+
_assert_valid_response(response)
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
@pytest.mark.asyncio
|
|
241
|
+
async def test_async_cl_node_get_peers(async_beacon):
|
|
242
|
+
response = await async_beacon.get_peers()
|
|
243
|
+
_assert_valid_response(response)
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
@pytest.mark.asyncio
|
|
247
|
+
async def test_async_cl_node_get_peer(async_beacon):
|
|
248
|
+
response = await async_beacon.get_peer("")
|
|
249
|
+
_assert_valid_response(response)
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
@pytest.mark.asyncio
|
|
253
|
+
async def test_async_cl_node_get_health(async_beacon):
|
|
254
|
+
response = await async_beacon.get_health()
|
|
255
|
+
assert isinstance(response, int)
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
@pytest.mark.asyncio
|
|
259
|
+
async def test_async_cl_node_get_version(async_beacon):
|
|
260
|
+
response = await async_beacon.get_version()
|
|
261
|
+
_assert_valid_response(response)
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
@pytest.mark.asyncio
|
|
265
|
+
async def test_async_cl_node_get_syncing(async_beacon):
|
|
266
|
+
response = await async_beacon.get_syncing()
|
|
267
|
+
_assert_valid_response(response)
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from random import (
|
|
3
|
+
randint,
|
|
4
|
+
)
|
|
5
|
+
|
|
6
|
+
from requests import (
|
|
7
|
+
Timeout,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
from web3._utils.request import (
|
|
11
|
+
_session_cache,
|
|
12
|
+
)
|
|
13
|
+
from web3.beacon import (
|
|
14
|
+
Beacon,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
# tested against lighthouse which uses port 5052 by default
|
|
18
|
+
BASE_URL = "http://localhost:5052"
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def _assert_valid_response(response):
|
|
22
|
+
# assert valid response according to Beacon API spec
|
|
23
|
+
assert isinstance(response, dict)
|
|
24
|
+
assert "data" in response
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@pytest.fixture
|
|
28
|
+
def beacon():
|
|
29
|
+
return Beacon(base_url=BASE_URL)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@pytest.fixture(autouse=True)
|
|
33
|
+
def _cleanup():
|
|
34
|
+
yield
|
|
35
|
+
_session_cache.clear()
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
# sanity check to make sure the positive test cases are valid
|
|
39
|
+
def test_cl_beacon_raises_exception_on_invalid_url(beacon):
|
|
40
|
+
with pytest.raises(ValueError):
|
|
41
|
+
beacon._make_get_request(BASE_URL + "/eth/v1/beacon/nonexistent")
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def test_beacon_user_defined_request_timeout():
|
|
45
|
+
beacon = Beacon(base_url=BASE_URL, request_timeout=0.001)
|
|
46
|
+
with pytest.raises(Timeout):
|
|
47
|
+
beacon.get_validators()
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
# Beacon endpoint tests:
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def test_cl_beacon_get_genesis(beacon):
|
|
54
|
+
response = beacon.get_genesis()
|
|
55
|
+
_assert_valid_response(response)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def test_cl_beacon_get_hash_root(beacon):
|
|
59
|
+
response = beacon.get_hash_root()
|
|
60
|
+
_assert_valid_response(response)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def test_cl_beacon_get_fork_data(beacon):
|
|
64
|
+
response = beacon.get_fork_data()
|
|
65
|
+
_assert_valid_response(response)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def test_cl_beacon_get_finality_checkpoint(beacon):
|
|
69
|
+
response = beacon.get_finality_checkpoint()
|
|
70
|
+
_assert_valid_response(response)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def test_cl_beacon_get_validators(beacon):
|
|
74
|
+
response = beacon.get_validators()
|
|
75
|
+
_assert_valid_response(response)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def test_cl_beacon_get_validator(beacon):
|
|
79
|
+
validators_response = beacon.get_validators()
|
|
80
|
+
_assert_valid_response(validators_response)
|
|
81
|
+
|
|
82
|
+
validators = validators_response["data"]
|
|
83
|
+
random_validator = validators[randint(0, len(validators))]
|
|
84
|
+
random_validator_pubkey = random_validator["validator"]["pubkey"]
|
|
85
|
+
|
|
86
|
+
response = beacon.get_validator(random_validator_pubkey)
|
|
87
|
+
_assert_valid_response(response)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def test_cl_beacon_get_validator_balances(beacon):
|
|
91
|
+
response = beacon.get_validator_balances()
|
|
92
|
+
_assert_valid_response(response)
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def test_cl_beacon_get_epoch_committees(beacon):
|
|
96
|
+
response = beacon.get_epoch_committees()
|
|
97
|
+
_assert_valid_response(response)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def test_cl_beacon_get_epoch_sync_committees(beacon):
|
|
101
|
+
response = beacon.get_epoch_sync_committees()
|
|
102
|
+
_assert_valid_response(response)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def test_cl_beacon_get_epoch_randao(beacon):
|
|
106
|
+
response = beacon.get_epoch_randao()
|
|
107
|
+
_assert_valid_response(response)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def test_cl_beacon_get_block_headers(beacon):
|
|
111
|
+
response = beacon.get_block_headers()
|
|
112
|
+
_assert_valid_response(response)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def test_cl_beacon_get_block_header(beacon):
|
|
116
|
+
response = beacon.get_block_header("head")
|
|
117
|
+
_assert_valid_response(response)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
def test_cl_beacon_get_block(beacon):
|
|
121
|
+
response = beacon.get_block("head")
|
|
122
|
+
_assert_valid_response(response)
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def test_cl_beacon_get_block_root(beacon):
|
|
126
|
+
response = beacon.get_block_root("head")
|
|
127
|
+
_assert_valid_response(response)
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def test_cl_beacon_get_blinded_blocks(beacon):
|
|
131
|
+
response = beacon.get_blinded_blocks("head")
|
|
132
|
+
_assert_valid_response(response)
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def test_cl_beacon_get_rewards(beacon):
|
|
136
|
+
response = beacon.get_rewards("head")
|
|
137
|
+
_assert_valid_response(response)
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
def test_cl_beacon_get_block_attestations(beacon):
|
|
141
|
+
response = beacon.get_block_attestations("head")
|
|
142
|
+
_assert_valid_response(response)
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
def test_cl_beacon_get_attestations(beacon):
|
|
146
|
+
response = beacon.get_attestations()
|
|
147
|
+
_assert_valid_response(response)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def test_cl_beacon_get_attester_slashings(beacon):
|
|
151
|
+
response = beacon.get_attester_slashings()
|
|
152
|
+
_assert_valid_response(response)
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
def test_cl_beacon_get_proposer_slashings(beacon):
|
|
156
|
+
response = beacon.get_proposer_slashings()
|
|
157
|
+
_assert_valid_response(response)
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
def test_cl_beacon_get_voluntary_exits(beacon):
|
|
161
|
+
response = beacon.get_voluntary_exits()
|
|
162
|
+
_assert_valid_response(response)
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
def test_cl_beacon_get_bls_to_execution_changes(beacon):
|
|
166
|
+
response = beacon.get_bls_to_execution_changes()
|
|
167
|
+
_assert_valid_response(response)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
# Config endpoint tests:
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
def test_cl_config_get_fork_schedule(beacon):
|
|
174
|
+
response = beacon.get_fork_schedule()
|
|
175
|
+
_assert_valid_response(response)
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
def test_cl_config_get_spec(beacon):
|
|
179
|
+
response = beacon.get_spec()
|
|
180
|
+
_assert_valid_response(response)
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
def test_cl_config_get_deposit_contract(beacon):
|
|
184
|
+
response = beacon.get_deposit_contract()
|
|
185
|
+
_assert_valid_response(response)
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
# Debug endpoint tests:
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
def test_cl_debug_get_beacon_state(beacon):
|
|
192
|
+
response = beacon.get_beacon_state()
|
|
193
|
+
_assert_valid_response(response)
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
def test_cl_debug_get_beacon_heads(beacon):
|
|
197
|
+
response = beacon.get_beacon_heads()
|
|
198
|
+
_assert_valid_response(response)
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
# Node endpoint tests:
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
def test_cl_node_get_node_identity(beacon):
|
|
205
|
+
response = beacon.get_node_identity()
|
|
206
|
+
_assert_valid_response(response)
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
def test_cl_node_get_peers(beacon):
|
|
210
|
+
response = beacon.get_peers()
|
|
211
|
+
_assert_valid_response(response)
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
def test_cl_node_get_peer(beacon):
|
|
215
|
+
response = beacon.get_peer("")
|
|
216
|
+
_assert_valid_response(response)
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
def test_cl_node_get_health(beacon):
|
|
220
|
+
response = beacon.get_health()
|
|
221
|
+
assert isinstance(response, int)
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
def test_cl_node_get_version(beacon):
|
|
225
|
+
response = beacon.get_version()
|
|
226
|
+
_assert_valid_response(response)
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
def test_cl_node_get_syncing(beacon):
|
|
230
|
+
response = beacon.get_syncing()
|
|
231
|
+
_assert_valid_response(response)
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
|
|
3
|
+
from eth_utils import (
|
|
4
|
+
event_signature_to_log_topic,
|
|
5
|
+
to_bytes,
|
|
6
|
+
)
|
|
7
|
+
from eth_utils.toolz import (
|
|
8
|
+
identity,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
from web3._utils.contract_sources.contract_data.emitter_contract import (
|
|
12
|
+
EMITTER_CONTRACT_DATA,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
from .utils import (
|
|
16
|
+
get_open_port,
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@pytest.fixture(scope="module", params=[lambda x: to_bytes(hexstr=x), identity])
|
|
21
|
+
def address_conversion_func(request):
|
|
22
|
+
return request.param
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@pytest.fixture()
|
|
26
|
+
def open_port():
|
|
27
|
+
return get_open_port()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def pytest_addoption(parser):
|
|
31
|
+
parser.addoption("--flaky", action="store_true")
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# --- session-scoped constants --- #
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@pytest.fixture(scope="session")
|
|
38
|
+
def emitter_contract_data():
|
|
39
|
+
return EMITTER_CONTRACT_DATA
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class LogFunctions:
|
|
43
|
+
# These appear to be for a very specific test and this doesn't need to be updated
|
|
44
|
+
# for every event in the emitter contract. That ends up breaking that test.
|
|
45
|
+
LogAnonymous = 0
|
|
46
|
+
LogNoArguments = 1
|
|
47
|
+
LogSingleArg = 2
|
|
48
|
+
LogDoubleArg = 3
|
|
49
|
+
LogTripleArg = 4
|
|
50
|
+
LogQuadrupleArg = 5
|
|
51
|
+
LogSingleAnonymous = 6
|
|
52
|
+
LogSingleWithIndex = 7
|
|
53
|
+
LogDoubleAnonymous = 8
|
|
54
|
+
LogDoubleWithIndex = 9
|
|
55
|
+
LogTripleWithIndex = 10
|
|
56
|
+
LogQuadrupleWithIndex = 11
|
|
57
|
+
LogBytes = 12
|
|
58
|
+
LogString = 13
|
|
59
|
+
LogDynamicArgs = 14
|
|
60
|
+
LogListArgs = 15
|
|
61
|
+
LogAddressIndexed = 16
|
|
62
|
+
LogAddressNotIndexed = 17
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
@pytest.fixture(scope="session")
|
|
66
|
+
def emitter_contract_event_ids():
|
|
67
|
+
return LogFunctions
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class LogTopics:
|
|
71
|
+
LogAnonymous = event_signature_to_log_topic("LogAnonymous()")
|
|
72
|
+
LogNoArguments = event_signature_to_log_topic("LogNoArguments()")
|
|
73
|
+
LogSingleArg = event_signature_to_log_topic("LogSingleArg(uint256)")
|
|
74
|
+
LogSingleAnonymous = event_signature_to_log_topic("LogSingleAnonymous(uint256)")
|
|
75
|
+
LogSingleWithIndex = event_signature_to_log_topic("LogSingleWithIndex(uint256)")
|
|
76
|
+
LogDoubleArg = event_signature_to_log_topic("LogDoubleArg(uint256,uint256)")
|
|
77
|
+
LogDoubleAnonymous = event_signature_to_log_topic(
|
|
78
|
+
"LogDoubleAnonymous(uint256,uint256)"
|
|
79
|
+
)
|
|
80
|
+
LogDoubleWithIndex = event_signature_to_log_topic(
|
|
81
|
+
"LogDoubleWithIndex(uint256,uint256)"
|
|
82
|
+
)
|
|
83
|
+
LogTripleArg = event_signature_to_log_topic("LogTripleArg(uint256,uint256,uint256)")
|
|
84
|
+
LogTripleWithIndex = event_signature_to_log_topic(
|
|
85
|
+
"LogTripleWithIndex(uint256,uint256,uint256)"
|
|
86
|
+
)
|
|
87
|
+
LogQuadrupleArg = event_signature_to_log_topic(
|
|
88
|
+
"LogQuadrupleArg(uint256,uint256,uint256,uint256)"
|
|
89
|
+
)
|
|
90
|
+
LogQuadrupleWithIndex = event_signature_to_log_topic(
|
|
91
|
+
"LogQuadrupleWithIndex(uint256,uint256,uint256,uint256)",
|
|
92
|
+
)
|
|
93
|
+
LogBytes = event_signature_to_log_topic("LogBytes(bytes)")
|
|
94
|
+
LogString = event_signature_to_log_topic("LogString(string)")
|
|
95
|
+
LogDynamicArgs = event_signature_to_log_topic("LogDynamicArgs(string,string)")
|
|
96
|
+
LogListArgs = event_signature_to_log_topic("LogListArgs(bytes2[],bytes2[])")
|
|
97
|
+
LogAddressIndexed = event_signature_to_log_topic(
|
|
98
|
+
"LogAddressIndexed(address,address)"
|
|
99
|
+
)
|
|
100
|
+
LogAddressNotIndexed = event_signature_to_log_topic(
|
|
101
|
+
"LogAddressNotIndexed(address,address)"
|
|
102
|
+
)
|
|
103
|
+
LogStructArgs = event_signature_to_log_topic("LogStructArgs(uint256,tuple)")
|
|
104
|
+
LogIndexedAndNotIndexed = event_signature_to_log_topic("LogIndexedAndNotIndexed()")
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
@pytest.fixture(scope="session")
|
|
108
|
+
def emitter_contract_log_topics():
|
|
109
|
+
return LogTopics
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
def test_admin_add_peer(w3, skip_if_testrpc):
|
|
2
|
+
skip_if_testrpc(w3)
|
|
3
|
+
|
|
4
|
+
result = w3.geth.admin.add_peer(
|
|
5
|
+
"enode://44826a5d6a55f88a18298bca4773fca5749cdc3a5c9f308aa7d810e9b31123f3e7c5fba0b1d70aac5308426f47df2a128a6747040a3815cc7dd7167d03be320d@127.0.0.1:30304", # noqa: E501
|
|
6
|
+
)
|
|
7
|
+
assert result is True
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
|
|
3
|
+
from eth_utils.toolz import (
|
|
4
|
+
partial,
|
|
5
|
+
)
|
|
6
|
+
|
|
7
|
+
from web3._utils.blocks import (
|
|
8
|
+
select_method_for_block_identifier,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
selector_fn = partial(
|
|
12
|
+
select_method_for_block_identifier,
|
|
13
|
+
if_hash="test_hash",
|
|
14
|
+
if_number="test_number",
|
|
15
|
+
if_predefined="test_predefined",
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@pytest.mark.parametrize(
|
|
20
|
+
"input,expected",
|
|
21
|
+
(
|
|
22
|
+
("latest", "test_predefined"),
|
|
23
|
+
("pending", "test_predefined"),
|
|
24
|
+
("earliest", "test_predefined"),
|
|
25
|
+
("safe", "test_predefined"),
|
|
26
|
+
("finalized", "test_predefined"),
|
|
27
|
+
(-1, ValueError),
|
|
28
|
+
(0, "test_number"),
|
|
29
|
+
(1, "test_number"),
|
|
30
|
+
(4000000, "test_number"),
|
|
31
|
+
("0x0", "test_number"),
|
|
32
|
+
("0x00", "test_number"),
|
|
33
|
+
("0x1", "test_number"),
|
|
34
|
+
("0x01", "test_number"),
|
|
35
|
+
(hex(4000000), "test_number"),
|
|
36
|
+
("0x" + "".zfill(64), "test_hash"),
|
|
37
|
+
),
|
|
38
|
+
)
|
|
39
|
+
def test_select_method_for_block_identifier(input, expected):
|
|
40
|
+
if isinstance(expected, type) and issubclass(expected, Exception):
|
|
41
|
+
with pytest.raises(expected):
|
|
42
|
+
selector_fn(input)
|
|
43
|
+
else:
|
|
44
|
+
actual = selector_fn(input)
|
|
45
|
+
assert actual == expected
|