web3 6.20.3__py3-none-any.whl → 7.0.0__py3-none-any.whl
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.
- ens/__init__.py +13 -2
- ens/_normalization.py +2 -17
- ens/async_ens.py +33 -21
- ens/base_ens.py +3 -1
- ens/ens.py +16 -11
- ens/exceptions.py +16 -29
- ens/specs/nf.json +1 -1
- ens/specs/normalization_spec.json +1 -1
- ens/utils.py +52 -63
- web3/__init__.py +20 -24
- web3/_utils/abi.py +115 -271
- web3/_utils/async_transactions.py +7 -4
- web3/_utils/batching.py +217 -0
- web3/_utils/blocks.py +6 -2
- web3/_utils/caching.py +128 -5
- web3/_utils/compat/__init__.py +2 -3
- web3/_utils/contract_sources/compile_contracts.py +1 -1
- web3/_utils/contract_sources/contract_data/arrays_contract.py +3 -3
- web3/_utils/contract_sources/contract_data/bytes_contracts.py +5 -5
- web3/_utils/contract_sources/contract_data/constructor_contracts.py +7 -7
- web3/_utils/contract_sources/contract_data/contract_caller_tester.py +3 -3
- web3/_utils/contract_sources/contract_data/emitter_contract.py +3 -3
- web3/_utils/contract_sources/contract_data/event_contracts.py +5 -5
- web3/_utils/contract_sources/contract_data/extended_resolver.py +3 -3
- web3/_utils/contract_sources/contract_data/fallback_function_contract.py +3 -3
- web3/_utils/contract_sources/contract_data/function_name_tester_contract.py +3 -3
- web3/_utils/contract_sources/contract_data/math_contract.py +3 -3
- web3/_utils/contract_sources/contract_data/offchain_lookup.py +3 -3
- web3/_utils/contract_sources/contract_data/offchain_resolver.py +3 -3
- web3/_utils/contract_sources/contract_data/panic_errors_contract.py +3 -3
- web3/_utils/contract_sources/contract_data/payable_tester.py +3 -3
- web3/_utils/contract_sources/contract_data/receive_function_contracts.py +5 -5
- web3/_utils/contract_sources/contract_data/reflector_contracts.py +3 -3
- web3/_utils/contract_sources/contract_data/revert_contract.py +3 -3
- web3/_utils/contract_sources/contract_data/simple_resolver.py +3 -3
- web3/_utils/contract_sources/contract_data/storage_contract.py +3 -3
- web3/_utils/contract_sources/contract_data/string_contract.py +3 -3
- web3/_utils/contract_sources/contract_data/tuple_contracts.py +5 -5
- web3/_utils/contracts.py +130 -236
- web3/_utils/datatypes.py +5 -1
- web3/_utils/decorators.py +13 -23
- web3/_utils/empty.py +1 -1
- web3/_utils/encoding.py +16 -12
- web3/_utils/ens.py +2 -1
- web3/_utils/error_formatters_utils.py +5 -3
- web3/_utils/events.py +66 -69
- web3/_utils/fee_utils.py +1 -3
- web3/_utils/filters.py +24 -22
- web3/_utils/formatters.py +2 -2
- web3/_utils/http.py +5 -3
- web3/_utils/http_session_manager.py +303 -0
- web3/_utils/math.py +14 -15
- web3/_utils/method_formatters.py +34 -36
- web3/_utils/module.py +2 -1
- web3/_utils/module_testing/__init__.py +0 -3
- web3/_utils/module_testing/eth_module.py +695 -643
- web3/_utils/module_testing/module_testing_utils.py +61 -34
- web3/_utils/module_testing/persistent_connection_provider.py +56 -25
- web3/_utils/module_testing/utils.py +258 -0
- web3/_utils/module_testing/web3_module.py +438 -17
- web3/_utils/normalizers.py +13 -11
- web3/_utils/rpc_abi.py +5 -32
- web3/_utils/threads.py +8 -7
- web3/_utils/transactions.py +14 -12
- web3/_utils/type_conversion.py +5 -1
- web3/_utils/validation.py +17 -17
- web3/auto/gethdev.py +7 -2
- web3/beacon/__init__.py +6 -1
- web3/beacon/async_beacon.py +9 -5
- web3/beacon/{main.py → beacon.py} +7 -5
- web3/contract/__init__.py +7 -0
- web3/contract/async_contract.py +47 -46
- web3/contract/base_contract.py +183 -158
- web3/contract/contract.py +49 -43
- web3/contract/utils.py +203 -59
- web3/datastructures.py +79 -31
- web3/eth/__init__.py +7 -0
- web3/eth/async_eth.py +39 -51
- web3/eth/base_eth.py +17 -10
- web3/eth/eth.py +30 -68
- web3/exceptions.py +108 -82
- web3/gas_strategies/time_based.py +8 -6
- web3/geth.py +1 -254
- web3/main.py +75 -122
- web3/manager.py +316 -146
- web3/method.py +38 -31
- web3/middleware/__init__.py +67 -89
- web3/middleware/attrdict.py +36 -49
- web3/middleware/base.py +174 -0
- web3/middleware/buffered_gas_estimate.py +20 -21
- web3/middleware/filter.py +157 -117
- web3/middleware/formatting.py +124 -108
- web3/middleware/gas_price_strategy.py +20 -32
- web3/middleware/names.py +29 -26
- web3/middleware/proof_of_authority.py +68 -0
- web3/middleware/pythonic.py +2 -2
- web3/middleware/signing.py +74 -89
- web3/middleware/stalecheck.py +52 -79
- web3/middleware/validation.py +5 -13
- web3/module.py +54 -10
- web3/providers/__init__.py +10 -6
- web3/providers/async_base.py +117 -39
- web3/providers/auto.py +3 -3
- web3/providers/base.py +89 -33
- web3/providers/eth_tester/__init__.py +5 -0
- web3/providers/eth_tester/defaults.py +1 -64
- web3/providers/eth_tester/main.py +99 -31
- web3/providers/eth_tester/middleware.py +45 -73
- web3/providers/ipc.py +42 -46
- web3/providers/{websocket/websocket.py → legacy_websocket.py} +32 -7
- web3/providers/persistent/__init__.py +22 -0
- web3/providers/persistent/async_ipc.py +153 -0
- web3/providers/{persistent.py → persistent/persistent.py} +106 -25
- web3/providers/persistent/persistent_connection.py +84 -0
- web3/providers/{websocket → persistent}/request_processor.py +94 -32
- web3/providers/persistent/utils.py +43 -0
- web3/providers/{websocket/websocket_v2.py → persistent/websocket.py} +29 -28
- web3/providers/rpc/__init__.py +11 -0
- web3/providers/rpc/async_rpc.py +171 -0
- web3/providers/rpc/rpc.py +179 -0
- web3/providers/rpc/utils.py +92 -0
- web3/testing.py +4 -4
- web3/tools/benchmark/main.py +22 -22
- web3/tools/benchmark/node.py +2 -8
- web3/tools/benchmark/reporting.py +2 -2
- web3/tools/benchmark/utils.py +1 -1
- web3/tracing.py +9 -5
- web3/types.py +30 -107
- web3/utils/__init__.py +58 -5
- web3/utils/abi.py +575 -10
- web3/utils/async_exception_handling.py +19 -7
- web3/utils/caching.py +32 -13
- web3/utils/exception_handling.py +7 -5
- {web3-6.20.3.dist-info → web3-7.0.0.dist-info}/LICENSE +1 -1
- web3-7.0.0.dist-info/METADATA +112 -0
- web3-7.0.0.dist-info/RECORD +167 -0
- {web3-6.20.3.dist-info → web3-7.0.0.dist-info}/top_level.txt +0 -1
- ethpm/__init__.py +0 -20
- ethpm/_utils/__init__.py +0 -0
- ethpm/_utils/backend.py +0 -93
- ethpm/_utils/cache.py +0 -44
- ethpm/_utils/chains.py +0 -119
- ethpm/_utils/contract.py +0 -35
- ethpm/_utils/deployments.py +0 -145
- ethpm/_utils/ipfs.py +0 -116
- ethpm/_utils/protobuf/__init__.py +0 -0
- ethpm/_utils/protobuf/ipfs_file_pb2.py +0 -33
- ethpm/_utils/registry.py +0 -29
- ethpm/assets/__init__.py +0 -0
- ethpm/assets/ens/v3.json +0 -1
- ethpm/assets/escrow/with_bytecode_v3.json +0 -1
- ethpm/assets/ipfs_file.proto +0 -32
- ethpm/assets/owned/output_v3.json +0 -1
- ethpm/assets/owned/with_contract_type_v3.json +0 -1
- ethpm/assets/registry/contracts/Authority.sol +0 -156
- ethpm/assets/registry/contracts/IndexedOrderedSetLib.sol +0 -106
- ethpm/assets/registry/contracts/PackageDB.sol +0 -225
- ethpm/assets/registry/contracts/PackageRegistry.sol +0 -361
- ethpm/assets/registry/contracts/PackageRegistryInterface.sol +0 -97
- ethpm/assets/registry/contracts/ReleaseDB.sol +0 -309
- ethpm/assets/registry/contracts/ReleaseValidator.sol +0 -152
- ethpm/assets/registry/solc_input.json +0 -1
- ethpm/assets/registry/solc_output.json +0 -1
- ethpm/assets/registry/v3.json +0 -1
- ethpm/assets/safe-math-lib/v3-strict-no-deployments.json +0 -1
- ethpm/assets/simple-registry/contracts/Ownable.sol +0 -63
- ethpm/assets/simple-registry/contracts/PackageRegistry.sol +0 -373
- ethpm/assets/simple-registry/contracts/PackageRegistryInterface.sol +0 -96
- ethpm/assets/simple-registry/solc_input.json +0 -33
- ethpm/assets/simple-registry/solc_output.json +0 -1
- ethpm/assets/simple-registry/v3.json +0 -1
- ethpm/assets/standard-token/output_v3.json +0 -1
- ethpm/assets/standard-token/with_bytecode_v3.json +0 -1
- ethpm/assets/vyper_registry/0.1.0.json +0 -1
- ethpm/assets/vyper_registry/registry.vy +0 -216
- ethpm/assets/vyper_registry/registry_with_delete.vy +0 -244
- ethpm/backends/__init__.py +0 -0
- ethpm/backends/base.py +0 -43
- ethpm/backends/http.py +0 -108
- ethpm/backends/ipfs.py +0 -219
- ethpm/backends/registry.py +0 -154
- ethpm/constants.py +0 -17
- ethpm/contract.py +0 -187
- ethpm/dependencies.py +0 -58
- ethpm/deployments.py +0 -80
- ethpm/ethpm-spec/examples/escrow/1.0.0-pretty.json +0 -146
- ethpm/ethpm-spec/examples/escrow/1.0.0.json +0 -1
- ethpm/ethpm-spec/examples/escrow/contracts/Escrow.sol +0 -32
- ethpm/ethpm-spec/examples/escrow/contracts/SafeSendLib.sol +0 -20
- ethpm/ethpm-spec/examples/escrow/v3-pretty.json +0 -171
- ethpm/ethpm-spec/examples/escrow/v3.json +0 -1
- ethpm/ethpm-spec/examples/owned/1.0.0-pretty.json +0 -21
- ethpm/ethpm-spec/examples/owned/1.0.0.json +0 -1
- ethpm/ethpm-spec/examples/owned/contracts/Owned.sol +0 -12
- ethpm/ethpm-spec/examples/owned/v3-pretty.json +0 -27
- ethpm/ethpm-spec/examples/owned/v3.json +0 -1
- ethpm/ethpm-spec/examples/piper-coin/1.0.0-pretty.json +0 -31
- ethpm/ethpm-spec/examples/piper-coin/1.0.0.json +0 -1
- ethpm/ethpm-spec/examples/piper-coin/v3-pretty.json +0 -21
- ethpm/ethpm-spec/examples/piper-coin/v3.json +0 -1
- ethpm/ethpm-spec/examples/safe-math-lib/1.0.0-pretty.json +0 -85
- ethpm/ethpm-spec/examples/safe-math-lib/1.0.0.json +0 -1
- ethpm/ethpm-spec/examples/safe-math-lib/contracts/SafeMathLib.sol +0 -24
- ethpm/ethpm-spec/examples/safe-math-lib/v3-pretty.json +0 -117
- ethpm/ethpm-spec/examples/safe-math-lib/v3.json +0 -1
- ethpm/ethpm-spec/examples/standard-token/1.0.0-pretty.json +0 -55
- ethpm/ethpm-spec/examples/standard-token/1.0.0.json +0 -1
- ethpm/ethpm-spec/examples/standard-token/contracts/AbstractToken.sol +0 -20
- ethpm/ethpm-spec/examples/standard-token/contracts/StandardToken.sol +0 -84
- ethpm/ethpm-spec/examples/standard-token/v3-pretty.json +0 -460
- ethpm/ethpm-spec/examples/standard-token/v3.json +0 -1
- ethpm/ethpm-spec/examples/transferable/1.0.0-pretty.json +0 -21
- ethpm/ethpm-spec/examples/transferable/1.0.0.json +0 -1
- ethpm/ethpm-spec/examples/transferable/contracts/Transferable.sol +0 -14
- ethpm/ethpm-spec/examples/transferable/v3-pretty.json +0 -27
- ethpm/ethpm-spec/examples/transferable/v3.json +0 -1
- ethpm/ethpm-spec/examples/wallet/1.0.0-pretty.json +0 -120
- ethpm/ethpm-spec/examples/wallet/1.0.0.json +0 -1
- ethpm/ethpm-spec/examples/wallet/contracts/Wallet.sol +0 -41
- ethpm/ethpm-spec/examples/wallet/v3-pretty.json +0 -181
- ethpm/ethpm-spec/examples/wallet/v3.json +0 -1
- ethpm/ethpm-spec/examples/wallet-with-send/1.0.0-pretty.json +0 -135
- ethpm/ethpm-spec/examples/wallet-with-send/1.0.0.json +0 -1
- ethpm/ethpm-spec/examples/wallet-with-send/contracts/WalletWithSend.sol +0 -18
- ethpm/ethpm-spec/examples/wallet-with-send/v3-pretty.json +0 -207
- ethpm/ethpm-spec/examples/wallet-with-send/v3.json +0 -1
- ethpm/ethpm-spec/spec/package.spec.json +0 -379
- ethpm/ethpm-spec/spec/v3.spec.json +0 -483
- ethpm/exceptions.py +0 -68
- ethpm/package.py +0 -438
- ethpm/tools/__init__.py +0 -4
- ethpm/tools/builder.py +0 -930
- ethpm/tools/checker.py +0 -312
- ethpm/tools/get_manifest.py +0 -19
- ethpm/uri.py +0 -141
- ethpm/validation/__init__.py +0 -0
- ethpm/validation/manifest.py +0 -146
- ethpm/validation/misc.py +0 -39
- ethpm/validation/package.py +0 -80
- ethpm/validation/uri.py +0 -163
- web3/_utils/contract_sources/contract_data/address_reflector.py +0 -29
- web3/_utils/miner.py +0 -88
- web3/_utils/module_testing/go_ethereum_personal_module.py +0 -323
- web3/_utils/request.py +0 -265
- web3/middleware/abi.py +0 -11
- web3/middleware/async_cache.py +0 -99
- web3/middleware/cache.py +0 -374
- web3/middleware/exception_handling.py +0 -49
- web3/middleware/exception_retry_request.py +0 -188
- web3/middleware/fixture.py +0 -190
- web3/middleware/geth_poa.py +0 -81
- web3/middleware/normalize_request_parameters.py +0 -11
- web3/middleware/simulate_unmined_transaction.py +0 -43
- web3/pm.py +0 -602
- web3/providers/async_rpc.py +0 -99
- web3/providers/rpc.py +0 -98
- web3/providers/websocket/__init__.py +0 -11
- web3/providers/websocket/websocket_connection.py +0 -42
- web3/tools/__init__.py +0 -4
- web3/tools/pytest_ethereum/__init__.py +0 -0
- web3/tools/pytest_ethereum/_utils.py +0 -145
- web3/tools/pytest_ethereum/deployer.py +0 -48
- web3/tools/pytest_ethereum/exceptions.py +0 -22
- web3/tools/pytest_ethereum/linker.py +0 -128
- web3/tools/pytest_ethereum/plugins.py +0 -33
- web3-6.20.3.dist-info/METADATA +0 -104
- web3-6.20.3.dist-info/RECORD +0 -283
- web3-6.20.3.dist-info/entry_points.txt +0 -2
- /web3/_utils/{function_identifiers.py → abi_element_identifiers.py} +0 -0
- {web3-6.20.3.dist-info → web3-7.0.0.dist-info}/WHEEL +0 -0
web3/utils/caching.py
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import asyncio
|
|
1
2
|
from collections import (
|
|
2
3
|
OrderedDict,
|
|
3
4
|
)
|
|
5
|
+
import time
|
|
4
6
|
from typing import (
|
|
5
7
|
Any,
|
|
6
8
|
Dict,
|
|
@@ -15,32 +17,21 @@ class SimpleCache:
|
|
|
15
17
|
self._size = size
|
|
16
18
|
self._data: OrderedDict[str, Any] = OrderedDict()
|
|
17
19
|
|
|
18
|
-
def __contains__(self, key: str) -> bool:
|
|
19
|
-
return key in self._data
|
|
20
|
-
|
|
21
|
-
def __len__(self) -> int:
|
|
22
|
-
return len(self._data)
|
|
23
|
-
|
|
24
|
-
def is_full(self) -> bool:
|
|
25
|
-
return len(self._data) >= self._size
|
|
26
|
-
|
|
27
20
|
def cache(self, key: str, value: Any) -> Tuple[Any, Dict[str, Any]]:
|
|
28
|
-
evicted_items =
|
|
21
|
+
evicted_items = {}
|
|
29
22
|
# If the key is already in the OrderedDict just update it
|
|
30
23
|
# and don't evict any values. Ideally, we could still check to see
|
|
31
24
|
# if there are too many items in the OrderedDict but that may rearrange
|
|
32
25
|
# the order it should be unlikely that the size could grow over the limit
|
|
33
26
|
if key not in self._data:
|
|
34
27
|
while len(self._data) >= self._size:
|
|
35
|
-
if evicted_items is None:
|
|
36
|
-
evicted_items = {}
|
|
37
28
|
k, v = self._data.popitem(last=False)
|
|
38
29
|
evicted_items[k] = v
|
|
39
30
|
self._data[key] = value
|
|
40
31
|
|
|
41
32
|
# Return the cached value along with the evicted items at the same time. No
|
|
42
33
|
# need to reach back into the cache to grab the value.
|
|
43
|
-
return value, evicted_items
|
|
34
|
+
return value, evicted_items or None
|
|
44
35
|
|
|
45
36
|
def get_cache_entry(self, key: str) -> Optional[Any]:
|
|
46
37
|
return self._data[key] if key in self._data else None
|
|
@@ -56,3 +47,31 @@ class SimpleCache:
|
|
|
56
47
|
return None
|
|
57
48
|
|
|
58
49
|
return self._data.pop(key)
|
|
50
|
+
|
|
51
|
+
def popitem(self, last: bool = True) -> Tuple[str, Any]:
|
|
52
|
+
return self._data.popitem(last=last)
|
|
53
|
+
|
|
54
|
+
def __contains__(self, key: str) -> bool:
|
|
55
|
+
return key in self._data
|
|
56
|
+
|
|
57
|
+
def __len__(self) -> int:
|
|
58
|
+
return len(self._data)
|
|
59
|
+
|
|
60
|
+
# -- async utility methods -- #
|
|
61
|
+
|
|
62
|
+
async def async_await_and_popitem(
|
|
63
|
+
self, last: bool = True, timeout: float = 10.0
|
|
64
|
+
) -> Tuple[str, Any]:
|
|
65
|
+
start = time.time()
|
|
66
|
+
end_time = start + timeout
|
|
67
|
+
while True:
|
|
68
|
+
await asyncio.sleep(0)
|
|
69
|
+
try:
|
|
70
|
+
return self.popitem(last=last)
|
|
71
|
+
except KeyError:
|
|
72
|
+
now = time.time()
|
|
73
|
+
if now >= end_time:
|
|
74
|
+
raise asyncio.TimeoutError(
|
|
75
|
+
"Timeout waiting for item to be available"
|
|
76
|
+
)
|
|
77
|
+
await asyncio.sleep(min(0.1, end_time - now))
|
web3/utils/exception_handling.py
CHANGED
|
@@ -9,10 +9,10 @@ from eth_abi import (
|
|
|
9
9
|
from eth_typing import (
|
|
10
10
|
URI,
|
|
11
11
|
)
|
|
12
|
+
import requests
|
|
12
13
|
|
|
13
|
-
from web3._utils.
|
|
14
|
-
|
|
15
|
-
get_response_from_post_request,
|
|
14
|
+
from web3._utils.http import (
|
|
15
|
+
DEFAULT_HTTP_TIMEOUT,
|
|
16
16
|
)
|
|
17
17
|
from web3._utils.type_conversion import (
|
|
18
18
|
to_bytes_if_hex,
|
|
@@ -40,6 +40,7 @@ def handle_offchain_lookup(
|
|
|
40
40
|
"Returned `sender` value does not equal `to` address in transaction."
|
|
41
41
|
)
|
|
42
42
|
|
|
43
|
+
session = requests.Session()
|
|
43
44
|
for url in offchain_lookup_payload["urls"]:
|
|
44
45
|
formatted_url = URI(
|
|
45
46
|
str(url)
|
|
@@ -49,14 +50,15 @@ def handle_offchain_lookup(
|
|
|
49
50
|
|
|
50
51
|
try:
|
|
51
52
|
if "{data}" in url and "{sender}" in url:
|
|
52
|
-
response =
|
|
53
|
+
response = session.get(formatted_url, timeout=DEFAULT_HTTP_TIMEOUT)
|
|
53
54
|
elif "{sender}" in url:
|
|
54
|
-
response =
|
|
55
|
+
response = session.post(
|
|
55
56
|
formatted_url,
|
|
56
57
|
data={
|
|
57
58
|
"data": formatted_data,
|
|
58
59
|
"sender": formatted_sender,
|
|
59
60
|
},
|
|
61
|
+
timeout=DEFAULT_HTTP_TIMEOUT,
|
|
60
62
|
)
|
|
61
63
|
else:
|
|
62
64
|
raise Web3ValidationError("url not formatted properly.")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
The MIT License (MIT)
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2016 The Ethereum Foundation
|
|
3
|
+
Copyright (c) 2016-2024 The Ethereum Foundation
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: web3
|
|
3
|
+
Version: 7.0.0
|
|
4
|
+
Summary: web3: A Python library for interacting with Ethereum
|
|
5
|
+
Home-page: https://github.com/ethereum/web3.py
|
|
6
|
+
Author: The Ethereum Foundation
|
|
7
|
+
Author-email: snakecharmers@ethereum.org
|
|
8
|
+
License: MIT
|
|
9
|
+
Keywords: ethereum
|
|
10
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
+
Classifier: Natural Language :: English
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Requires-Python: >=3.8, <4
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: LICENSE
|
|
23
|
+
Requires-Dist: aiohttp >=3.7.4.post0
|
|
24
|
+
Requires-Dist: eth-abi >=5.0.1
|
|
25
|
+
Requires-Dist: eth-account >=0.13.1
|
|
26
|
+
Requires-Dist: eth-hash[pycryptodome] >=0.5.1
|
|
27
|
+
Requires-Dist: eth-typing >=5.0.0
|
|
28
|
+
Requires-Dist: eth-utils >=5.0.0
|
|
29
|
+
Requires-Dist: hexbytes >=1.2.0
|
|
30
|
+
Requires-Dist: pydantic >=2.4.0
|
|
31
|
+
Requires-Dist: requests >=2.23.0
|
|
32
|
+
Requires-Dist: typing-extensions >=4.0.1
|
|
33
|
+
Requires-Dist: types-requests >=2.0.0
|
|
34
|
+
Requires-Dist: websockets >=10.0.0
|
|
35
|
+
Requires-Dist: pyunormalize >=15.0.0
|
|
36
|
+
Requires-Dist: pywin32 >=223 ; platform_system == "Windows"
|
|
37
|
+
Provides-Extra: dev
|
|
38
|
+
Requires-Dist: build >=0.9.0 ; extra == 'dev'
|
|
39
|
+
Requires-Dist: bumpversion >=0.5.3 ; extra == 'dev'
|
|
40
|
+
Requires-Dist: flaky >=3.7.0 ; extra == 'dev'
|
|
41
|
+
Requires-Dist: hypothesis >=3.31.2 ; extra == 'dev'
|
|
42
|
+
Requires-Dist: ipython ; extra == 'dev'
|
|
43
|
+
Requires-Dist: mypy ==1.10.0 ; extra == 'dev'
|
|
44
|
+
Requires-Dist: pre-commit >=3.4.0 ; extra == 'dev'
|
|
45
|
+
Requires-Dist: pytest-asyncio <0.23,>=0.21.2 ; extra == 'dev'
|
|
46
|
+
Requires-Dist: pytest-mock >=1.10 ; extra == 'dev'
|
|
47
|
+
Requires-Dist: setuptools >=38.6.0 ; extra == 'dev'
|
|
48
|
+
Requires-Dist: tox >=4.0.0 ; extra == 'dev'
|
|
49
|
+
Requires-Dist: tqdm >4.32 ; extra == 'dev'
|
|
50
|
+
Requires-Dist: twine >=1.13 ; extra == 'dev'
|
|
51
|
+
Requires-Dist: wheel ; extra == 'dev'
|
|
52
|
+
Requires-Dist: sphinx >=6.0.0 ; extra == 'dev'
|
|
53
|
+
Requires-Dist: sphinx-autobuild >=2021.3.14 ; extra == 'dev'
|
|
54
|
+
Requires-Dist: sphinx-rtd-theme >=1.0.0 ; extra == 'dev'
|
|
55
|
+
Requires-Dist: towncrier <22,>=21 ; extra == 'dev'
|
|
56
|
+
Requires-Dist: eth-account >=0.13.0 ; extra == 'dev'
|
|
57
|
+
Requires-Dist: eth-tester[py-evm] <0.13.0b1,>=0.11.0b1 ; extra == 'dev'
|
|
58
|
+
Requires-Dist: py-geth >=5.0.0b1 ; extra == 'dev'
|
|
59
|
+
Requires-Dist: pytest-asyncio <0.23,>=0.18.1 ; extra == 'dev'
|
|
60
|
+
Requires-Dist: pytest-xdist >=2.4.0 ; extra == 'dev'
|
|
61
|
+
Requires-Dist: pytest >=7.0.0 ; extra == 'dev'
|
|
62
|
+
Provides-Extra: docs
|
|
63
|
+
Requires-Dist: sphinx >=6.0.0 ; extra == 'docs'
|
|
64
|
+
Requires-Dist: sphinx-autobuild >=2021.3.14 ; extra == 'docs'
|
|
65
|
+
Requires-Dist: sphinx-rtd-theme >=1.0.0 ; extra == 'docs'
|
|
66
|
+
Requires-Dist: towncrier <22,>=21 ; extra == 'docs'
|
|
67
|
+
Requires-Dist: eth-account >=0.13.0 ; extra == 'docs'
|
|
68
|
+
Provides-Extra: test
|
|
69
|
+
Requires-Dist: eth-tester[py-evm] <0.13.0b1,>=0.11.0b1 ; extra == 'test'
|
|
70
|
+
Requires-Dist: py-geth >=5.0.0b1 ; extra == 'test'
|
|
71
|
+
Requires-Dist: pytest-asyncio <0.23,>=0.18.1 ; extra == 'test'
|
|
72
|
+
Requires-Dist: pytest-mock >=1.10 ; extra == 'test'
|
|
73
|
+
Requires-Dist: pytest-xdist >=2.4.0 ; extra == 'test'
|
|
74
|
+
Requires-Dist: pytest >=7.0.0 ; extra == 'test'
|
|
75
|
+
|
|
76
|
+
# web3.py
|
|
77
|
+
|
|
78
|
+
[](https://discord.gg/GHryRvPB84)
|
|
79
|
+
[](https://circleci.com/gh/ethereum/web3.py)
|
|
80
|
+
[](https://badge.fury.io/py/web3)
|
|
81
|
+
[](https://pypi.python.org/pypi/web3)
|
|
82
|
+
[](https://web3py.readthedocs.io/en/latest/?badge=latest)
|
|
83
|
+
|
|
84
|
+
## A Python Library for Interacting with Ethereum
|
|
85
|
+
|
|
86
|
+
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.
|
|
87
|
+
|
|
88
|
+
- Python 3.8+ support
|
|
89
|
+
|
|
90
|
+
______________________________________________________________________
|
|
91
|
+
|
|
92
|
+
## Quickstart
|
|
93
|
+
|
|
94
|
+
[Get started in 5 minutes](https://web3py.readthedocs.io/en/latest/quickstart.html) or
|
|
95
|
+
[take a tour](https://web3py.readthedocs.io/en/latest/overview.html) of the library.
|
|
96
|
+
|
|
97
|
+
## Documentation
|
|
98
|
+
|
|
99
|
+
For additional guides, examples, and APIs, see the [documentation](https://web3py.readthedocs.io/en/latest/).
|
|
100
|
+
|
|
101
|
+
## Want to Help?
|
|
102
|
+
|
|
103
|
+
Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on our
|
|
104
|
+
guidelines for [contributing](https://web3py.readthedocs.io/en/latest/contributing.html),
|
|
105
|
+
then check out issues that are labeled
|
|
106
|
+
[Good First Issue](https://github.com/ethereum/web3.py/issues?q=is%3Aissue+is%3Aopen+label%3A%22Good+First+Issue%22).
|
|
107
|
+
|
|
108
|
+
______________________________________________________________________
|
|
109
|
+
|
|
110
|
+
## Questions on Implementation or Usage?
|
|
111
|
+
|
|
112
|
+
Join the conversation in the Ethereum Python Community [Discord](https://discord.gg/GHryRvPB84).
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
ens/__init__.py,sha256=BtOyGF_JrIpWFTr_T1GCJuUtmZI-Qf-v560uzTWp18E,471
|
|
2
|
+
ens/_normalization.py,sha256=U1CbJhX6R1kYPPlYq4IampbSuql97J6tcq3xnIwmpEs,16786
|
|
3
|
+
ens/abis.py,sha256=0Ec_lqe7HBsVpQrID3ccFMhx8Vb7S0TGFbeuRdXhuCE,34745
|
|
4
|
+
ens/async_ens.py,sha256=o-1m6dMC9Wcq9lXxJJ2UzcJZpMTeNBD82dnpvUFja3k,22669
|
|
5
|
+
ens/auto.py,sha256=w_E6Ua5ZmJVxfdii2aG5I_kQG5B9U5Y2qIFKVNhXo98,41
|
|
6
|
+
ens/base_ens.py,sha256=zn3lIV5-vkBEvdOAIVkE78wwTdJx7VG_fXqQmLJ_j7w,3507
|
|
7
|
+
ens/constants.py,sha256=XCO4Pntwdnw10K_AZ86V0cqcvdUoOkEZvRqoDdFPE_w,913
|
|
8
|
+
ens/contract_data.py,sha256=CZa7Uxzq6rT-KonwHHM_wo-5ry0j1DMbikgEaP27Uy8,148602
|
|
9
|
+
ens/ens.py,sha256=4LLQ_XDHhlPlG0-RGAErGZ9ltybg4yKyftdW84AeldE,21718
|
|
10
|
+
ens/exceptions.py,sha256=FVnGiWkt1IcAATfSxoWz9hwrlVG_-WCpraTo8nSHCxA,2441
|
|
11
|
+
ens/utils.py,sha256=Ro2-kcowwIgNExxNDQ1CpSFiGL9WSP_NCxp_qLzGWHw,8985
|
|
12
|
+
ens/specs/nf.json,sha256=kGZcTE_UxTl3WZwMUP6m8KbQQOKdw7PWzmuW7ewQSUs,48403
|
|
13
|
+
ens/specs/normalization_spec.json,sha256=xn3N9a-6KHMLu3MeCBsmOxSzIzUQykzE9EscKK1a3w8,3115334
|
|
14
|
+
web3/__init__.py,sha256=P11QAEV_GYoZq9ij8gDzFx5tKzJY2aMXG-keg2Lg1xs,1277
|
|
15
|
+
web3/constants.py,sha256=eQLRQVMFPbgpOjjkPTMHkY-syncJuO-sPX5UrCSRjzQ,564
|
|
16
|
+
web3/datastructures.py,sha256=Yc45cXgoXvhV0HPvnmkFFOEVDtLr-Pftc_f5q-uQY1M,10939
|
|
17
|
+
web3/exceptions.py,sha256=5Yc-tUdmcnwGv1dxg45iD3Tor3IKMfedA9U_xZ4AR3M,9081
|
|
18
|
+
web3/geth.py,sha256=IQYeqiVSqcskuXWgDR35UBuVsD-whhvTpDltO4vvCvE,5867
|
|
19
|
+
web3/logs.py,sha256=ROs-mDMH_ZOecE7hfbWA5yp27G38FbLjX4lO_WtlZxQ,198
|
|
20
|
+
web3/main.py,sha256=AFAV0Y_zIjo9ZuAlQTEMbUPN5iGyHRpS8mS-wFkw8-E,14350
|
|
21
|
+
web3/manager.py,sha256=_3Ox2IdGh0iOCGF7e2NFK3-kp3esZ-KUkZDrNTNFLqY,22905
|
|
22
|
+
web3/method.py,sha256=Uv29Vng93VC5-HHeRok30PUbGCg42SNA2YsxiweTgWA,8593
|
|
23
|
+
web3/module.py,sha256=rz_cqGNlzLGCHLE8zDf-hW4SpDfLgzVEW8pgDxM45Y0,6006
|
|
24
|
+
web3/net.py,sha256=Y3vPzHWVFkfHEZoJxjDOt4tp5ERmZrMuyi4ZFOLmIeA,1562
|
|
25
|
+
web3/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
|
+
web3/testing.py,sha256=Ury_-7XSstJ8bkCfdGEi4Cr76QzSfW7v_zfPlDlLJj0,923
|
|
27
|
+
web3/tracing.py,sha256=ZcOam7t-uEZXyui6Cndv6RYeCZP5jh1TBn2hG8sv17Q,3098
|
|
28
|
+
web3/types.py,sha256=u_GhL4B5VVyhAydizlOG8GWf1PL_EMnadme-L1HpS2E,11922
|
|
29
|
+
web3/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
|
+
web3/_utils/abi.py,sha256=6-k4oKesmJ74ZXwH1yKg-zW6UjieUgnXuWK0gzGSC6U,25674
|
|
31
|
+
web3/_utils/abi_element_identifiers.py,sha256=m305lsvUZk-jkPixT0IJd9P5sXqMvmwlwlLeBgEAnBQ,55
|
|
32
|
+
web3/_utils/async_caching.py,sha256=2XnaKCHBTTDK6B2R_YZvjJqIRUpbMDIU1uYrq-Lcyp8,486
|
|
33
|
+
web3/_utils/async_transactions.py,sha256=C2P1B9F15S0apvqhYCrvx5bU8HA7HTPVJIDsgtHLRno,5225
|
|
34
|
+
web3/_utils/batching.py,sha256=SbFKYFCRTrkFMFNa4HA4DkD_Qbjc6atnebMObyuQeHE,6316
|
|
35
|
+
web3/_utils/blocks.py,sha256=SZ17qSJuPAH5Dz-eQPGOsZw_QtkG19zvpSYMv6mEDok,2138
|
|
36
|
+
web3/_utils/caching.py,sha256=-9jyR33wBWrWGp1S7LFvovDQblLLYr8Kz7oujnJwhqA,5406
|
|
37
|
+
web3/_utils/contracts.py,sha256=HKYJKJedf8eO5az-YVybrqfw0K1__9Da5QyLVfqSPVE,10994
|
|
38
|
+
web3/_utils/datatypes.py,sha256=nI0C9XWl46gFj1RpwuoHfVqb4e73wlaerE1LNyMg3oo,1701
|
|
39
|
+
web3/_utils/decorators.py,sha256=bYIoVL0DjHWU2-KOmg-UYg6rICeThlLVZpH9yM2NT8s,1825
|
|
40
|
+
web3/_utils/empty.py,sha256=ccgxFk5qm2x2ZeD8b17wX5cCAJPkPFuHrNQNMDslytY,132
|
|
41
|
+
web3/_utils/encoding.py,sha256=yS3awPQshfqMqEgiZWWU2AG8Kq_mrCH9VwHvlMhrGw4,9282
|
|
42
|
+
web3/_utils/ens.py,sha256=2BvzfegBkR7vH3Fq7lo_LsgfT912Zj-mR8eUt6o_lBA,2434
|
|
43
|
+
web3/_utils/error_formatters_utils.py,sha256=uRXm6P6z4cUTTlQRLFLtuC3FYOjR0lrIlQToR5f_gzI,6868
|
|
44
|
+
web3/_utils/events.py,sha256=sVAXWUMmWKwYguWzk_jqra3rI6NZ55T3XfDp4_aDa-8,17044
|
|
45
|
+
web3/_utils/fee_utils.py,sha256=MFt27R9E3qFP-Hf87-Lzv0JAiuYRE_qqafyTmzctAYA,2145
|
|
46
|
+
web3/_utils/filters.py,sha256=1WX2Vgmat8QKj0WNm_GoRcVp4iJ0BhaIpM_RbcZlBzs,11860
|
|
47
|
+
web3/_utils/formatters.py,sha256=RfRZU0aXC99s6OoLMY7D-fcYJyVAYBEwdbw-JIDjbZE,3067
|
|
48
|
+
web3/_utils/http.py,sha256=NNcbf_K814Ggpt0YiGTWjV3CCUrLkpZpQDru4f-3C9E,235
|
|
49
|
+
web3/_utils/http_session_manager.py,sha256=Q5K9qJVOAjpO6490McC5kdO4lgjt-c-zxkp0kyDY2pI,11520
|
|
50
|
+
web3/_utils/hypothesis.py,sha256=4Cm4iOWv-uP9irg_Pv63kYNDYUAGhnUH6fOPWRw3A0g,209
|
|
51
|
+
web3/_utils/math.py,sha256=4oU5YdbQBXElxK00CxmUZ94ApXFu9QT_TrO0Kho1HTs,1083
|
|
52
|
+
web3/_utils/method_formatters.py,sha256=tbCGX2JcU_8FEZ0Fjk5BrtgV949nsJ4TKZ938clglSI,34169
|
|
53
|
+
web3/_utils/module.py,sha256=GuVePloTlIBZwFDOjg0zasp53HSJ32umxN1nQhqW-8Y,3175
|
|
54
|
+
web3/_utils/normalizers.py,sha256=uOaGGgkFXTa5gg6mHgPhP8n035WYpo96xtrvpRPnfNk,7455
|
|
55
|
+
web3/_utils/rpc_abi.py,sha256=ey3rw3j2jC9ybs1FZpyCPReA0Mra7TwRX1a7GTtOPeE,8392
|
|
56
|
+
web3/_utils/threads.py,sha256=hNlSd_zheQYN0vC1faWWb9_UQxp_UzaM2fI5C8y0kB0,4245
|
|
57
|
+
web3/_utils/transactions.py,sha256=eGnFlVtzvlcDsF8-Gnbai4rjVP9iWpQ5CaAx6Ml9K8g,8912
|
|
58
|
+
web3/_utils/type_conversion.py,sha256=s6cg3WDCQIarQLWw_GfctaJjXhS_EcokUNO-S_ccvng,873
|
|
59
|
+
web3/_utils/utility_methods.py,sha256=7VCpo5ysvPoGjFuDj5gT1Niva2l3BADUvNeJFlL3Yvg,2559
|
|
60
|
+
web3/_utils/validation.py,sha256=TYfkiOIT37zvRy1PqvP9lvbdfLmn1HvlBbHvrFifx1A,6351
|
|
61
|
+
web3/_utils/windows.py,sha256=IlFUtqYSbUUfFRx60zvEwpiZd080WpOrA4ojm4tmSEE,994
|
|
62
|
+
web3/_utils/compat/__init__.py,sha256=RUD0S8wzEv2a9o1UhJD0SIECjzatjJl7vc6RCM2d1Fs,571
|
|
63
|
+
web3/_utils/contract_sources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
64
|
+
web3/_utils/contract_sources/compile_contracts.py,sha256=C3eLY6gJ4xj9FunNwn4YPb9c8ElORkN8O4ddBa_kKqI,6486
|
|
65
|
+
web3/_utils/contract_sources/contract_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
66
|
+
web3/_utils/contract_sources/contract_data/_custom_contract_data.py,sha256=nxpN2uS1T338Tp5uVhwY9U1C2m2pdDz7kZv3LoZ0hpo,552
|
|
67
|
+
web3/_utils/contract_sources/contract_data/arrays_contract.py,sha256=c5liWEOYh-fW-v3XQlJ33AOmU_TzyoFoivmfzIuBSYk,18626
|
|
68
|
+
web3/_utils/contract_sources/contract_data/bytes_contracts.py,sha256=J_JL0sFLzVzopHHpSmBh4xbrSi8qc6VJtQ0iepjhEb4,14333
|
|
69
|
+
web3/_utils/contract_sources/contract_data/constructor_contracts.py,sha256=FKs_mbKhx6-CTA-as-qLeeQV8466c6X7tMVK3JOa9Jk,6047
|
|
70
|
+
web3/_utils/contract_sources/contract_data/contract_caller_tester.py,sha256=CsGnQ6O1RuaHmRohYXkDvSF3Kvu3-es2KFox6-zp5EY,6228
|
|
71
|
+
web3/_utils/contract_sources/contract_data/emitter_contract.py,sha256=tTLfAh2W0n4JQkZchKE-aOQGijKCvb_kCWALa6AQ6Dw,40861
|
|
72
|
+
web3/_utils/contract_sources/contract_data/event_contracts.py,sha256=tNN0hoCyYQX0aC_eo-5AeJT6upYhLFxFDIN5CJG1KSE,5569
|
|
73
|
+
web3/_utils/contract_sources/contract_data/extended_resolver.py,sha256=R9m5FZUOXyqT4duYRNV4DKDnDQMK_1xx9ov67-Y7tLM,15720
|
|
74
|
+
web3/_utils/contract_sources/contract_data/fallback_function_contract.py,sha256=3-gNFuU8PgLOelbE8qs-J8jrPOMbPwApvn74vHiNIws,1649
|
|
75
|
+
web3/_utils/contract_sources/contract_data/function_name_tester_contract.py,sha256=h1_PaEnjd7BheZ_R50pfSSoxU_6fJgSIMsIBgF-qrfY,1882
|
|
76
|
+
web3/_utils/contract_sources/contract_data/math_contract.py,sha256=JX68IX24anGj5p51VHCG8wD7Xs47N1iEpbHYLDVMkVU,7635
|
|
77
|
+
web3/_utils/contract_sources/contract_data/offchain_lookup.py,sha256=v-67wwc5kmBOfw8XMubS02RswhEMK8lpLKkZKs9Pr5U,16434
|
|
78
|
+
web3/_utils/contract_sources/contract_data/offchain_resolver.py,sha256=xawA9eEzwW89pGw_XcFY-crSbJp9VZrgoDqSV7yWnf8,31817
|
|
79
|
+
web3/_utils/contract_sources/contract_data/panic_errors_contract.py,sha256=S9BfCX9VH05KU5RPunYJzGTGbkCWBQiiO5ILDU1Oud8,15245
|
|
80
|
+
web3/_utils/contract_sources/contract_data/payable_tester.py,sha256=wnVaWYIOZy0rA34Os2_zZuj2vHEkJAbCJVvHa0gYtiY,1823
|
|
81
|
+
web3/_utils/contract_sources/contract_data/receive_function_contracts.py,sha256=J5a2T-IjM3zkjZOTk1NLNuJPG0PUhq2NQeK2821MvBk,17078
|
|
82
|
+
web3/_utils/contract_sources/contract_data/reflector_contracts.py,sha256=wYmbTWMAxQeHpiraI3msvYBF93hEkxr1OmbbpSjWpAE,5262
|
|
83
|
+
web3/_utils/contract_sources/contract_data/revert_contract.py,sha256=VlSqY8vuiR9cbRD2cvq9CcJMqtD-2_kSxQw1-NfNOlM,4262
|
|
84
|
+
web3/_utils/contract_sources/contract_data/simple_resolver.py,sha256=yjMu0Fe4xgI0wo2KYOAxqHjC2ld4OVaaz75PapRFv4w,3553
|
|
85
|
+
web3/_utils/contract_sources/contract_data/storage_contract.py,sha256=vP1QaekjldOJ_2e2noMKbCfp1eOFG7q8KrFvnOEuv0E,7932
|
|
86
|
+
web3/_utils/contract_sources/contract_data/string_contract.py,sha256=y6EFnum4zDrrRUmuXExCGr2bhZMrerbMiqJiamUU2Tw,11210
|
|
87
|
+
web3/_utils/contract_sources/contract_data/tuple_contracts.py,sha256=QuqPfv3BxjqDjeLScnxJDEPtPZMAB4jwHxsAOeVd6kk,23176
|
|
88
|
+
web3/_utils/module_testing/__init__.py,sha256=tPFAaX7xOR50CPTq24UeY-1CX1LQxxmEOPr0-tIRkoE,376
|
|
89
|
+
web3/_utils/module_testing/eth_module.py,sha256=gX-7yDry-fcz1UtOI3_DQQKFSnwrA1dKuBaEJTGdjrE,186255
|
|
90
|
+
web3/_utils/module_testing/go_ethereum_admin_module.py,sha256=_c-6SyzZkfAJ-7ySXUpw9FEr4cg-ShRdAGSAHWanCtY,3406
|
|
91
|
+
web3/_utils/module_testing/go_ethereum_txpool_module.py,sha256=5f8XL8-2x3keyGRaITxMQYl9oQzjgqGn8zobB-j9BPs,1176
|
|
92
|
+
web3/_utils/module_testing/module_testing_utils.py,sha256=koDvLoR5q8wFOz_8o9oRpEpjbuvU8cUbBe1PM39LjG0,7304
|
|
93
|
+
web3/_utils/module_testing/net_module.py,sha256=ifUTC-5fTcQbwpm0X09OdD5RSPnn00T8klFeYe8tTm4,1272
|
|
94
|
+
web3/_utils/module_testing/persistent_connection_provider.py,sha256=SPj5PKS9_1OncT2_Zx8x75Xj2hl22r4ciKqqsjxoS1w,17885
|
|
95
|
+
web3/_utils/module_testing/utils.py,sha256=7jYtIKfOdrQnj1pDB0gLyoN_b8U3ZyEYbMU4dxaLljs,10023
|
|
96
|
+
web3/_utils/module_testing/web3_module.py,sha256=7c6penGbHn381fPTYY6DsXKv56xGQpYkHljOsr2gbaw,25413
|
|
97
|
+
web3/auto/__init__.py,sha256=ZbzAiCZMdt_tCTTPvH6t8NCVNroKKkt7TSVBBNR74Is,44
|
|
98
|
+
web3/auto/gethdev.py,sha256=MuWD2gxv0xDv_SzPsp9mSkS1oG4P54xFK83qw9NvswA,438
|
|
99
|
+
web3/beacon/__init__.py,sha256=Ac6YiNgU8D8Ynnh5RwSCx2NwPyjnpFjpXeHuSssFbaU,113
|
|
100
|
+
web3/beacon/api_endpoints.py,sha256=dkekSCmkat5QIfwKzwm49CyVcRb-pIbn1nZHB4F8M0U,2208
|
|
101
|
+
web3/beacon/async_beacon.py,sha256=5PErS2VjhNj-GPg3WKxxJv02ZZWyu3m46sWjGMpi33A,7602
|
|
102
|
+
web3/beacon/beacon.py,sha256=NT4ebD53uesPj8I0CpqkBJ_U-o2_QFLRVM7tNnlVY0Q,6758
|
|
103
|
+
web3/contract/__init__.py,sha256=qeZRtTw9xriwoD82w6vePDuPBZ35-CMVdkzViBSH3Qs,293
|
|
104
|
+
web3/contract/async_contract.py,sha256=dkYeb4G9qwgSzL6cG0Bzjz915bqVzPCbkViSf0OKAg0,20545
|
|
105
|
+
web3/contract/base_contract.py,sha256=qfYzMC-PlefkAQVGplXwdYi5I37DwEe5Slbp5-oOc6U,38053
|
|
106
|
+
web3/contract/contract.py,sha256=BO0Xm6sUo_PxhgUxe6fT1Qh3jR61ZiniTVeZjFGJ05c,20124
|
|
107
|
+
web3/contract/utils.py,sha256=bonHXESnb9xhvMzJoi271qppwpy2D6yaHtUwt56wEJc,17853
|
|
108
|
+
web3/eth/__init__.py,sha256=qDLxOcHHIzzPD7xzwy6Wcs0lLPQieB7WN0Ax25ctit8,197
|
|
109
|
+
web3/eth/async_eth.py,sha256=elPH3Atkayk3afwepDRP3ibB7EK8MziK0fPikpKCLxI,23176
|
|
110
|
+
web3/eth/base_eth.py,sha256=UUH0Fw0HVa_mBEQ_CbCDO01yCVDsj33d8yOv7Oe-QD0,6905
|
|
111
|
+
web3/eth/eth.py,sha256=6IL3VecOGvKKbRLvr_hBx8gpWPEf-fZHrRVGGYngYmc,19707
|
|
112
|
+
web3/gas_strategies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
113
|
+
web3/gas_strategies/rpc.py,sha256=3Va-32jdmHkX7tzQCmh17ms2D6te5zZcqHP1326BdpY,352
|
|
114
|
+
web3/gas_strategies/time_based.py,sha256=oGk6nBUD4iMC8wl1vzf-nhURaqyPWYdPvNU0C3RIs8g,9071
|
|
115
|
+
web3/middleware/__init__.py,sha256=fSmPCYJOO8Qp5p-Vm_Z4XPJATu2qN7KJRypYNSO6_uM,2830
|
|
116
|
+
web3/middleware/attrdict.py,sha256=NY5yxlFOfLBBmcIjl8R-uP2dTz9ITIyTttG8-QcJWCI,2259
|
|
117
|
+
web3/middleware/base.py,sha256=AFIRLRxoQ63lEdhsRe-sATyHaYdiwNVklPOGc9ivXrA,5103
|
|
118
|
+
web3/middleware/buffered_gas_estimate.py,sha256=EmxUd-uO959UVroPsPKkl7oDa8Tw6N8BQLB6Urng5Eo,1647
|
|
119
|
+
web3/middleware/filter.py,sha256=I09sSE_q_dhWX5_24KVWhVXZNevwViI7wucJBP4TZl4,22221
|
|
120
|
+
web3/middleware/formatting.py,sha256=hqe5XQE1n5Fmj6riJp7i3oIoZkd-4ChQc7UK8f3HB6I,7567
|
|
121
|
+
web3/middleware/gas_price_strategy.py,sha256=ZjZ6pe3z0mDGLZHYoFXp4_fZIePqukljEh9f4mZUyIA,3779
|
|
122
|
+
web3/middleware/names.py,sha256=OBpsvCmcTItth4TcvUNUvcYmINnudtCHq3n6YO_BkNs,4309
|
|
123
|
+
web3/middleware/proof_of_authority.py,sha256=0AT4jr5CmTdrvl8Jiy-WYy8IFDYBOEaesgHDwpn0c7M,1429
|
|
124
|
+
web3/middleware/pythonic.py,sha256=awc8I6lLzVc2Iv138sps2uf6dMQipskLRBTdvTEEIgQ,348
|
|
125
|
+
web3/middleware/signing.py,sha256=O5kOY6xcCjms7W57H53nYJ22N47TZrO-hnd3Lx2ThHs,5887
|
|
126
|
+
web3/middleware/stalecheck.py,sha256=oWRA69BGIbNGjHSnUVOBnoxOYJZYjzRzlqqL5RRlnzk,2680
|
|
127
|
+
web3/middleware/validation.py,sha256=QxActrJk_zsXXiwpadP2MUjZBS5E50OJOtUwVrm9XVo,4280
|
|
128
|
+
web3/providers/__init__.py,sha256=YkcSzE9AubvSp-UfvJjyCrdepvziysbqeq2LT0ImDoc,936
|
|
129
|
+
web3/providers/async_base.py,sha256=61eaIK-SyuIOoSIHOtJ9vNpxTRPqTxTS392_iMcVp8s,6832
|
|
130
|
+
web3/providers/auto.py,sha256=Zx3CHKoRkmiw3Jte2BLNPiJAFd8rDXNGfA3XtxZvHgc,3465
|
|
131
|
+
web3/providers/base.py,sha256=Dypc9zlrre4IFNglFOmR_1IcLCtCFzMAvnj_IYfYXpU,5884
|
|
132
|
+
web3/providers/ipc.py,sha256=wvC8Eq6OZ65ctpUAn9SvoBCLR_x-Hgur390_b3AU100,6355
|
|
133
|
+
web3/providers/legacy_websocket.py,sha256=6mFEQVlVoc71AyDvPGGt3KQudQKdMxoHvokg6Fb4VOw,4767
|
|
134
|
+
web3/providers/eth_tester/__init__.py,sha256=UggyBQdeAyjy1awATW1933jkJcpqqaUYUQEFAQnA2o0,163
|
|
135
|
+
web3/providers/eth_tester/defaults.py,sha256=9aPe0x2C5wahdGI_rZjiGR3Fe2LbMjKWH9o6eZPuY-Q,12577
|
|
136
|
+
web3/providers/eth_tester/main.py,sha256=U19sNDeHs36A4IYQ0HFGyXdZvuXiYvoSMNWVuki0WwI,7807
|
|
137
|
+
web3/providers/eth_tester/middleware.py,sha256=3h8q1WBu5CLiBYwonWFeAR_5pUy_vqgiDmi7wOzuorc,12971
|
|
138
|
+
web3/providers/persistent/__init__.py,sha256=X7tFKJL5BXSwciq5_bRwGRB6bfdWBkIPPWMqCjXIKrA,411
|
|
139
|
+
web3/providers/persistent/async_ipc.py,sha256=7xgk9hxEXCA2yyHoRSFlDjPWTM_EJN7OVjRHTmPl9ts,4692
|
|
140
|
+
web3/providers/persistent/persistent.py,sha256=8dezjPWoabZ6Wk47t7BRAksj3eAGeQnmpiZ6XafcnqQ,11344
|
|
141
|
+
web3/providers/persistent/persistent_connection.py,sha256=RCoYNobRE9IMtxhByT0gTNby4eFqAOEDAqYzphtHNB8,2683
|
|
142
|
+
web3/providers/persistent/request_processor.py,sha256=E1jJwsvrPBTbufCy2LeNvMdRXf1H-Iz5WTsqyFvPGc0,14504
|
|
143
|
+
web3/providers/persistent/utils.py,sha256=gfY7w1HB8xuE7OujSrbwWYjQuQ8nzRBoxoL8ESinqWM,1140
|
|
144
|
+
web3/providers/persistent/websocket.py,sha256=2EuBOdkEBTp6ge53UlJbjV0eAUJ143TkmqrOLTQl9kk,4231
|
|
145
|
+
web3/providers/rpc/__init__.py,sha256=mObsuwjr7xyHnnRlwzsmbp2JgZdn2NXSSctvpye4AuQ,149
|
|
146
|
+
web3/providers/rpc/async_rpc.py,sha256=hibsCoyrAD199ExAEyHRsEnZ0_rDP_2EC2k5g-D2zhw,5609
|
|
147
|
+
web3/providers/rpc/rpc.py,sha256=ePlGdlkvQTaf2Wi2khxiY-rRj-OFcPlpDMuTPLKaAyU,5655
|
|
148
|
+
web3/providers/rpc/utils.py,sha256=_mtoZMMIoZpPA8J8U5DfRxaNQmi8bw0ZVUiqn1Nz4co,2154
|
|
149
|
+
web3/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
150
|
+
web3/scripts/release/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
151
|
+
web3/scripts/release/test_package.py,sha256=DH0AryllcF4zfpWSd0NLPSQGHNoC-Qng5WYYbS5_4c8,1534
|
|
152
|
+
web3/tools/benchmark/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
153
|
+
web3/tools/benchmark/main.py,sha256=9nBC8yvdiNPoRuNlcqKC6HKWly_iwOYSeG0cOQCjfpg,5810
|
|
154
|
+
web3/tools/benchmark/node.py,sha256=n73GckmBKLm4_urC7HfF_Z3ZURffNMjq6ymzb9HM9c8,3252
|
|
155
|
+
web3/tools/benchmark/reporting.py,sha256=G2bj_Eo2kBV06GARDYK9zr0VqesiR0_5JLKvhAo6zRM,912
|
|
156
|
+
web3/tools/benchmark/utils.py,sha256=7OOdUD71AVWi0cowAE9ekMgqlfcJwk3vrNnMCHtiGdU,1696
|
|
157
|
+
web3/utils/__init__.py,sha256=XwpyVR4EBkfqV5SHBH3maNyNBy624EwqujRgetLc7PU,1781
|
|
158
|
+
web3/utils/abi.py,sha256=iSBaCW41UxB1q1UHDPwJ1QJbdiuYmTWNu8m6E28DqlY,18672
|
|
159
|
+
web3/utils/address.py,sha256=KC_IpEbixSCuMhaW6V2QCyyJTYKYGS9c8QtI9_aH7zQ,967
|
|
160
|
+
web3/utils/async_exception_handling.py,sha256=GZWSBFC0-Wmwz1tpTie-1AKRbIQH7JkmBpf5bXrUTzY,3320
|
|
161
|
+
web3/utils/caching.py,sha256=IG_IxW-jyiRklrIyUgjOj3GQvcXrok0KLDX3ch_6wuA,2390
|
|
162
|
+
web3/utils/exception_handling.py,sha256=k31JROfUyKIm9PoEWOtYSkIq9wL8SOBwQfnSLNQyfnM,3097
|
|
163
|
+
web3-7.0.0.dist-info/LICENSE,sha256=ScEyLx1vWrB0ybKiZKKTXm5QhVksHCEUtTp4lwYV45I,1095
|
|
164
|
+
web3-7.0.0.dist-info/METADATA,sha256=XV-tEgmdtd-5eIMmDnhHpjJGfLTCXoengFZUYcrpaNM,5097
|
|
165
|
+
web3-7.0.0.dist-info/WHEEL,sha256=Mdi9PDNwEZptOjTlUcAth7XJDFtKrHYaQMPulZeBCiQ,91
|
|
166
|
+
web3-7.0.0.dist-info/top_level.txt,sha256=iwupuJh7wgypXrpk_awszyri3TahRr5vxSphNyvt1bU,9
|
|
167
|
+
web3-7.0.0.dist-info/RECORD,,
|
ethpm/__init__.py
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
from pathlib import Path
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
ETHPM_DIR = Path(__file__).parent
|
|
5
|
-
ASSETS_DIR = ETHPM_DIR / "assets"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def get_ethpm_spec_dir() -> Path:
|
|
9
|
-
ethpm_spec_dir = ETHPM_DIR / "ethpm-spec"
|
|
10
|
-
v3_spec = ethpm_spec_dir / "spec" / "v3.spec.json"
|
|
11
|
-
if not v3_spec.is_file():
|
|
12
|
-
raise FileNotFoundError(
|
|
13
|
-
"The ethpm-spec submodule is not available. "
|
|
14
|
-
"Please import the submodule with `git submodule update --init`"
|
|
15
|
-
)
|
|
16
|
-
return ethpm_spec_dir
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
from .package import Package # noqa: E402, F401
|
|
20
|
-
from .backends.registry import RegistryURI # noqa: E402, F401
|
ethpm/_utils/__init__.py
DELETED
|
File without changes
|
ethpm/_utils/backend.py
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
from typing import (
|
|
3
|
-
Generator,
|
|
4
|
-
Type,
|
|
5
|
-
)
|
|
6
|
-
|
|
7
|
-
from eth_typing import (
|
|
8
|
-
URI,
|
|
9
|
-
)
|
|
10
|
-
from eth_utils import (
|
|
11
|
-
to_tuple,
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
from ethpm.backends.base import (
|
|
15
|
-
BaseURIBackend,
|
|
16
|
-
)
|
|
17
|
-
from ethpm.backends.http import (
|
|
18
|
-
GithubOverHTTPSBackend,
|
|
19
|
-
)
|
|
20
|
-
from ethpm.backends.ipfs import (
|
|
21
|
-
DummyIPFSBackend,
|
|
22
|
-
InfuraIPFSBackend,
|
|
23
|
-
LocalIPFSBackend,
|
|
24
|
-
get_ipfs_backend_class,
|
|
25
|
-
)
|
|
26
|
-
from ethpm.backends.registry import (
|
|
27
|
-
RegistryURIBackend,
|
|
28
|
-
)
|
|
29
|
-
|
|
30
|
-
try:
|
|
31
|
-
from ipfshttpclient.exceptions import (
|
|
32
|
-
ConnectionError as IpfsConnectionError,
|
|
33
|
-
)
|
|
34
|
-
except ImportError:
|
|
35
|
-
pass
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
logger = logging.getLogger("ethpm.utils.backend")
|
|
39
|
-
|
|
40
|
-
ALL_URI_BACKENDS = [
|
|
41
|
-
InfuraIPFSBackend,
|
|
42
|
-
DummyIPFSBackend,
|
|
43
|
-
LocalIPFSBackend,
|
|
44
|
-
GithubOverHTTPSBackend,
|
|
45
|
-
RegistryURIBackend,
|
|
46
|
-
]
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
def _handle_optional_ipfs_backend_exception(e: Exception) -> None:
|
|
50
|
-
try:
|
|
51
|
-
# if optional `ipfshttpclient` module is present, catch and debug if
|
|
52
|
-
# IpfsConnectionError, else raise original exception.
|
|
53
|
-
if isinstance(e, IpfsConnectionError):
|
|
54
|
-
logger.debug("No local IPFS node available on port 5001.", exc_info=True)
|
|
55
|
-
else:
|
|
56
|
-
raise e
|
|
57
|
-
except NameError:
|
|
58
|
-
# if optional `ipfshttpclient` module is not present, raise original exception
|
|
59
|
-
raise e
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
@to_tuple
|
|
63
|
-
def get_translatable_backends_for_uri(
|
|
64
|
-
uri: URI,
|
|
65
|
-
) -> Generator[Type[BaseURIBackend], None, None]:
|
|
66
|
-
# type ignored because of conflict with instantiating BaseURIBackend
|
|
67
|
-
for backend in ALL_URI_BACKENDS:
|
|
68
|
-
try:
|
|
69
|
-
if backend().can_translate_uri(uri): # type: ignore
|
|
70
|
-
yield backend
|
|
71
|
-
except Exception as e:
|
|
72
|
-
_handle_optional_ipfs_backend_exception(e)
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
@to_tuple
|
|
76
|
-
def get_resolvable_backends_for_uri(
|
|
77
|
-
uri: URI,
|
|
78
|
-
) -> Generator[Type[BaseURIBackend], None, None]:
|
|
79
|
-
# special case the default IPFS backend to the first slot.
|
|
80
|
-
default_ipfs = get_ipfs_backend_class()
|
|
81
|
-
if default_ipfs in ALL_URI_BACKENDS and default_ipfs().can_resolve_uri(uri):
|
|
82
|
-
yield default_ipfs
|
|
83
|
-
else:
|
|
84
|
-
for backend_class in ALL_URI_BACKENDS:
|
|
85
|
-
if backend_class is default_ipfs:
|
|
86
|
-
continue
|
|
87
|
-
# type ignored because of conflict with instantiating BaseURIBackend
|
|
88
|
-
else:
|
|
89
|
-
try:
|
|
90
|
-
if backend_class().can_resolve_uri(uri): # type: ignore
|
|
91
|
-
yield backend_class
|
|
92
|
-
except Exception as e:
|
|
93
|
-
_handle_optional_ipfs_backend_exception(e)
|
ethpm/_utils/cache.py
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
from typing import (
|
|
2
|
-
Any,
|
|
3
|
-
Callable,
|
|
4
|
-
)
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class cached_property:
|
|
8
|
-
"""
|
|
9
|
-
Decorator that converts a method with a single self argument into a
|
|
10
|
-
property cached on the instance.
|
|
11
|
-
|
|
12
|
-
Optional ``name`` argument allows you to make cached properties of other
|
|
13
|
-
methods. (e.g. url = cached_property(get_absolute_url, name='url') )
|
|
14
|
-
"""
|
|
15
|
-
|
|
16
|
-
def __init__(self, func: Callable[..., Any], name: str = None) -> None:
|
|
17
|
-
self.wrapped_func = func
|
|
18
|
-
self.name = name
|
|
19
|
-
self.__doc__ = getattr(func, "__doc__")
|
|
20
|
-
|
|
21
|
-
def __get__(self, instance: Any, cls: Any = None) -> Any:
|
|
22
|
-
"""
|
|
23
|
-
Call the function and put the return value in instance.__dict__ so that
|
|
24
|
-
subsequent attribute access on the instance returns the cached value
|
|
25
|
-
instead of calling cached_property.__get__().
|
|
26
|
-
"""
|
|
27
|
-
if instance is None:
|
|
28
|
-
return self
|
|
29
|
-
res = instance.__dict__[self.name] = self.func(instance)
|
|
30
|
-
return res
|
|
31
|
-
|
|
32
|
-
def __set_name__(self, cls: Any = None, name: str = None) -> None:
|
|
33
|
-
"""
|
|
34
|
-
The function is called at the time the cls class is created.
|
|
35
|
-
The descriptor would be assigned to name.
|
|
36
|
-
"""
|
|
37
|
-
if self.name is None:
|
|
38
|
-
self.name = name
|
|
39
|
-
self.func = self.wrapped_func
|
|
40
|
-
if name != self.name:
|
|
41
|
-
raise TypeError(
|
|
42
|
-
"Unable to assign cached_property for two different names "
|
|
43
|
-
f"(%{self.name} and {name})."
|
|
44
|
-
)
|