web3 7.14.0__tar.gz → 7.14.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {web3-7.14.0/web3.egg-info → web3-7.14.1}/PKG-INFO +4 -4
- web3-7.14.1/ens/specs/.DS_Store +0 -0
- {web3-7.14.0 → web3-7.14.1}/pyproject.toml +5 -1
- {web3-7.14.0 → web3-7.14.1}/setup.py +2 -2
- web3-7.14.1/tests/.DS_Store +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_call_interface.py +1 -2
- {web3-7.14.0 → web3-7.14.1}/tests/core/providers/test_http_provider.py +92 -0
- web3-7.14.1/tests/ens/.DS_Store +0 -0
- web3-7.14.1/tests/integration/.DS_Store +0 -0
- web3-7.14.1/tests/integration/geth-1.16.7-fixture.zip +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/integration/go_ethereum/conftest.py +1 -1
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/http_session_manager.py +7 -0
- {web3-7.14.0 → web3-7.14.1}/web3/beacon/async_beacon.py +1 -1
- {web3-7.14.0 → web3-7.14.1}/web3/providers/rpc/rpc.py +3 -6
- {web3-7.14.0 → web3-7.14.1}/web3/types.py +2 -2
- {web3-7.14.0 → web3-7.14.1/web3.egg-info}/PKG-INFO +4 -4
- {web3-7.14.0 → web3-7.14.1}/web3.egg-info/SOURCES.txt +5 -1
- {web3-7.14.0 → web3-7.14.1}/web3.egg-info/requires.txt +3 -3
- web3-7.14.0/tests/integration/geth-1.16.2-fixture.zip +0 -0
- {web3-7.14.0 → web3-7.14.1}/LICENSE +0 -0
- {web3-7.14.0 → web3-7.14.1}/MANIFEST.in +0 -0
- {web3-7.14.0 → web3-7.14.1}/README.md +0 -0
- {web3-7.14.0 → web3-7.14.1}/ens/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/ens/_normalization.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/ens/abis.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/ens/async_ens.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/ens/auto.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/ens/base_ens.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/ens/constants.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/ens/contract_data.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/ens/ens.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/ens/exceptions.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/ens/specs/nf.json +0 -0
- {web3-7.14.0 → web3-7.14.1}/ens/specs/normalization_spec.json +0 -0
- {web3-7.14.0 → web3-7.14.1}/ens/utils.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/scripts/release/test_package.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/setup.cfg +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/beacon/test_async_beacon.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/beacon/test_beacon.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/conftest.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/admin-module/test_admin_addPeer.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/admin-module/test_admin_nodeInfo.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/admin-module/test_admin_peers.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/block-utils/test_select_method_for_block_identifier.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/caching-utils/test_generate_cache_key.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/caching-utils/test_request_caching.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/conftest.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/conftest.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_ambiguous_events.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_ambiguous_functions.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_attributes.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_build_transaction.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_caller_interface.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_class_construction.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_constructor.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_constructor_encoding.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_deployment.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_estimate_gas.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_events.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_events_build_filter.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_example.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_init.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_method_abi_decoding.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_method_abi_encoding.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_method_to_argument_matching.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_panic_errors.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_transact_interface.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_util_functions.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_extracting_event_data.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_extracting_event_data_old.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_offchain_lookup.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/contracts/utils.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/datastructures/test_datastructures.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/empty-object/test_empty_object_is_falsy.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/eth-module/conftest.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/eth-module/test_accounts.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/eth-module/test_block_api.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/eth-module/test_default_account_api.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/eth-module/test_eth_contract.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/eth-module/test_eth_fee_history.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/eth-module/test_eth_filter.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/eth-module/test_eth_properties.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/eth-module/test_gas_pricing.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/eth-module/test_poa.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/eth-module/test_transactions.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/eth-tester-api/test_withdrawals.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/exceptions/test_exceptions.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/filtering/conftest.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/filtering/test_basic_filter_tests.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/filtering/test_contract_create_filter_topic_merging.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/filtering/test_contract_data_filters.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/filtering/test_contract_get_logs.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/filtering/test_contract_on_event_filtering.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/filtering/test_contract_past_event_filtering.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/filtering/test_contract_topic_filters.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/filtering/test_existing_filter_instance.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/filtering/test_filter_against_latest_blocks.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/filtering/test_filter_against_pending_transactions.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/filtering/test_filter_against_transaction_logs.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/filtering/test_filters_against_many_blocks.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/filtering/test_utils_functions.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/filtering/utils.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/gas-strategies/test_rpc_gas_pricing_strategies.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/gas-strategies/test_time_based_gas_price_strategy.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/manager/conftest.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/manager/test_default_middlewares.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/manager/test_middleware_can_be_stateful.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/manager/test_middleware_onion_api.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/manager/test_provider_property.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/manager/test_provider_request_wrapping.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/manager/test_response_formatters.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/method-class/test_method.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/method-class/test_result_formatters.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/middleware/test_attrdict_middleware.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/middleware/test_eth_tester_middleware.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/middleware/test_filter_middleware.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/middleware/test_formatting_middleware.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/middleware/test_gas_price_strategy.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/middleware/test_middleware.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/middleware/test_name_to_address_middleware.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/middleware/test_stalecheck.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/middleware/test_transaction_signing.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/module-class/test_module.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/providers/test_async_http_provider.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/providers/test_async_ipc_provider.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/providers/test_async_tester_provider.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/providers/test_auto_provider.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/providers/test_base_provider.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/providers/test_http_request_retry.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/providers/test_ipc_provider.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/providers/test_legacy_websocket_provider.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/providers/test_provider_init.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/providers/test_tester_provider.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/providers/test_websocket_provider.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/subscriptions/test_subscription_manager.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/subscriptions/test_subscriptions.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/test_library_files.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/testing-module/test_testing_mine.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/testing-module/test_testing_snapshot_and_revert.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/testing-module/test_testing_timeTravel.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/conftest.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_abi.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_abi_filtering_by_argument_name.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_abi_is_encodable.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_abi_named_tree.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_address.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_async_transaction.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_attach_modules.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_attributedict.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_caching_utils.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_construct_event_data_set.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_construct_event_filter_params.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_construct_event_topics.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_datatypes.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_decorators.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_encoding.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_event_filter_builder.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_event_interface.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_fee_utils.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_formatters.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_http_session_manager.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_is_predefined_block_number.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_is_probably_enum.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_is_recognized_type.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_math.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_method_formatters.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_prepare_transaction_replacement.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_select_filter_method.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_threads.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_valid_transaction_params.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/utilities/test_validation.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/web3-module/test_api.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/web3-module/test_attach_modules.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/web3-module/test_client_version.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/web3-module/test_conversions.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/web3-module/test_import_and_version.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/web3-module/test_keccak.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/web3-module/test_providers.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/web3-module/test_strict_bytes_type_checking.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/core/web3-module/test_web3_inheritance.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/ens/conftest.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/ens/normalization/normalization_tests.json +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/ens/normalization/test_normalize_name_ensip15.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/ens/test_ens.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/ens/test_get_registry.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/ens/test_get_text.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/ens/test_nameprep.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/ens/test_offchain_resolution.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/ens/test_setup_address.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/ens/test_setup_name.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/ens/test_utils.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/ens/test_wildcard_resolution.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/integration/README.md +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/integration/common.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/integration/conftest.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/integration/generate_fixtures/common.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/integration/generate_fixtures/go_ethereum.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/integration/go_ethereum/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/integration/go_ethereum/common.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/integration/go_ethereum/test_goethereum_http.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/integration/go_ethereum/test_goethereum_ipc.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/integration/go_ethereum/test_goethereum_legacy_ws.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/integration/go_ethereum/test_goethereum_ws/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/integration/go_ethereum/test_goethereum_ws/conftest.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/integration/go_ethereum/test_goethereum_ws/test_async_await_w3.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/integration/go_ethereum/test_goethereum_ws/test_async_ctx_manager_w3.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/integration/go_ethereum/test_goethereum_ws/test_async_iterator_w3.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/integration/go_ethereum/utils.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/integration/test_ethereum_tester.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/tests/utils.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/abi.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/abi_element_identifiers.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/async_caching.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/async_transactions.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/batching.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/blocks.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/caching/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/caching/caching_utils.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/caching/request_caching_validation.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/compat/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/compile_contracts.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/_custom_contract_data.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/ambiguous_function_contract.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/arrays_contract.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/bytes_contracts.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/constructor_contracts.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/contract_caller_tester.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/emitter_contract.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/event_contracts.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/extended_resolver.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/fallback_function_contract.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/function_name_tester_contract.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/math_contract.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/offchain_lookup.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/offchain_resolver.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/panic_errors_contract.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/payable_tester.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/receive_function_contracts.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/reflector_contracts.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/revert_contract.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/simple_resolver.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/storage_contract.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/string_contract.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contract_sources/contract_data/tuple_contracts.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/contracts.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/datatypes.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/decorators.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/empty.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/encoding.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/ens.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/error_formatters_utils.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/events.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/fee_utils.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/filters.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/formatters.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/http.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/hypothesis.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/math.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/method_formatters.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/module.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/module_testing/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/module_testing/eth_module.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/module_testing/go_ethereum_admin_module.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/module_testing/go_ethereum_debug_module.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/module_testing/go_ethereum_txpool_module.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/module_testing/module_testing_utils.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/module_testing/net_module.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/module_testing/persistent_connection_provider.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/module_testing/utils.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/module_testing/web3_module.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/normalizers.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/rpc_abi.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/threads.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/transactions.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/type_conversion.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/utility_methods.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/validation.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/_utils/windows.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/auto/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/auto/gethdev.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/beacon/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/beacon/api_endpoints.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/beacon/beacon.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/constants.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/contract/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/contract/async_contract.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/contract/base_contract.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/contract/contract.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/contract/utils.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/datastructures.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/eth/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/eth/async_eth.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/eth/base_eth.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/eth/eth.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/exceptions.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/gas_strategies/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/gas_strategies/rpc.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/gas_strategies/time_based.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/geth.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/logs.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/main.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/manager.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/method.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/middleware/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/middleware/attrdict.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/middleware/base.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/middleware/buffered_gas_estimate.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/middleware/filter.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/middleware/formatting.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/middleware/gas_price_strategy.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/middleware/names.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/middleware/proof_of_authority.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/middleware/pythonic.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/middleware/signing.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/middleware/stalecheck.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/middleware/validation.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/module.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/net.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/async_base.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/auto.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/base.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/eth_tester/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/eth_tester/defaults.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/eth_tester/main.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/eth_tester/middleware.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/ipc.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/legacy_websocket.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/persistent/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/persistent/async_ipc.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/persistent/persistent.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/persistent/persistent_connection.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/persistent/request_processor.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/persistent/subscription_container.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/persistent/subscription_manager.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/persistent/utils.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/persistent/websocket.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/rpc/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/rpc/async_rpc.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/providers/rpc/utils.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/py.typed +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/scripts/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/scripts/install_pre_releases.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/scripts/parse_pygeth_version.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/scripts/release/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/scripts/release/test_package.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/testing.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/tracing.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/utils/__init__.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/utils/abi.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/utils/address.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/utils/async_exception_handling.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/utils/caching.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/utils/exception_handling.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3/utils/subscriptions.py +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3.egg-info/dependency_links.txt +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3.egg-info/not-zip-safe +0 -0
- {web3-7.14.0 → web3-7.14.1}/web3.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: web3
|
|
3
|
-
Version: 7.14.
|
|
3
|
+
Version: 7.14.1
|
|
4
4
|
Summary: web3: A Python library for interacting with Ethereum
|
|
5
5
|
Home-page: https://github.com/ethereum/web3.py
|
|
6
6
|
Author: The Ethereum Foundation
|
|
@@ -37,7 +37,7 @@ Requires-Dist: websockets<16.0.0,>=10.0.0
|
|
|
37
37
|
Requires-Dist: pyunormalize>=15.0.0
|
|
38
38
|
Provides-Extra: tester
|
|
39
39
|
Requires-Dist: eth-tester[py-evm]<0.14.0b1,>=0.13.0b1; extra == "tester"
|
|
40
|
-
Requires-Dist: py-geth>=
|
|
40
|
+
Requires-Dist: py-geth>=6.4.0; extra == "tester"
|
|
41
41
|
Provides-Extra: dev
|
|
42
42
|
Requires-Dist: build>=0.9.0; extra == "dev"
|
|
43
43
|
Requires-Dist: bump_my_version>=0.19.0; extra == "dev"
|
|
@@ -60,7 +60,7 @@ Requires-Dist: tox>=4.0.0; extra == "dev"
|
|
|
60
60
|
Requires-Dist: mypy==1.10.0; extra == "dev"
|
|
61
61
|
Requires-Dist: pre-commit>=3.4.0; extra == "dev"
|
|
62
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"
|
|
@@ -77,7 +77,7 @@ 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
79
|
Requires-Dist: eth-tester[py-evm]<0.14.0b1,>=0.13.0b1; extra == "test"
|
|
80
|
-
Requires-Dist: py-geth>=
|
|
80
|
+
Requires-Dist: py-geth>=6.4.0; extra == "test"
|
|
81
81
|
Dynamic: author
|
|
82
82
|
Dynamic: author-email
|
|
83
83
|
Dynamic: classifier
|
|
Binary file
|
|
@@ -33,6 +33,10 @@ warn_return_any = false
|
|
|
33
33
|
warn_unused_configs = true
|
|
34
34
|
warn_unused_ignores = true
|
|
35
35
|
|
|
36
|
+
[[tool.mypy.overrides]]
|
|
37
|
+
module = "sphinx.*"
|
|
38
|
+
follow_imports = "skip"
|
|
39
|
+
|
|
36
40
|
[tool.pydocstyle]
|
|
37
41
|
# All error codes found here:
|
|
38
42
|
# http://www.pydocstyle.org/en/3.0.0/error_codes.html
|
|
@@ -127,7 +131,7 @@ name = "Removals"
|
|
|
127
131
|
showcontent = true
|
|
128
132
|
|
|
129
133
|
[tool.bumpversion]
|
|
130
|
-
current_version = "7.14.
|
|
134
|
+
current_version = "7.14.1"
|
|
131
135
|
parse = """
|
|
132
136
|
(?P<major>\\d+)
|
|
133
137
|
\\.(?P<minor>\\d+)
|
|
@@ -9,7 +9,7 @@ extras_require = {
|
|
|
9
9
|
# Note: ethereum-maintained libraries in this list should be added to the
|
|
10
10
|
# `install_pre_releases.py` script.
|
|
11
11
|
"eth-tester[py-evm]>=0.13.0b1,<0.14.0b1",
|
|
12
|
-
"py-geth>=
|
|
12
|
+
"py-geth>=6.4.0",
|
|
13
13
|
],
|
|
14
14
|
"dev": [
|
|
15
15
|
"build>=0.9.0",
|
|
@@ -55,7 +55,7 @@ with open("./README.md") as readme:
|
|
|
55
55
|
setup(
|
|
56
56
|
name="web3",
|
|
57
57
|
# *IMPORTANT*: Don't manually change the version here. See Contributing docs for the release process.
|
|
58
|
-
version="7.14.
|
|
58
|
+
version="7.14.1",
|
|
59
59
|
description="""web3: A Python library for interacting with Ethereum""",
|
|
60
60
|
long_description=long_description,
|
|
61
61
|
long_description_content_type="text/markdown",
|
|
Binary file
|
|
@@ -1334,8 +1334,7 @@ async def async_mismatched_math_contract(
|
|
|
1334
1334
|
return _mismatched_math_contract
|
|
1335
1335
|
|
|
1336
1336
|
|
|
1337
|
-
@
|
|
1338
|
-
@pytest.mark.asyncio
|
|
1337
|
+
@pytest_asyncio.fixture
|
|
1339
1338
|
async def test_async_deploy_raises_due_to_strict_byte_checking_by_default(
|
|
1340
1339
|
async_w3, async_bytes_contract_factory, address_conversion_func
|
|
1341
1340
|
):
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import pytest
|
|
2
|
+
import concurrent.futures
|
|
3
|
+
import threading
|
|
2
4
|
from unittest.mock import (
|
|
3
5
|
Mock,
|
|
4
6
|
patch,
|
|
@@ -133,3 +135,93 @@ def test_http_empty_batch_response(mock_post):
|
|
|
133
135
|
|
|
134
136
|
# assert that even though there was an error, we have reset the batching state
|
|
135
137
|
assert not w3.provider._is_batching
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
def test_user_provided_session_shared_across_threads():
|
|
141
|
+
"""
|
|
142
|
+
Test that when a user provides an explicit session to HTTPProvider,
|
|
143
|
+
that same session is used by ALL threads, not just the creating thread.
|
|
144
|
+
|
|
145
|
+
This is a regression test for:
|
|
146
|
+
https://github.com/ethereum/web3.py/issues/3789
|
|
147
|
+
"""
|
|
148
|
+
shared_session = Session()
|
|
149
|
+
provider = HTTPProvider(endpoint_uri=URI, session=shared_session)
|
|
150
|
+
|
|
151
|
+
sessions_from_threads = []
|
|
152
|
+
errors = []
|
|
153
|
+
|
|
154
|
+
def get_session_from_thread():
|
|
155
|
+
try:
|
|
156
|
+
# This simulates what happens internally when a request is made
|
|
157
|
+
# from a different thread - it calls cache_and_return_session
|
|
158
|
+
session = provider._request_session_manager.cache_and_return_session(URI)
|
|
159
|
+
sessions_from_threads.append(session)
|
|
160
|
+
except Exception as e:
|
|
161
|
+
errors.append(e)
|
|
162
|
+
|
|
163
|
+
# Get session from main thread
|
|
164
|
+
main_thread_session = provider._request_session_manager.cache_and_return_session(
|
|
165
|
+
URI
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
# Get session from multiple different threads
|
|
169
|
+
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
|
|
170
|
+
futures = [executor.submit(get_session_from_thread) for _ in range(10)]
|
|
171
|
+
concurrent.futures.wait(futures)
|
|
172
|
+
|
|
173
|
+
assert not errors, f"Errors occurred: {errors}"
|
|
174
|
+
assert len(sessions_from_threads) == 10
|
|
175
|
+
|
|
176
|
+
# The main assertion: ALL sessions should be the SAME shared session
|
|
177
|
+
assert main_thread_session is shared_session
|
|
178
|
+
for session in sessions_from_threads:
|
|
179
|
+
assert session is shared_session, (
|
|
180
|
+
"Session from different thread should be the same as the "
|
|
181
|
+
"explicitly provided session"
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def test_no_explicit_session_creates_per_thread_sessions():
|
|
186
|
+
"""
|
|
187
|
+
Test that when no explicit session is provided, each thread gets its own
|
|
188
|
+
session (the original thread-isolated behavior).
|
|
189
|
+
"""
|
|
190
|
+
provider = HTTPProvider(endpoint_uri=URI)
|
|
191
|
+
|
|
192
|
+
sessions_from_threads = []
|
|
193
|
+
|
|
194
|
+
def get_session_from_thread():
|
|
195
|
+
session = provider._request_session_manager.cache_and_return_session(URI)
|
|
196
|
+
sessions_from_threads.append((threading.get_ident(), session))
|
|
197
|
+
|
|
198
|
+
# Get session from main thread
|
|
199
|
+
main_thread_id = threading.get_ident()
|
|
200
|
+
main_thread_session = provider._request_session_manager.cache_and_return_session(
|
|
201
|
+
URI
|
|
202
|
+
)
|
|
203
|
+
|
|
204
|
+
# Get sessions from different threads
|
|
205
|
+
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
|
|
206
|
+
futures = [executor.submit(get_session_from_thread) for _ in range(3)]
|
|
207
|
+
concurrent.futures.wait(futures)
|
|
208
|
+
|
|
209
|
+
# Group sessions by thread ID
|
|
210
|
+
sessions_by_thread = {}
|
|
211
|
+
for thread_id, session in sessions_from_threads:
|
|
212
|
+
if thread_id not in sessions_by_thread:
|
|
213
|
+
sessions_by_thread[thread_id] = []
|
|
214
|
+
sessions_by_thread[thread_id].append(session)
|
|
215
|
+
|
|
216
|
+
# Verify thread isolation: same thread always gets the same session
|
|
217
|
+
for _, sessions in sessions_by_thread.items():
|
|
218
|
+
assert all(
|
|
219
|
+
s is sessions[0] for s in sessions
|
|
220
|
+
), "Same thread should always get the same session"
|
|
221
|
+
|
|
222
|
+
# Verify different threads get different sessions (not the main thread's)
|
|
223
|
+
for thread_id, sessions in sessions_by_thread.items():
|
|
224
|
+
if thread_id != main_thread_id:
|
|
225
|
+
assert (
|
|
226
|
+
sessions[0] is not main_thread_session
|
|
227
|
+
), "Different threads should have different sessions"
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -50,9 +50,11 @@ class HTTPSessionManager:
|
|
|
50
50
|
self,
|
|
51
51
|
cache_size: int = 100,
|
|
52
52
|
session_pool_max_workers: int = 5,
|
|
53
|
+
explicit_session: Optional[requests.Session] = None,
|
|
53
54
|
) -> None:
|
|
54
55
|
self.session_cache = SimpleCache(cache_size)
|
|
55
56
|
self.session_pool = ThreadPoolExecutor(max_workers=session_pool_max_workers)
|
|
57
|
+
self._explicit_session = explicit_session
|
|
56
58
|
|
|
57
59
|
@staticmethod
|
|
58
60
|
def get_default_http_endpoint() -> URI:
|
|
@@ -64,6 +66,11 @@ class HTTPSessionManager:
|
|
|
64
66
|
session: requests.Session = None,
|
|
65
67
|
request_timeout: Optional[float] = None,
|
|
66
68
|
) -> requests.Session:
|
|
69
|
+
# If an explicit session was provided at init time, always use it
|
|
70
|
+
# regardless of which thread is making the request
|
|
71
|
+
if self._explicit_session is not None:
|
|
72
|
+
return self._explicit_session
|
|
73
|
+
|
|
67
74
|
# cache key should have a unique thread identifier
|
|
68
75
|
cache_key = generate_cache_key(f"{threading.get_ident()}:{endpoint_uri}")
|
|
69
76
|
|
|
@@ -89,7 +89,7 @@ class AsyncBeacon:
|
|
|
89
89
|
) -> Dict[str, Any]:
|
|
90
90
|
uri = URI(self.base_url + endpoint_uri)
|
|
91
91
|
return await self._request_session_manager.async_json_make_post_request(
|
|
92
|
-
uri, json=body, timeout=self.request_timeout
|
|
92
|
+
uri, json=body, timeout=ClientTimeout(self.request_timeout)
|
|
93
93
|
)
|
|
94
94
|
|
|
95
95
|
# [ BEACON endpoints ]
|
|
@@ -72,7 +72,9 @@ class HTTPProvider(JSONBaseProvider):
|
|
|
72
72
|
**kwargs: Any,
|
|
73
73
|
) -> None:
|
|
74
74
|
super().__init__(**kwargs)
|
|
75
|
-
|
|
75
|
+
# Pass explicit session to manager so it's used for ALL requests,
|
|
76
|
+
# regardless of which thread makes them
|
|
77
|
+
self._request_session_manager = HTTPSessionManager(explicit_session=session)
|
|
76
78
|
|
|
77
79
|
if endpoint_uri is None:
|
|
78
80
|
self.endpoint_uri = (
|
|
@@ -84,11 +86,6 @@ class HTTPProvider(JSONBaseProvider):
|
|
|
84
86
|
self._request_kwargs = request_kwargs or {}
|
|
85
87
|
self._exception_retry_configuration = exception_retry_configuration
|
|
86
88
|
|
|
87
|
-
if session:
|
|
88
|
-
self._request_session_manager.cache_and_return_session(
|
|
89
|
-
self.endpoint_uri, session
|
|
90
|
-
)
|
|
91
|
-
|
|
92
89
|
def __str__(self) -> str:
|
|
93
90
|
return f"RPC connection {self.endpoint_uri}"
|
|
94
91
|
|
|
@@ -156,7 +156,7 @@ class SetCodeAuthorizationParams(TypedDict):
|
|
|
156
156
|
chainId: int
|
|
157
157
|
address: Union[Address, ChecksumAddress, str]
|
|
158
158
|
nonce: Nonce
|
|
159
|
-
|
|
159
|
+
yParity: int
|
|
160
160
|
r: int
|
|
161
161
|
s: int
|
|
162
162
|
|
|
@@ -193,7 +193,7 @@ TxParams = TypedDict(
|
|
|
193
193
|
|
|
194
194
|
class WithdrawalData(TypedDict):
|
|
195
195
|
index: int
|
|
196
|
-
|
|
196
|
+
validatorIndex: int
|
|
197
197
|
address: ChecksumAddress
|
|
198
198
|
amount: Gwei
|
|
199
199
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: web3
|
|
3
|
-
Version: 7.14.
|
|
3
|
+
Version: 7.14.1
|
|
4
4
|
Summary: web3: A Python library for interacting with Ethereum
|
|
5
5
|
Home-page: https://github.com/ethereum/web3.py
|
|
6
6
|
Author: The Ethereum Foundation
|
|
@@ -37,7 +37,7 @@ Requires-Dist: websockets<16.0.0,>=10.0.0
|
|
|
37
37
|
Requires-Dist: pyunormalize>=15.0.0
|
|
38
38
|
Provides-Extra: tester
|
|
39
39
|
Requires-Dist: eth-tester[py-evm]<0.14.0b1,>=0.13.0b1; extra == "tester"
|
|
40
|
-
Requires-Dist: py-geth>=
|
|
40
|
+
Requires-Dist: py-geth>=6.4.0; extra == "tester"
|
|
41
41
|
Provides-Extra: dev
|
|
42
42
|
Requires-Dist: build>=0.9.0; extra == "dev"
|
|
43
43
|
Requires-Dist: bump_my_version>=0.19.0; extra == "dev"
|
|
@@ -60,7 +60,7 @@ Requires-Dist: tox>=4.0.0; extra == "dev"
|
|
|
60
60
|
Requires-Dist: mypy==1.10.0; extra == "dev"
|
|
61
61
|
Requires-Dist: pre-commit>=3.4.0; extra == "dev"
|
|
62
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"
|
|
@@ -77,7 +77,7 @@ 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
79
|
Requires-Dist: eth-tester[py-evm]<0.14.0b1,>=0.13.0b1; extra == "test"
|
|
80
|
-
Requires-Dist: py-geth>=
|
|
80
|
+
Requires-Dist: py-geth>=6.4.0; extra == "test"
|
|
81
81
|
Dynamic: author
|
|
82
82
|
Dynamic: author-email
|
|
83
83
|
Dynamic: classifier
|
|
@@ -14,9 +14,11 @@ ens/contract_data.py
|
|
|
14
14
|
ens/ens.py
|
|
15
15
|
ens/exceptions.py
|
|
16
16
|
ens/utils.py
|
|
17
|
+
ens/specs/.DS_Store
|
|
17
18
|
ens/specs/nf.json
|
|
18
19
|
ens/specs/normalization_spec.json
|
|
19
20
|
scripts/release/test_package.py
|
|
21
|
+
tests/.DS_Store
|
|
20
22
|
tests/__init__.py
|
|
21
23
|
tests/conftest.py
|
|
22
24
|
tests/utils.py
|
|
@@ -165,6 +167,7 @@ tests/core/web3-module/test_keccak.py
|
|
|
165
167
|
tests/core/web3-module/test_providers.py
|
|
166
168
|
tests/core/web3-module/test_strict_bytes_type_checking.py
|
|
167
169
|
tests/core/web3-module/test_web3_inheritance.py
|
|
170
|
+
tests/ens/.DS_Store
|
|
168
171
|
tests/ens/conftest.py
|
|
169
172
|
tests/ens/test_ens.py
|
|
170
173
|
tests/ens/test_get_registry.py
|
|
@@ -177,10 +180,11 @@ tests/ens/test_utils.py
|
|
|
177
180
|
tests/ens/test_wildcard_resolution.py
|
|
178
181
|
tests/ens/normalization/normalization_tests.json
|
|
179
182
|
tests/ens/normalization/test_normalize_name_ensip15.py
|
|
183
|
+
tests/integration/.DS_Store
|
|
180
184
|
tests/integration/README.md
|
|
181
185
|
tests/integration/common.py
|
|
182
186
|
tests/integration/conftest.py
|
|
183
|
-
tests/integration/geth-1.16.
|
|
187
|
+
tests/integration/geth-1.16.7-fixture.zip
|
|
184
188
|
tests/integration/test_ethereum_tester.py
|
|
185
189
|
tests/integration/generate_fixtures/common.py
|
|
186
190
|
tests/integration/generate_fixtures/go_ethereum.py
|
|
@@ -37,7 +37,7 @@ tox>=4.0.0
|
|
|
37
37
|
mypy==1.10.0
|
|
38
38
|
pre-commit>=3.4.0
|
|
39
39
|
eth-tester[py-evm]<0.14.0b1,>=0.13.0b1
|
|
40
|
-
py-geth>=
|
|
40
|
+
py-geth>=6.4.0
|
|
41
41
|
|
|
42
42
|
[docs]
|
|
43
43
|
sphinx>=6.0.0
|
|
@@ -56,8 +56,8 @@ tox>=4.0.0
|
|
|
56
56
|
mypy==1.10.0
|
|
57
57
|
pre-commit>=3.4.0
|
|
58
58
|
eth-tester[py-evm]<0.14.0b1,>=0.13.0b1
|
|
59
|
-
py-geth>=
|
|
59
|
+
py-geth>=6.4.0
|
|
60
60
|
|
|
61
61
|
[tester]
|
|
62
62
|
eth-tester[py-evm]<0.14.0b1,>=0.13.0b1
|
|
63
|
-
py-geth>=
|
|
63
|
+
py-geth>=6.4.0
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{web3-7.14.0 → web3-7.14.1}/tests/core/block-utils/test_select_method_for_block_identifier.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{web3-7.14.0 → web3-7.14.1}/tests/core/contracts/test_contract_method_to_argument_matching.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{web3-7.14.0 → web3-7.14.1}/tests/core/filtering/test_contract_create_filter_topic_merging.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{web3-7.14.0 → web3-7.14.1}/tests/core/filtering/test_filter_against_pending_transactions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|