web3 7.14.0__tar.gz → 8.0.0b1__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.14.0 → web3-8.0.0b1}/PKG-INFO +13 -12
- {web3-7.14.0 → web3-8.0.0b1}/README.md +1 -1
- {web3-7.14.0 → web3-8.0.0b1}/ens/_normalization.py +23 -29
- {web3-7.14.0 → web3-8.0.0b1}/ens/async_ens.py +30 -24
- {web3-7.14.0 → web3-8.0.0b1}/ens/base_ens.py +2 -3
- {web3-7.14.0 → web3-8.0.0b1}/ens/ens.py +18 -20
- {web3-7.14.0 → web3-8.0.0b1}/ens/utils.py +6 -10
- {web3-7.14.0 → web3-8.0.0b1}/pyproject.toml +2 -1
- {web3-7.14.0 → web3-8.0.0b1}/setup.py +8 -8
- {web3-7.14.0 → web3-8.0.0b1}/tests/conftest.py +1 -4
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/caching-utils/test_request_caching.py +1 -7
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_call_interface.py +63 -20
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/providers/test_auto_provider.py +0 -6
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/providers/test_provider_init.py +0 -2
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/providers/test_websocket_provider.py +5 -2
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_abi.py +14 -19
- web3-8.0.0b1/tests/integration/common.py +2 -0
- web3-8.0.0b1/tests/integration/geth-1.16.7-fixture.zip +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/integration/go_ethereum/conftest.py +1 -1
- {web3-7.14.0 → web3-8.0.0b1}/tests/utils.py +2 -33
- {web3-7.14.0 → web3-8.0.0b1}/web3/__init__.py +0 -4
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/abi.py +38 -40
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/async_transactions.py +6 -9
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/batching.py +11 -15
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/blocks.py +1 -2
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/caching/caching_utils.py +12 -17
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/caching/request_caching_validation.py +7 -9
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/compat/__init__.py +2 -2
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/compile_contracts.py +4 -6
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contracts.py +25 -29
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/datatypes.py +6 -10
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/decorators.py +1 -3
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/encoding.py +10 -14
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/ens.py +4 -5
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/events.py +19 -24
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/filters.py +23 -29
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/formatters.py +8 -13
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/http_session_manager.py +11 -15
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/math.py +1 -2
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/method_formatters.py +41 -43
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/module.py +3 -6
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/module_testing/eth_module.py +7 -9
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/module_testing/go_ethereum_admin_module.py +1 -2
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/module_testing/module_testing_utils.py +9 -5
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/module_testing/persistent_connection_provider.py +3 -7
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/module_testing/utils.py +32 -21
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/normalizers.py +21 -24
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/rpc_abi.py +8 -11
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/threads.py +3 -4
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/transactions.py +3 -6
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/type_conversion.py +2 -6
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/utility_methods.py +5 -7
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/validation.py +6 -8
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/windows.py +1 -4
- {web3-7.14.0 → web3-8.0.0b1}/web3/beacon/async_beacon.py +51 -55
- {web3-7.14.0 → web3-8.0.0b1}/web3/beacon/beacon.py +50 -54
- {web3-7.14.0 → web3-8.0.0b1}/web3/contract/async_contract.py +38 -46
- {web3-7.14.0 → web3-8.0.0b1}/web3/contract/base_contract.py +70 -75
- {web3-7.14.0 → web3-8.0.0b1}/web3/contract/contract.py +39 -43
- {web3-7.14.0 → web3-8.0.0b1}/web3/contract/utils.py +47 -51
- {web3-7.14.0 → web3-8.0.0b1}/web3/datastructures.py +10 -15
- {web3-7.14.0 → web3-8.0.0b1}/web3/eth/async_eth.py +64 -70
- {web3-7.14.0 → web3-8.0.0b1}/web3/eth/base_eth.py +40 -44
- {web3-7.14.0 → web3-8.0.0b1}/web3/eth/eth.py +50 -66
- {web3-7.14.0 → web3-8.0.0b1}/web3/exceptions.py +8 -13
- {web3-7.14.0 → web3-8.0.0b1}/web3/gas_strategies/rpc.py +1 -7
- {web3-7.14.0 → web3-8.0.0b1}/web3/gas_strategies/time_based.py +2 -3
- {web3-7.14.0 → web3-8.0.0b1}/web3/geth.py +17 -17
- {web3-7.14.0 → web3-8.0.0b1}/web3/main.py +43 -52
- {web3-7.14.0 → web3-8.0.0b1}/web3/manager.py +32 -35
- {web3-7.14.0 → web3-8.0.0b1}/web3/method.py +22 -29
- {web3-7.14.0 → web3-8.0.0b1}/web3/middleware/base.py +5 -8
- {web3-7.14.0 → web3-8.0.0b1}/web3/middleware/filter.py +41 -46
- {web3-7.14.0 → web3-8.0.0b1}/web3/middleware/formatting.py +5 -6
- {web3-7.14.0 → web3-8.0.0b1}/web3/middleware/names.py +1 -3
- {web3-7.14.0 → web3-8.0.0b1}/web3/middleware/signing.py +3 -4
- {web3-7.14.0 → web3-8.0.0b1}/web3/middleware/stalecheck.py +1 -2
- {web3-7.14.0 → web3-8.0.0b1}/web3/middleware/validation.py +1 -2
- {web3-7.14.0 → web3-8.0.0b1}/web3/module.py +11 -14
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/__init__.py +0 -4
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/async_base.py +21 -27
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/auto.py +9 -20
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/base.py +12 -17
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/eth_tester/defaults.py +4 -8
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/eth_tester/main.py +4 -8
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/eth_tester/middleware.py +2 -4
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/ipc.py +6 -10
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/persistent/async_ipc.py +4 -7
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/persistent/persistent.py +22 -25
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/persistent/persistent_connection.py +2 -4
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/persistent/request_processor.py +11 -32
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/persistent/subscription_container.py +5 -8
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/persistent/subscription_manager.py +13 -19
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/persistent/websocket.py +15 -12
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/rpc/async_rpc.py +10 -16
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/rpc/rpc.py +11 -17
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/rpc/utils.py +2 -3
- {web3-7.14.0 → web3-8.0.0b1}/web3/scripts/release/test_package.py +1 -4
- {web3-7.14.0 → web3-8.0.0b1}/web3/testing.py +1 -5
- {web3-7.14.0 → web3-8.0.0b1}/web3/tracing.py +9 -13
- {web3-7.14.0 → web3-8.0.0b1}/web3/types.py +49 -56
- {web3-7.14.0 → web3-8.0.0b1}/web3/utils/abi.py +28 -33
- {web3-7.14.0 → web3-8.0.0b1}/web3/utils/async_exception_handling.py +1 -2
- {web3-7.14.0 → web3-8.0.0b1}/web3/utils/caching.py +6 -10
- {web3-7.14.0 → web3-8.0.0b1}/web3/utils/exception_handling.py +1 -2
- {web3-7.14.0 → web3-8.0.0b1}/web3/utils/subscriptions.py +30 -34
- {web3-7.14.0 → web3-8.0.0b1}/web3.egg-info/PKG-INFO +13 -12
- {web3-7.14.0 → web3-8.0.0b1}/web3.egg-info/SOURCES.txt +1 -4
- {web3-7.14.0 → web3-8.0.0b1}/web3.egg-info/requires.txt +9 -7
- web3-7.14.0/tests/core/providers/test_legacy_websocket_provider.py +0 -29
- web3-7.14.0/tests/integration/common.py +0 -23
- web3-7.14.0/tests/integration/geth-1.16.2-fixture.zip +0 -0
- web3-7.14.0/tests/integration/go_ethereum/test_goethereum_legacy_ws.py +0 -102
- web3-7.14.0/web3/providers/legacy_websocket.py +0 -159
- {web3-7.14.0 → web3-8.0.0b1}/LICENSE +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/MANIFEST.in +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/ens/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/ens/abis.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/ens/auto.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/ens/constants.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/ens/contract_data.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/ens/exceptions.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/ens/specs/nf.json +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/ens/specs/normalization_spec.json +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/scripts/release/test_package.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/setup.cfg +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/beacon/test_async_beacon.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/beacon/test_beacon.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/admin-module/test_admin_addPeer.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/admin-module/test_admin_nodeInfo.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/admin-module/test_admin_peers.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/block-utils/test_select_method_for_block_identifier.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/caching-utils/test_generate_cache_key.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/conftest.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/conftest.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_ambiguous_events.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_ambiguous_functions.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_attributes.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_build_transaction.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_caller_interface.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_class_construction.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_constructor.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_constructor_encoding.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_deployment.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_estimate_gas.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_events.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_events_build_filter.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_example.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_init.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_method_abi_decoding.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_method_abi_encoding.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_method_to_argument_matching.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_panic_errors.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_transact_interface.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_contract_util_functions.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_extracting_event_data.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_extracting_event_data_old.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/test_offchain_lookup.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/contracts/utils.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/datastructures/test_datastructures.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/empty-object/test_empty_object_is_falsy.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/eth-module/conftest.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/eth-module/test_accounts.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/eth-module/test_block_api.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/eth-module/test_default_account_api.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/eth-module/test_eth_contract.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/eth-module/test_eth_fee_history.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/eth-module/test_eth_filter.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/eth-module/test_eth_properties.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/eth-module/test_gas_pricing.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/eth-module/test_poa.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/eth-module/test_transactions.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/eth-tester-api/test_withdrawals.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/exceptions/test_exceptions.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/filtering/conftest.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/filtering/test_basic_filter_tests.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/filtering/test_contract_create_filter_topic_merging.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/filtering/test_contract_data_filters.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/filtering/test_contract_get_logs.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/filtering/test_contract_on_event_filtering.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/filtering/test_contract_past_event_filtering.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/filtering/test_contract_topic_filters.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/filtering/test_existing_filter_instance.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/filtering/test_filter_against_latest_blocks.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/filtering/test_filter_against_pending_transactions.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/filtering/test_filter_against_transaction_logs.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/filtering/test_filters_against_many_blocks.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/filtering/test_utils_functions.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/filtering/utils.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/gas-strategies/test_rpc_gas_pricing_strategies.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/gas-strategies/test_time_based_gas_price_strategy.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/manager/conftest.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/manager/test_default_middlewares.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/manager/test_middleware_can_be_stateful.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/manager/test_middleware_onion_api.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/manager/test_provider_property.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/manager/test_provider_request_wrapping.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/manager/test_response_formatters.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/method-class/test_method.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/method-class/test_result_formatters.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/middleware/test_attrdict_middleware.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/middleware/test_eth_tester_middleware.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/middleware/test_filter_middleware.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/middleware/test_formatting_middleware.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/middleware/test_gas_price_strategy.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/middleware/test_middleware.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/middleware/test_name_to_address_middleware.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/middleware/test_stalecheck.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/middleware/test_transaction_signing.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/module-class/test_module.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/providers/test_async_http_provider.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/providers/test_async_ipc_provider.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/providers/test_async_tester_provider.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/providers/test_base_provider.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/providers/test_http_provider.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/providers/test_http_request_retry.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/providers/test_ipc_provider.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/providers/test_tester_provider.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/subscriptions/test_subscription_manager.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/subscriptions/test_subscriptions.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/test_library_files.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/testing-module/test_testing_mine.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/testing-module/test_testing_snapshot_and_revert.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/testing-module/test_testing_timeTravel.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/conftest.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_abi_filtering_by_argument_name.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_abi_is_encodable.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_abi_named_tree.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_address.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_async_transaction.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_attach_modules.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_attributedict.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_caching_utils.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_construct_event_data_set.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_construct_event_filter_params.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_construct_event_topics.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_datatypes.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_decorators.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_encoding.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_event_filter_builder.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_event_interface.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_fee_utils.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_formatters.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_http_session_manager.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_is_predefined_block_number.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_is_probably_enum.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_is_recognized_type.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_math.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_method_formatters.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_prepare_transaction_replacement.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_select_filter_method.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_threads.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_valid_transaction_params.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/utilities/test_validation.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/web3-module/test_api.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/web3-module/test_attach_modules.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/web3-module/test_client_version.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/web3-module/test_conversions.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/web3-module/test_import_and_version.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/web3-module/test_keccak.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/web3-module/test_providers.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/web3-module/test_strict_bytes_type_checking.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/core/web3-module/test_web3_inheritance.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/ens/conftest.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/ens/normalization/normalization_tests.json +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/ens/normalization/test_normalize_name_ensip15.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/ens/test_ens.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/ens/test_get_registry.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/ens/test_get_text.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/ens/test_nameprep.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/ens/test_offchain_resolution.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/ens/test_setup_address.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/ens/test_setup_name.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/ens/test_utils.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/ens/test_wildcard_resolution.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/integration/README.md +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/integration/conftest.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/integration/generate_fixtures/common.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/integration/generate_fixtures/go_ethereum.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/integration/go_ethereum/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/integration/go_ethereum/common.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/integration/go_ethereum/test_goethereum_http.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/integration/go_ethereum/test_goethereum_ipc.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/integration/go_ethereum/test_goethereum_ws/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/integration/go_ethereum/test_goethereum_ws/conftest.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/integration/go_ethereum/test_goethereum_ws/test_async_await_w3.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/integration/go_ethereum/test_goethereum_ws/test_async_ctx_manager_w3.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/integration/go_ethereum/test_goethereum_ws/test_async_iterator_w3.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/integration/go_ethereum/utils.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/tests/integration/test_ethereum_tester.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/abi_element_identifiers.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/async_caching.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/caching/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/_custom_contract_data.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/ambiguous_function_contract.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/arrays_contract.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/bytes_contracts.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/constructor_contracts.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/contract_caller_tester.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/emitter_contract.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/event_contracts.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/extended_resolver.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/fallback_function_contract.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/function_name_tester_contract.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/math_contract.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/offchain_lookup.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/offchain_resolver.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/panic_errors_contract.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/payable_tester.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/receive_function_contracts.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/reflector_contracts.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/revert_contract.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/simple_resolver.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/storage_contract.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/string_contract.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/contract_sources/contract_data/tuple_contracts.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/empty.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/error_formatters_utils.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/fee_utils.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/http.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/hypothesis.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/module_testing/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/module_testing/go_ethereum_debug_module.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/module_testing/go_ethereum_txpool_module.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/module_testing/net_module.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/_utils/module_testing/web3_module.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/auto/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/auto/gethdev.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/beacon/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/beacon/api_endpoints.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/constants.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/contract/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/eth/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/gas_strategies/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/logs.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/middleware/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/middleware/attrdict.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/middleware/buffered_gas_estimate.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/middleware/gas_price_strategy.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/middleware/proof_of_authority.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/middleware/pythonic.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/net.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/eth_tester/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/persistent/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/persistent/utils.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/providers/rpc/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/py.typed +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/scripts/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/scripts/install_pre_releases.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/scripts/parse_pygeth_version.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/scripts/release/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/utils/__init__.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3/utils/address.py +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3.egg-info/dependency_links.txt +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3.egg-info/not-zip-safe +0 -0
- {web3-7.14.0 → web3-8.0.0b1}/web3.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: web3
|
|
3
|
-
Version:
|
|
3
|
+
Version: 8.0.0b1
|
|
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
|
|
@@ -12,20 +12,19 @@ Classifier: Intended Audience :: Developers
|
|
|
12
12
|
Classifier: License :: OSI Approved :: MIT License
|
|
13
13
|
Classifier: Natural Language :: English
|
|
14
14
|
Classifier: Programming Language :: Python :: 3
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
17
15
|
Classifier: Programming Language :: Python :: 3.10
|
|
18
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
19
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
18
|
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
-
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
+
Requires-Python: >=3.10, <4
|
|
22
21
|
Description-Content-Type: text/markdown
|
|
23
22
|
License-File: LICENSE
|
|
24
23
|
Requires-Dist: eth-abi>=5.0.1
|
|
25
24
|
Requires-Dist: eth-account>=0.13.6
|
|
26
25
|
Requires-Dist: eth-hash[pycryptodome]>=0.5.1
|
|
27
26
|
Requires-Dist: eth-typing>=5.0.0
|
|
28
|
-
Requires-Dist: eth-utils>=5.
|
|
27
|
+
Requires-Dist: eth-utils>=5.3.0
|
|
29
28
|
Requires-Dist: hexbytes>=1.2.0
|
|
30
29
|
Requires-Dist: aiohttp>=3.7.4.post0
|
|
31
30
|
Requires-Dist: pydantic>=2.4.0
|
|
@@ -33,11 +32,11 @@ Requires-Dist: pywin32>=223; platform_system == "Windows"
|
|
|
33
32
|
Requires-Dist: requests>=2.23.0
|
|
34
33
|
Requires-Dist: typing-extensions>=4.0.1
|
|
35
34
|
Requires-Dist: types-requests>=2.0.0
|
|
36
|
-
Requires-Dist: websockets
|
|
35
|
+
Requires-Dist: websockets>=14.0.0
|
|
37
36
|
Requires-Dist: pyunormalize>=15.0.0
|
|
38
37
|
Provides-Extra: tester
|
|
39
38
|
Requires-Dist: eth-tester[py-evm]<0.14.0b1,>=0.13.0b1; extra == "tester"
|
|
40
|
-
Requires-Dist: py-geth>=
|
|
39
|
+
Requires-Dist: py-geth>=6.4.0; extra == "tester"
|
|
41
40
|
Provides-Extra: dev
|
|
42
41
|
Requires-Dist: build>=0.9.0; extra == "dev"
|
|
43
42
|
Requires-Dist: bump_my_version>=0.19.0; extra == "dev"
|
|
@@ -50,7 +49,7 @@ Requires-Dist: sphinx>=6.0.0; extra == "dev"
|
|
|
50
49
|
Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "dev"
|
|
51
50
|
Requires-Dist: sphinx_rtd_theme>=1.0.0; extra == "dev"
|
|
52
51
|
Requires-Dist: towncrier<25,>=24; extra == "dev"
|
|
53
|
-
Requires-Dist: pytest-asyncio
|
|
52
|
+
Requires-Dist: pytest-asyncio>=1.3.0; extra == "dev"
|
|
54
53
|
Requires-Dist: pytest-mock>=1.10; extra == "dev"
|
|
55
54
|
Requires-Dist: pytest-xdist>=2.4.0; extra == "dev"
|
|
56
55
|
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
@@ -59,15 +58,16 @@ Requires-Dist: hypothesis>=3.31.2; extra == "dev"
|
|
|
59
58
|
Requires-Dist: tox>=4.0.0; extra == "dev"
|
|
60
59
|
Requires-Dist: mypy==1.10.0; extra == "dev"
|
|
61
60
|
Requires-Dist: pre-commit>=3.4.0; extra == "dev"
|
|
61
|
+
Requires-Dist: cached-property>=2.0.1; extra == "dev"
|
|
62
62
|
Requires-Dist: eth-tester[py-evm]<0.14.0b1,>=0.13.0b1; extra == "dev"
|
|
63
|
-
Requires-Dist: py-geth>=
|
|
63
|
+
Requires-Dist: py-geth>=6.4.0; extra == "dev"
|
|
64
64
|
Provides-Extra: docs
|
|
65
65
|
Requires-Dist: sphinx>=6.0.0; extra == "docs"
|
|
66
66
|
Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "docs"
|
|
67
67
|
Requires-Dist: sphinx_rtd_theme>=1.0.0; extra == "docs"
|
|
68
68
|
Requires-Dist: towncrier<25,>=24; extra == "docs"
|
|
69
69
|
Provides-Extra: test
|
|
70
|
-
Requires-Dist: pytest-asyncio
|
|
70
|
+
Requires-Dist: pytest-asyncio>=1.3.0; extra == "test"
|
|
71
71
|
Requires-Dist: pytest-mock>=1.10; extra == "test"
|
|
72
72
|
Requires-Dist: pytest-xdist>=2.4.0; extra == "test"
|
|
73
73
|
Requires-Dist: pytest>=7.0.0; extra == "test"
|
|
@@ -76,8 +76,9 @@ Requires-Dist: hypothesis>=3.31.2; extra == "test"
|
|
|
76
76
|
Requires-Dist: tox>=4.0.0; extra == "test"
|
|
77
77
|
Requires-Dist: mypy==1.10.0; extra == "test"
|
|
78
78
|
Requires-Dist: pre-commit>=3.4.0; extra == "test"
|
|
79
|
+
Requires-Dist: cached-property>=2.0.1; extra == "test"
|
|
79
80
|
Requires-Dist: eth-tester[py-evm]<0.14.0b1,>=0.13.0b1; extra == "test"
|
|
80
|
-
Requires-Dist: py-geth>=
|
|
81
|
+
Requires-Dist: py-geth>=6.4.0; extra == "test"
|
|
81
82
|
Dynamic: author
|
|
82
83
|
Dynamic: author-email
|
|
83
84
|
Dynamic: classifier
|
|
@@ -104,7 +105,7 @@ Dynamic: summary
|
|
|
104
105
|
|
|
105
106
|
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.
|
|
106
107
|
|
|
107
|
-
- Python 3.
|
|
108
|
+
- Python 3.10+ support
|
|
108
109
|
|
|
109
110
|
## Installation
|
|
110
111
|
|
|
@@ -5,13 +5,7 @@ import json
|
|
|
5
5
|
import os
|
|
6
6
|
from typing import (
|
|
7
7
|
Any,
|
|
8
|
-
Dict,
|
|
9
|
-
List,
|
|
10
8
|
Literal,
|
|
11
|
-
Optional,
|
|
12
|
-
Set,
|
|
13
|
-
Tuple,
|
|
14
|
-
Union,
|
|
15
9
|
)
|
|
16
10
|
|
|
17
11
|
from pyunormalize import (
|
|
@@ -27,9 +21,9 @@ from .exceptions import (
|
|
|
27
21
|
|
|
28
22
|
|
|
29
23
|
def _json_list_mapping_to_dict(
|
|
30
|
-
f:
|
|
24
|
+
f: dict[str, Any],
|
|
31
25
|
list_mapped_key: str,
|
|
32
|
-
) ->
|
|
26
|
+
) -> dict[str, Any]:
|
|
33
27
|
"""
|
|
34
28
|
Takes a `[key, [value]]` mapping from the original ENS spec json files and turns it
|
|
35
29
|
into a `{key: value}` mapping.
|
|
@@ -67,17 +61,17 @@ class TokenType(Enum):
|
|
|
67
61
|
class Token:
|
|
68
62
|
type: Literal[TokenType.TEXT, TokenType.EMOJI]
|
|
69
63
|
_original_text: str
|
|
70
|
-
_original_codepoints:
|
|
71
|
-
_normalized_codepoints:
|
|
64
|
+
_original_codepoints: list[int]
|
|
65
|
+
_normalized_codepoints: list[int] | None = None
|
|
72
66
|
|
|
73
67
|
restricted: bool = False
|
|
74
68
|
|
|
75
|
-
def __init__(self, codepoints:
|
|
69
|
+
def __init__(self, codepoints: list[int]) -> None:
|
|
76
70
|
self._original_codepoints = codepoints
|
|
77
71
|
self._original_text = "".join(chr(cp) for cp in codepoints)
|
|
78
72
|
|
|
79
73
|
@property
|
|
80
|
-
def codepoints(self) ->
|
|
74
|
+
def codepoints(self) -> list[int]:
|
|
81
75
|
return (
|
|
82
76
|
self._normalized_codepoints
|
|
83
77
|
if self._normalized_codepoints
|
|
@@ -99,12 +93,12 @@ class TextToken(Token):
|
|
|
99
93
|
|
|
100
94
|
class Label:
|
|
101
95
|
type: str
|
|
102
|
-
tokens:
|
|
96
|
+
tokens: list[Token]
|
|
103
97
|
|
|
104
98
|
def __init__(
|
|
105
99
|
self,
|
|
106
100
|
type: str = None,
|
|
107
|
-
tokens:
|
|
101
|
+
tokens: list[Token] = None,
|
|
108
102
|
) -> None:
|
|
109
103
|
self.type = type
|
|
110
104
|
self.tokens = tokens
|
|
@@ -118,9 +112,9 @@ class Label:
|
|
|
118
112
|
|
|
119
113
|
|
|
120
114
|
class ENSNormalizedName:
|
|
121
|
-
labels:
|
|
115
|
+
labels: list[Label]
|
|
122
116
|
|
|
123
|
-
def __init__(self, normalized_labels:
|
|
117
|
+
def __init__(self, normalized_labels: list[Label]) -> None:
|
|
124
118
|
self.labels = normalized_labels
|
|
125
119
|
|
|
126
120
|
@property
|
|
@@ -140,7 +134,7 @@ VALID_BY_GROUPS = {
|
|
|
140
134
|
}
|
|
141
135
|
|
|
142
136
|
|
|
143
|
-
def _extract_valid_codepoints() ->
|
|
137
|
+
def _extract_valid_codepoints() -> set[int]:
|
|
144
138
|
all_valid = set()
|
|
145
139
|
for _name, valid_cps in VALID_BY_GROUPS.items():
|
|
146
140
|
all_valid.update(valid_cps)
|
|
@@ -148,20 +142,20 @@ def _extract_valid_codepoints() -> Set[int]:
|
|
|
148
142
|
return all_valid
|
|
149
143
|
|
|
150
144
|
|
|
151
|
-
def _construct_whole_confusable_map() ->
|
|
145
|
+
def _construct_whole_confusable_map() -> dict[int, set[str]]:
|
|
152
146
|
"""
|
|
153
147
|
Create a mapping, per confusable, that contains all the groups in the cp's whole
|
|
154
148
|
confusable excluding the confusable extent of the cp itself - as per the spec at
|
|
155
149
|
https://docs.ens.domains/ens-improvement-proposals/ensip-15-normalization-standard
|
|
156
150
|
"""
|
|
157
|
-
whole_map:
|
|
151
|
+
whole_map: dict[int, set[str]] = {}
|
|
158
152
|
for whole in NORMALIZATION_SPEC["wholes"]:
|
|
159
|
-
whole_confusables:
|
|
160
|
-
confusable_extents:
|
|
153
|
+
whole_confusables: set[int] = set(whole["valid"] + whole["confused"])
|
|
154
|
+
confusable_extents: list[tuple[set[int], set[str]]] = []
|
|
161
155
|
|
|
162
156
|
for confusable_cp in whole_confusables:
|
|
163
157
|
# create confusable extents for all whole confusables
|
|
164
|
-
groups:
|
|
158
|
+
groups: set[str] = set()
|
|
165
159
|
for gn, gv in VALID_BY_GROUPS.items():
|
|
166
160
|
if confusable_cp in gv:
|
|
167
161
|
groups.add(gn)
|
|
@@ -181,7 +175,7 @@ def _construct_whole_confusable_map() -> Dict[int, Set[str]]:
|
|
|
181
175
|
confusable_extents.append(({confusable_cp}, groups))
|
|
182
176
|
|
|
183
177
|
for confusable_cp in whole_confusables:
|
|
184
|
-
confusable_cp_extent_groups:
|
|
178
|
+
confusable_cp_extent_groups: set[str] = set()
|
|
185
179
|
|
|
186
180
|
if confusable_cp in whole["confused"]:
|
|
187
181
|
whole_map[confusable_cp] = set()
|
|
@@ -209,13 +203,13 @@ def _is_fenced(cp: int) -> bool:
|
|
|
209
203
|
return cp in [fenced[0] for fenced in NORMALIZATION_SPEC["fenced"]]
|
|
210
204
|
|
|
211
205
|
|
|
212
|
-
def _codepoints_to_text(cps:
|
|
206
|
+
def _codepoints_to_text(cps: list[list[int]] | list[int]) -> str:
|
|
213
207
|
return "".join(
|
|
214
208
|
chr(cp) if isinstance(cp, int) else _codepoints_to_text(cp) for cp in cps
|
|
215
209
|
)
|
|
216
210
|
|
|
217
211
|
|
|
218
|
-
def _validate_tokens_and_get_label_type(tokens:
|
|
212
|
+
def _validate_tokens_and_get_label_type(tokens: list[Token]) -> str:
|
|
219
213
|
"""
|
|
220
214
|
Validate tokens and return the label type.
|
|
221
215
|
|
|
@@ -388,7 +382,7 @@ def _validate_tokens_and_get_label_type(tokens: List[Token]) -> str:
|
|
|
388
382
|
return chars_group_name
|
|
389
383
|
|
|
390
384
|
|
|
391
|
-
def _build_and_validate_label_from_tokens(tokens:
|
|
385
|
+
def _build_and_validate_label_from_tokens(tokens: list[Token]) -> Label:
|
|
392
386
|
for token in tokens:
|
|
393
387
|
if token.type == TokenType.TEXT:
|
|
394
388
|
# apply NFC normalization to text tokens
|
|
@@ -404,7 +398,7 @@ def _build_and_validate_label_from_tokens(tokens: List[Token]) -> Label:
|
|
|
404
398
|
return label
|
|
405
399
|
|
|
406
400
|
|
|
407
|
-
def _buffer_codepoints_to_chars(buffer:
|
|
401
|
+
def _buffer_codepoints_to_chars(buffer: list[int] | list[list[int]]) -> str:
|
|
408
402
|
return "".join(
|
|
409
403
|
"".join(chr(c) for c in char) if isinstance(char, list) else chr(char)
|
|
410
404
|
for char in buffer
|
|
@@ -438,8 +432,8 @@ def normalize_name_ensip15(name: str) -> ENSNormalizedName:
|
|
|
438
432
|
# _input takes the label and breaks it into a list of unicode code points
|
|
439
433
|
# e.g. "xyz👨🏻" -> [120, 121, 122, 128104, 127995]
|
|
440
434
|
_input = [ord(c) for c in label_str]
|
|
441
|
-
buffer:
|
|
442
|
-
tokens:
|
|
435
|
+
buffer: list[int] = []
|
|
436
|
+
tokens: list[Token] = []
|
|
443
437
|
|
|
444
438
|
while len(_input) > 0:
|
|
445
439
|
emoji_codepoint = None
|
|
@@ -7,8 +7,6 @@ from typing import (
|
|
|
7
7
|
Coroutine,
|
|
8
8
|
Optional,
|
|
9
9
|
Sequence,
|
|
10
|
-
Tuple,
|
|
11
|
-
Union,
|
|
12
10
|
cast,
|
|
13
11
|
)
|
|
14
12
|
|
|
@@ -103,8 +101,8 @@ class AsyncENS(BaseENS):
|
|
|
103
101
|
def __init__(
|
|
104
102
|
self,
|
|
105
103
|
provider: Optional["AsyncBaseProvider"] = None,
|
|
106
|
-
addr:
|
|
107
|
-
middleware:
|
|
104
|
+
addr: ChecksumAddress | None = None,
|
|
105
|
+
middleware: Sequence[tuple["Middleware", str]] | None = None,
|
|
108
106
|
) -> None:
|
|
109
107
|
"""
|
|
110
108
|
:param provider: a single provider used to connect to Ethereum
|
|
@@ -137,7 +135,11 @@ class AsyncENS(BaseENS):
|
|
|
137
135
|
"""
|
|
138
136
|
provider = w3.manager.provider
|
|
139
137
|
middleware = w3.middleware_onion.middleware
|
|
140
|
-
ns = cls(
|
|
138
|
+
ns = cls(
|
|
139
|
+
cast("AsyncBaseProvider", provider),
|
|
140
|
+
addr=addr,
|
|
141
|
+
middleware=middleware,
|
|
142
|
+
)
|
|
141
143
|
|
|
142
144
|
# inherit strict bytes checking from w3 instance
|
|
143
145
|
ns.strict_bytes_type_checking = w3.strict_bytes_type_checking
|
|
@@ -147,8 +149,8 @@ class AsyncENS(BaseENS):
|
|
|
147
149
|
async def address(
|
|
148
150
|
self,
|
|
149
151
|
name: str,
|
|
150
|
-
coin_type:
|
|
151
|
-
) ->
|
|
152
|
+
coin_type: int | None = None,
|
|
153
|
+
) -> ChecksumAddress | None:
|
|
152
154
|
"""
|
|
153
155
|
Look up the Ethereum address that `name` currently points to.
|
|
154
156
|
|
|
@@ -163,7 +165,10 @@ class AsyncENS(BaseENS):
|
|
|
163
165
|
else:
|
|
164
166
|
r = await self.resolver(name)
|
|
165
167
|
await _async_validate_resolver_and_interface_id(
|
|
166
|
-
name,
|
|
168
|
+
name,
|
|
169
|
+
r,
|
|
170
|
+
ENS_MULTICHAIN_ADDRESS_INTERFACE_ID,
|
|
171
|
+
"addr(bytes32,uint256)",
|
|
167
172
|
)
|
|
168
173
|
node = raw_name_to_hash(name)
|
|
169
174
|
address_as_bytes = await r.caller.addr(node, coin_type)
|
|
@@ -174,12 +179,12 @@ class AsyncENS(BaseENS):
|
|
|
174
179
|
async def setup_address(
|
|
175
180
|
self,
|
|
176
181
|
name: str,
|
|
177
|
-
address:
|
|
178
|
-
|
|
179
|
-
),
|
|
180
|
-
coin_type:
|
|
182
|
+
address: Address
|
|
183
|
+
| ChecksumAddress
|
|
184
|
+
| HexAddress = cast(ChecksumAddress, default), # noqa: B008
|
|
185
|
+
coin_type: int | None = None,
|
|
181
186
|
transact: Optional["TxParams"] = None,
|
|
182
|
-
) ->
|
|
187
|
+
) -> HexBytes | None:
|
|
183
188
|
"""
|
|
184
189
|
Set up the name to point to the supplied address.
|
|
185
190
|
The sender of the transaction must own the name, or
|
|
@@ -228,7 +233,7 @@ class AsyncENS(BaseENS):
|
|
|
228
233
|
transact
|
|
229
234
|
)
|
|
230
235
|
|
|
231
|
-
async def name(self, address: ChecksumAddress) ->
|
|
236
|
+
async def name(self, address: ChecksumAddress) -> str | None:
|
|
232
237
|
"""
|
|
233
238
|
Look up the name that the address points to, using a
|
|
234
239
|
reverse lookup. Reverse lookup is opt-in for name owners.
|
|
@@ -248,7 +253,7 @@ class AsyncENS(BaseENS):
|
|
|
248
253
|
async def setup_name(
|
|
249
254
|
self,
|
|
250
255
|
name: str,
|
|
251
|
-
address:
|
|
256
|
+
address: ChecksumAddress | None = None,
|
|
252
257
|
transact: Optional["TxParams"] = None,
|
|
253
258
|
) -> HexBytes:
|
|
254
259
|
"""
|
|
@@ -314,7 +319,7 @@ class AsyncENS(BaseENS):
|
|
|
314
319
|
name: str,
|
|
315
320
|
new_owner: ChecksumAddress = None,
|
|
316
321
|
transact: Optional["TxParams"] = None,
|
|
317
|
-
) ->
|
|
322
|
+
) -> ChecksumAddress | None:
|
|
318
323
|
"""
|
|
319
324
|
Set the owner of the supplied name to `new_owner`.
|
|
320
325
|
|
|
@@ -437,7 +442,7 @@ class AsyncENS(BaseENS):
|
|
|
437
442
|
self,
|
|
438
443
|
normal_name: str,
|
|
439
444
|
fn_name: str = "addr",
|
|
440
|
-
) ->
|
|
445
|
+
) -> tuple[Optional["AsyncContract"], str]:
|
|
441
446
|
current_name = normal_name
|
|
442
447
|
|
|
443
448
|
# look for a resolver, starting at the full name and taking the
|
|
@@ -454,7 +459,8 @@ class AsyncENS(BaseENS):
|
|
|
454
459
|
if not is_none_or_zero_address(resolver_addr):
|
|
455
460
|
# if resolver found, return it
|
|
456
461
|
resolver = cast(
|
|
457
|
-
"AsyncContract",
|
|
462
|
+
"AsyncContract",
|
|
463
|
+
self._type_aware_resolver(resolver_addr, fn_name),
|
|
458
464
|
)
|
|
459
465
|
return resolver, current_name
|
|
460
466
|
|
|
@@ -464,7 +470,7 @@ class AsyncENS(BaseENS):
|
|
|
464
470
|
async def _set_resolver(
|
|
465
471
|
self,
|
|
466
472
|
name: str,
|
|
467
|
-
resolver_addr:
|
|
473
|
+
resolver_addr: ChecksumAddress | None = None,
|
|
468
474
|
transact: Optional["TxParams"] = None,
|
|
469
475
|
) -> "AsyncContract":
|
|
470
476
|
if not transact:
|
|
@@ -487,7 +493,7 @@ class AsyncENS(BaseENS):
|
|
|
487
493
|
self,
|
|
488
494
|
name: str,
|
|
489
495
|
fn_name: str = "addr",
|
|
490
|
-
) ->
|
|
496
|
+
) -> ChecksumAddress | str | None:
|
|
491
497
|
normal_name = normalize_name(name)
|
|
492
498
|
|
|
493
499
|
resolver, current_name = await self._get_resolver(normal_name, fn_name)
|
|
@@ -523,7 +529,7 @@ class AsyncENS(BaseENS):
|
|
|
523
529
|
self,
|
|
524
530
|
account: ChecksumAddress,
|
|
525
531
|
name: str,
|
|
526
|
-
parent_owned:
|
|
532
|
+
parent_owned: str | None = None,
|
|
527
533
|
) -> None:
|
|
528
534
|
if not address_in(account, await self.w3.eth.accounts):
|
|
529
535
|
raise UnauthorizedError(
|
|
@@ -533,7 +539,7 @@ class AsyncENS(BaseENS):
|
|
|
533
539
|
|
|
534
540
|
async def _first_owner(
|
|
535
541
|
self, name: str
|
|
536
|
-
) ->
|
|
542
|
+
) -> tuple[ChecksumAddress | None, Sequence[str], str]:
|
|
537
543
|
"""
|
|
538
544
|
Takes a name, and returns the owner of the deepest subdomain that has an owner
|
|
539
545
|
|
|
@@ -554,7 +560,7 @@ class AsyncENS(BaseENS):
|
|
|
554
560
|
owner: ChecksumAddress,
|
|
555
561
|
unowned: Sequence[str],
|
|
556
562
|
owned: str,
|
|
557
|
-
old_owner:
|
|
563
|
+
old_owner: ChecksumAddress | None = None,
|
|
558
564
|
transact: Optional["TxParams"] = None,
|
|
559
565
|
) -> None:
|
|
560
566
|
if not transact:
|
|
@@ -575,7 +581,7 @@ class AsyncENS(BaseENS):
|
|
|
575
581
|
|
|
576
582
|
async def _setup_reverse(
|
|
577
583
|
self,
|
|
578
|
-
name:
|
|
584
|
+
name: str | None,
|
|
579
585
|
address: ChecksumAddress,
|
|
580
586
|
transact: Optional["TxParams"] = None,
|
|
581
587
|
) -> HexBytes:
|
|
@@ -4,7 +4,6 @@ from functools import (
|
|
|
4
4
|
from typing import (
|
|
5
5
|
TYPE_CHECKING,
|
|
6
6
|
Any,
|
|
7
|
-
Type,
|
|
8
7
|
Union,
|
|
9
8
|
)
|
|
10
9
|
|
|
@@ -40,8 +39,8 @@ if TYPE_CHECKING:
|
|
|
40
39
|
class BaseENS:
|
|
41
40
|
w3: Union["AsyncWeb3[Any]", "Web3"] = None
|
|
42
41
|
ens: Union["Contract", "AsyncContract"] = None
|
|
43
|
-
_resolver_contract:
|
|
44
|
-
_reverse_resolver_contract:
|
|
42
|
+
_resolver_contract: type["Contract"] | type["AsyncContract"] = None
|
|
43
|
+
_reverse_resolver_contract: type["Contract"] | type["AsyncContract"] = None
|
|
45
44
|
|
|
46
45
|
@property
|
|
47
46
|
def strict_bytes_type_checking(self) -> bool:
|
|
@@ -6,8 +6,6 @@ from typing import (
|
|
|
6
6
|
Any,
|
|
7
7
|
Optional,
|
|
8
8
|
Sequence,
|
|
9
|
-
Tuple,
|
|
10
|
-
Union,
|
|
11
9
|
cast,
|
|
12
10
|
)
|
|
13
11
|
|
|
@@ -100,7 +98,7 @@ class ENS(BaseENS):
|
|
|
100
98
|
self,
|
|
101
99
|
provider: "BaseProvider" = None,
|
|
102
100
|
addr: ChecksumAddress = None,
|
|
103
|
-
middleware:
|
|
101
|
+
middleware: Sequence[tuple["Middleware", str]] | None = None,
|
|
104
102
|
) -> None:
|
|
105
103
|
"""
|
|
106
104
|
:param provider: a single provider used to connect to Ethereum
|
|
@@ -142,8 +140,8 @@ class ENS(BaseENS):
|
|
|
142
140
|
def address(
|
|
143
141
|
self,
|
|
144
142
|
name: str,
|
|
145
|
-
coin_type:
|
|
146
|
-
) ->
|
|
143
|
+
coin_type: int | None = None,
|
|
144
|
+
) -> ChecksumAddress | None:
|
|
147
145
|
"""
|
|
148
146
|
Look up the Ethereum address that `name` currently points to.
|
|
149
147
|
|
|
@@ -172,12 +170,12 @@ class ENS(BaseENS):
|
|
|
172
170
|
def setup_address(
|
|
173
171
|
self,
|
|
174
172
|
name: str,
|
|
175
|
-
address:
|
|
176
|
-
|
|
177
|
-
),
|
|
178
|
-
coin_type:
|
|
173
|
+
address: Address
|
|
174
|
+
| ChecksumAddress
|
|
175
|
+
| HexAddress = cast(ChecksumAddress, default), # noqa: B008
|
|
176
|
+
coin_type: int | None = None,
|
|
179
177
|
transact: Optional["TxParams"] = None,
|
|
180
|
-
) ->
|
|
178
|
+
) -> HexBytes | None:
|
|
181
179
|
"""
|
|
182
180
|
Set up the name to point to the supplied address.
|
|
183
181
|
The sender of the transaction must own the name, or
|
|
@@ -227,7 +225,7 @@ class ENS(BaseENS):
|
|
|
227
225
|
transact
|
|
228
226
|
)
|
|
229
227
|
|
|
230
|
-
def name(self, address: ChecksumAddress) ->
|
|
228
|
+
def name(self, address: ChecksumAddress) -> str | None:
|
|
231
229
|
"""
|
|
232
230
|
Look up the name that the address points to, using a
|
|
233
231
|
reverse lookup. Reverse lookup is opt-in for name owners.
|
|
@@ -245,7 +243,7 @@ class ENS(BaseENS):
|
|
|
245
243
|
def setup_name(
|
|
246
244
|
self,
|
|
247
245
|
name: str,
|
|
248
|
-
address:
|
|
246
|
+
address: ChecksumAddress | None = None,
|
|
249
247
|
transact: Optional["TxParams"] = None,
|
|
250
248
|
) -> HexBytes:
|
|
251
249
|
"""
|
|
@@ -311,7 +309,7 @@ class ENS(BaseENS):
|
|
|
311
309
|
name: str,
|
|
312
310
|
new_owner: ChecksumAddress = None,
|
|
313
311
|
transact: Optional["TxParams"] = None,
|
|
314
|
-
) ->
|
|
312
|
+
) -> ChecksumAddress | None:
|
|
315
313
|
"""
|
|
316
314
|
Set the owner of the supplied name to `new_owner`.
|
|
317
315
|
|
|
@@ -428,7 +426,7 @@ class ENS(BaseENS):
|
|
|
428
426
|
self,
|
|
429
427
|
normal_name: str,
|
|
430
428
|
fn_name: str = "addr",
|
|
431
|
-
) ->
|
|
429
|
+
) -> tuple[Optional["Contract"], str]:
|
|
432
430
|
current_name = normal_name
|
|
433
431
|
|
|
434
432
|
# look for a resolver, starting at the full name and taking the parent
|
|
@@ -453,7 +451,7 @@ class ENS(BaseENS):
|
|
|
453
451
|
def _set_resolver(
|
|
454
452
|
self,
|
|
455
453
|
name: str,
|
|
456
|
-
resolver_addr:
|
|
454
|
+
resolver_addr: ChecksumAddress | None = None,
|
|
457
455
|
transact: Optional["TxParams"] = None,
|
|
458
456
|
) -> "Contract":
|
|
459
457
|
if not transact:
|
|
@@ -468,7 +466,7 @@ class ENS(BaseENS):
|
|
|
468
466
|
|
|
469
467
|
def _resolve(
|
|
470
468
|
self, name: str, fn_name: str = "addr"
|
|
471
|
-
) ->
|
|
469
|
+
) -> ChecksumAddress | str | None:
|
|
472
470
|
normal_name = normalize_name(name)
|
|
473
471
|
resolver, current_name = self._get_resolver(normal_name, fn_name)
|
|
474
472
|
if not resolver:
|
|
@@ -501,7 +499,7 @@ class ENS(BaseENS):
|
|
|
501
499
|
self,
|
|
502
500
|
account: ChecksumAddress,
|
|
503
501
|
name: str,
|
|
504
|
-
parent_owned:
|
|
502
|
+
parent_owned: str | None = None,
|
|
505
503
|
) -> None:
|
|
506
504
|
if not address_in(account, self.w3.eth.accounts):
|
|
507
505
|
raise UnauthorizedError(
|
|
@@ -511,7 +509,7 @@ class ENS(BaseENS):
|
|
|
511
509
|
|
|
512
510
|
def _first_owner(
|
|
513
511
|
self, name: str
|
|
514
|
-
) ->
|
|
512
|
+
) -> tuple[ChecksumAddress | None, Sequence[str], str]:
|
|
515
513
|
"""
|
|
516
514
|
Takes a name, and returns the owner of the deepest subdomain that has an owner
|
|
517
515
|
|
|
@@ -532,7 +530,7 @@ class ENS(BaseENS):
|
|
|
532
530
|
owner: ChecksumAddress,
|
|
533
531
|
unowned: Sequence[str],
|
|
534
532
|
owned: str,
|
|
535
|
-
old_owner:
|
|
533
|
+
old_owner: ChecksumAddress | None = None,
|
|
536
534
|
transact: Optional["TxParams"] = None,
|
|
537
535
|
) -> None:
|
|
538
536
|
if not transact:
|
|
@@ -549,7 +547,7 @@ class ENS(BaseENS):
|
|
|
549
547
|
|
|
550
548
|
def _setup_reverse(
|
|
551
549
|
self,
|
|
552
|
-
name:
|
|
550
|
+
name: str | None,
|
|
553
551
|
address: ChecksumAddress,
|
|
554
552
|
transact: Optional["TxParams"] = None,
|
|
555
553
|
) -> HexBytes:
|
|
@@ -6,11 +6,7 @@ from typing import (
|
|
|
6
6
|
TYPE_CHECKING,
|
|
7
7
|
Any,
|
|
8
8
|
Collection,
|
|
9
|
-
Optional,
|
|
10
9
|
Sequence,
|
|
11
|
-
Tuple,
|
|
12
|
-
Type,
|
|
13
|
-
Union,
|
|
14
10
|
cast,
|
|
15
11
|
)
|
|
16
12
|
import warnings
|
|
@@ -66,7 +62,7 @@ if TYPE_CHECKING:
|
|
|
66
62
|
)
|
|
67
63
|
|
|
68
64
|
|
|
69
|
-
def Web3() ->
|
|
65
|
+
def Web3() -> type["_Web3"]:
|
|
70
66
|
from web3 import (
|
|
71
67
|
Web3 as Web3Main,
|
|
72
68
|
)
|
|
@@ -76,7 +72,7 @@ def Web3() -> Type["_Web3"]:
|
|
|
76
72
|
|
|
77
73
|
def init_web3(
|
|
78
74
|
provider: "BaseProvider" = None,
|
|
79
|
-
middleware:
|
|
75
|
+
middleware: Sequence[tuple["Middleware", str]] | None = None,
|
|
80
76
|
) -> "_Web3":
|
|
81
77
|
from web3 import (
|
|
82
78
|
Web3 as Web3Main,
|
|
@@ -195,11 +191,11 @@ def is_valid_name(name: str) -> bool:
|
|
|
195
191
|
return False
|
|
196
192
|
|
|
197
193
|
|
|
198
|
-
def to_utc_datetime(timestamp: float) ->
|
|
194
|
+
def to_utc_datetime(timestamp: float) -> datetime | None:
|
|
199
195
|
return datetime.fromtimestamp(timestamp, timezone.utc) if timestamp else None
|
|
200
196
|
|
|
201
197
|
|
|
202
|
-
def sha3_text(val:
|
|
198
|
+
def sha3_text(val: str | bytes) -> HexBytes:
|
|
203
199
|
if isinstance(val, str):
|
|
204
200
|
val = val.encode("utf-8")
|
|
205
201
|
return Web3().keccak(val)
|
|
@@ -278,7 +274,7 @@ def assert_signer_in_modifier_kwargs(modifier_kwargs: Any) -> ChecksumAddress:
|
|
|
278
274
|
return modifier_dict["from"]
|
|
279
275
|
|
|
280
276
|
|
|
281
|
-
def is_none_or_zero_address(addr:
|
|
277
|
+
def is_none_or_zero_address(addr: Address | ChecksumAddress | HexAddress) -> bool:
|
|
282
278
|
return not addr or addr == EMPTY_ADDR_HEX
|
|
283
279
|
|
|
284
280
|
|
|
@@ -301,7 +297,7 @@ def is_valid_ens_name(ens_name: str) -> bool:
|
|
|
301
297
|
|
|
302
298
|
def init_async_web3(
|
|
303
299
|
provider: "AsyncBaseProvider" = None,
|
|
304
|
-
middleware:
|
|
300
|
+
middleware: Sequence[tuple["Middleware", str]] | None = (),
|
|
305
301
|
) -> "AsyncWeb3[Any]":
|
|
306
302
|
from web3 import (
|
|
307
303
|
AsyncWeb3 as AsyncWeb3Main,
|
|
@@ -26,6 +26,7 @@ disallow_untyped_calls = true
|
|
|
26
26
|
disallow_untyped_decorators = false
|
|
27
27
|
disallow_untyped_defs = true
|
|
28
28
|
ignore_missing_imports = true
|
|
29
|
+
python_version="3.10"
|
|
29
30
|
strict_equality = true
|
|
30
31
|
strict_optional = false
|
|
31
32
|
warn_redundant_casts = true
|
|
@@ -127,7 +128,7 @@ name = "Removals"
|
|
|
127
128
|
showcontent = true
|
|
128
129
|
|
|
129
130
|
[tool.bumpversion]
|
|
130
|
-
current_version = "
|
|
131
|
+
current_version = "8.0.0-beta.1"
|
|
131
132
|
parse = """
|
|
132
133
|
(?P<major>\\d+)
|
|
133
134
|
\\.(?P<minor>\\d+)
|