web3 6.20.2__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.
Files changed (270) hide show
  1. ens/__init__.py +13 -2
  2. ens/_normalization.py +2 -17
  3. ens/async_ens.py +33 -21
  4. ens/base_ens.py +3 -1
  5. ens/ens.py +16 -11
  6. ens/exceptions.py +16 -29
  7. ens/specs/nf.json +1 -1
  8. ens/specs/normalization_spec.json +1 -1
  9. ens/utils.py +52 -63
  10. web3/__init__.py +20 -24
  11. web3/_utils/abi.py +115 -271
  12. web3/_utils/async_transactions.py +7 -4
  13. web3/_utils/batching.py +217 -0
  14. web3/_utils/blocks.py +6 -2
  15. web3/_utils/caching.py +128 -5
  16. web3/_utils/compat/__init__.py +2 -3
  17. web3/_utils/contract_sources/compile_contracts.py +1 -1
  18. web3/_utils/contract_sources/contract_data/arrays_contract.py +3 -3
  19. web3/_utils/contract_sources/contract_data/bytes_contracts.py +5 -5
  20. web3/_utils/contract_sources/contract_data/constructor_contracts.py +7 -7
  21. web3/_utils/contract_sources/contract_data/contract_caller_tester.py +3 -3
  22. web3/_utils/contract_sources/contract_data/emitter_contract.py +3 -3
  23. web3/_utils/contract_sources/contract_data/event_contracts.py +5 -5
  24. web3/_utils/contract_sources/contract_data/extended_resolver.py +3 -3
  25. web3/_utils/contract_sources/contract_data/fallback_function_contract.py +3 -3
  26. web3/_utils/contract_sources/contract_data/function_name_tester_contract.py +3 -3
  27. web3/_utils/contract_sources/contract_data/math_contract.py +3 -3
  28. web3/_utils/contract_sources/contract_data/offchain_lookup.py +3 -3
  29. web3/_utils/contract_sources/contract_data/offchain_resolver.py +3 -3
  30. web3/_utils/contract_sources/contract_data/panic_errors_contract.py +3 -3
  31. web3/_utils/contract_sources/contract_data/payable_tester.py +3 -3
  32. web3/_utils/contract_sources/contract_data/receive_function_contracts.py +5 -5
  33. web3/_utils/contract_sources/contract_data/reflector_contracts.py +3 -3
  34. web3/_utils/contract_sources/contract_data/revert_contract.py +3 -3
  35. web3/_utils/contract_sources/contract_data/simple_resolver.py +3 -3
  36. web3/_utils/contract_sources/contract_data/storage_contract.py +3 -3
  37. web3/_utils/contract_sources/contract_data/string_contract.py +3 -3
  38. web3/_utils/contract_sources/contract_data/tuple_contracts.py +5 -5
  39. web3/_utils/contracts.py +130 -236
  40. web3/_utils/datatypes.py +5 -1
  41. web3/_utils/decorators.py +13 -23
  42. web3/_utils/empty.py +1 -1
  43. web3/_utils/encoding.py +16 -12
  44. web3/_utils/ens.py +2 -1
  45. web3/_utils/error_formatters_utils.py +5 -3
  46. web3/_utils/events.py +66 -69
  47. web3/_utils/fee_utils.py +1 -3
  48. web3/_utils/filters.py +24 -22
  49. web3/_utils/formatters.py +2 -2
  50. web3/_utils/http.py +5 -3
  51. web3/_utils/http_session_manager.py +303 -0
  52. web3/_utils/math.py +14 -15
  53. web3/_utils/method_formatters.py +34 -36
  54. web3/_utils/module.py +2 -1
  55. web3/_utils/module_testing/__init__.py +0 -3
  56. web3/_utils/module_testing/eth_module.py +695 -643
  57. web3/_utils/module_testing/module_testing_utils.py +61 -34
  58. web3/_utils/module_testing/persistent_connection_provider.py +56 -25
  59. web3/_utils/module_testing/utils.py +258 -0
  60. web3/_utils/module_testing/web3_module.py +438 -17
  61. web3/_utils/normalizers.py +13 -11
  62. web3/_utils/rpc_abi.py +5 -32
  63. web3/_utils/threads.py +8 -7
  64. web3/_utils/transactions.py +14 -12
  65. web3/_utils/type_conversion.py +5 -1
  66. web3/_utils/validation.py +17 -17
  67. web3/auto/gethdev.py +7 -2
  68. web3/beacon/__init__.py +6 -1
  69. web3/beacon/async_beacon.py +9 -5
  70. web3/beacon/{main.py → beacon.py} +7 -5
  71. web3/contract/__init__.py +7 -0
  72. web3/contract/async_contract.py +47 -46
  73. web3/contract/base_contract.py +183 -158
  74. web3/contract/contract.py +49 -43
  75. web3/contract/utils.py +203 -59
  76. web3/datastructures.py +79 -31
  77. web3/eth/__init__.py +7 -0
  78. web3/eth/async_eth.py +39 -51
  79. web3/eth/base_eth.py +17 -10
  80. web3/eth/eth.py +30 -68
  81. web3/exceptions.py +108 -82
  82. web3/gas_strategies/time_based.py +8 -6
  83. web3/geth.py +1 -254
  84. web3/main.py +75 -122
  85. web3/manager.py +316 -146
  86. web3/method.py +38 -31
  87. web3/middleware/__init__.py +67 -89
  88. web3/middleware/attrdict.py +36 -49
  89. web3/middleware/base.py +174 -0
  90. web3/middleware/buffered_gas_estimate.py +20 -21
  91. web3/middleware/filter.py +157 -117
  92. web3/middleware/formatting.py +124 -108
  93. web3/middleware/gas_price_strategy.py +20 -32
  94. web3/middleware/names.py +29 -26
  95. web3/middleware/proof_of_authority.py +68 -0
  96. web3/middleware/pythonic.py +2 -2
  97. web3/middleware/signing.py +74 -89
  98. web3/middleware/stalecheck.py +52 -79
  99. web3/middleware/validation.py +5 -13
  100. web3/module.py +54 -10
  101. web3/providers/__init__.py +10 -6
  102. web3/providers/async_base.py +117 -39
  103. web3/providers/auto.py +3 -3
  104. web3/providers/base.py +89 -33
  105. web3/providers/eth_tester/__init__.py +5 -0
  106. web3/providers/eth_tester/defaults.py +1 -64
  107. web3/providers/eth_tester/main.py +99 -31
  108. web3/providers/eth_tester/middleware.py +45 -73
  109. web3/providers/ipc.py +42 -46
  110. web3/providers/{websocket/websocket.py → legacy_websocket.py} +32 -7
  111. web3/providers/persistent/__init__.py +22 -0
  112. web3/providers/persistent/async_ipc.py +153 -0
  113. web3/providers/{persistent.py → persistent/persistent.py} +106 -25
  114. web3/providers/persistent/persistent_connection.py +84 -0
  115. web3/providers/{websocket → persistent}/request_processor.py +94 -32
  116. web3/providers/persistent/utils.py +43 -0
  117. web3/providers/{websocket/websocket_v2.py → persistent/websocket.py} +29 -28
  118. web3/providers/rpc/__init__.py +11 -0
  119. web3/providers/rpc/async_rpc.py +171 -0
  120. web3/providers/rpc/rpc.py +179 -0
  121. web3/providers/rpc/utils.py +92 -0
  122. web3/testing.py +4 -4
  123. web3/tools/benchmark/main.py +22 -22
  124. web3/tools/benchmark/node.py +2 -8
  125. web3/tools/benchmark/reporting.py +2 -2
  126. web3/tools/benchmark/utils.py +1 -1
  127. web3/tracing.py +9 -5
  128. web3/types.py +30 -107
  129. web3/utils/__init__.py +58 -5
  130. web3/utils/abi.py +575 -10
  131. web3/utils/async_exception_handling.py +19 -7
  132. web3/utils/caching.py +32 -13
  133. web3/utils/exception_handling.py +7 -5
  134. {web3-6.20.2.dist-info → web3-7.0.0.dist-info}/LICENSE +1 -1
  135. web3-7.0.0.dist-info/METADATA +112 -0
  136. web3-7.0.0.dist-info/RECORD +167 -0
  137. {web3-6.20.2.dist-info → web3-7.0.0.dist-info}/WHEEL +1 -1
  138. {web3-6.20.2.dist-info → web3-7.0.0.dist-info}/top_level.txt +0 -1
  139. ethpm/__init__.py +0 -20
  140. ethpm/_utils/__init__.py +0 -0
  141. ethpm/_utils/backend.py +0 -93
  142. ethpm/_utils/cache.py +0 -44
  143. ethpm/_utils/chains.py +0 -119
  144. ethpm/_utils/contract.py +0 -35
  145. ethpm/_utils/deployments.py +0 -145
  146. ethpm/_utils/ipfs.py +0 -116
  147. ethpm/_utils/protobuf/__init__.py +0 -0
  148. ethpm/_utils/protobuf/ipfs_file_pb2.py +0 -33
  149. ethpm/_utils/registry.py +0 -29
  150. ethpm/assets/__init__.py +0 -0
  151. ethpm/assets/ens/v3.json +0 -1
  152. ethpm/assets/escrow/with_bytecode_v3.json +0 -1
  153. ethpm/assets/ipfs_file.proto +0 -32
  154. ethpm/assets/owned/output_v3.json +0 -1
  155. ethpm/assets/owned/with_contract_type_v3.json +0 -1
  156. ethpm/assets/registry/contracts/Authority.sol +0 -156
  157. ethpm/assets/registry/contracts/IndexedOrderedSetLib.sol +0 -106
  158. ethpm/assets/registry/contracts/PackageDB.sol +0 -225
  159. ethpm/assets/registry/contracts/PackageRegistry.sol +0 -361
  160. ethpm/assets/registry/contracts/PackageRegistryInterface.sol +0 -97
  161. ethpm/assets/registry/contracts/ReleaseDB.sol +0 -309
  162. ethpm/assets/registry/contracts/ReleaseValidator.sol +0 -152
  163. ethpm/assets/registry/solc_input.json +0 -1
  164. ethpm/assets/registry/solc_output.json +0 -1
  165. ethpm/assets/registry/v3.json +0 -1
  166. ethpm/assets/safe-math-lib/v3-strict-no-deployments.json +0 -1
  167. ethpm/assets/simple-registry/contracts/Ownable.sol +0 -63
  168. ethpm/assets/simple-registry/contracts/PackageRegistry.sol +0 -373
  169. ethpm/assets/simple-registry/contracts/PackageRegistryInterface.sol +0 -96
  170. ethpm/assets/simple-registry/solc_input.json +0 -33
  171. ethpm/assets/simple-registry/solc_output.json +0 -1
  172. ethpm/assets/simple-registry/v3.json +0 -1
  173. ethpm/assets/standard-token/output_v3.json +0 -1
  174. ethpm/assets/standard-token/with_bytecode_v3.json +0 -1
  175. ethpm/assets/vyper_registry/0.1.0.json +0 -1
  176. ethpm/assets/vyper_registry/registry.vy +0 -216
  177. ethpm/assets/vyper_registry/registry_with_delete.vy +0 -244
  178. ethpm/backends/__init__.py +0 -0
  179. ethpm/backends/base.py +0 -43
  180. ethpm/backends/http.py +0 -108
  181. ethpm/backends/ipfs.py +0 -219
  182. ethpm/backends/registry.py +0 -154
  183. ethpm/constants.py +0 -17
  184. ethpm/contract.py +0 -187
  185. ethpm/dependencies.py +0 -58
  186. ethpm/deployments.py +0 -80
  187. ethpm/ethpm-spec/examples/escrow/1.0.0-pretty.json +0 -146
  188. ethpm/ethpm-spec/examples/escrow/1.0.0.json +0 -1
  189. ethpm/ethpm-spec/examples/escrow/contracts/Escrow.sol +0 -32
  190. ethpm/ethpm-spec/examples/escrow/contracts/SafeSendLib.sol +0 -20
  191. ethpm/ethpm-spec/examples/escrow/v3-pretty.json +0 -171
  192. ethpm/ethpm-spec/examples/escrow/v3.json +0 -1
  193. ethpm/ethpm-spec/examples/owned/1.0.0-pretty.json +0 -21
  194. ethpm/ethpm-spec/examples/owned/1.0.0.json +0 -1
  195. ethpm/ethpm-spec/examples/owned/contracts/Owned.sol +0 -12
  196. ethpm/ethpm-spec/examples/owned/v3-pretty.json +0 -27
  197. ethpm/ethpm-spec/examples/owned/v3.json +0 -1
  198. ethpm/ethpm-spec/examples/piper-coin/1.0.0-pretty.json +0 -31
  199. ethpm/ethpm-spec/examples/piper-coin/1.0.0.json +0 -1
  200. ethpm/ethpm-spec/examples/piper-coin/v3-pretty.json +0 -21
  201. ethpm/ethpm-spec/examples/piper-coin/v3.json +0 -1
  202. ethpm/ethpm-spec/examples/safe-math-lib/1.0.0-pretty.json +0 -85
  203. ethpm/ethpm-spec/examples/safe-math-lib/1.0.0.json +0 -1
  204. ethpm/ethpm-spec/examples/safe-math-lib/contracts/SafeMathLib.sol +0 -24
  205. ethpm/ethpm-spec/examples/safe-math-lib/v3-pretty.json +0 -117
  206. ethpm/ethpm-spec/examples/safe-math-lib/v3.json +0 -1
  207. ethpm/ethpm-spec/examples/standard-token/1.0.0-pretty.json +0 -55
  208. ethpm/ethpm-spec/examples/standard-token/1.0.0.json +0 -1
  209. ethpm/ethpm-spec/examples/standard-token/contracts/AbstractToken.sol +0 -20
  210. ethpm/ethpm-spec/examples/standard-token/contracts/StandardToken.sol +0 -84
  211. ethpm/ethpm-spec/examples/standard-token/v3-pretty.json +0 -460
  212. ethpm/ethpm-spec/examples/standard-token/v3.json +0 -1
  213. ethpm/ethpm-spec/examples/transferable/1.0.0-pretty.json +0 -21
  214. ethpm/ethpm-spec/examples/transferable/1.0.0.json +0 -1
  215. ethpm/ethpm-spec/examples/transferable/contracts/Transferable.sol +0 -14
  216. ethpm/ethpm-spec/examples/transferable/v3-pretty.json +0 -27
  217. ethpm/ethpm-spec/examples/transferable/v3.json +0 -1
  218. ethpm/ethpm-spec/examples/wallet/1.0.0-pretty.json +0 -120
  219. ethpm/ethpm-spec/examples/wallet/1.0.0.json +0 -1
  220. ethpm/ethpm-spec/examples/wallet/contracts/Wallet.sol +0 -41
  221. ethpm/ethpm-spec/examples/wallet/v3-pretty.json +0 -181
  222. ethpm/ethpm-spec/examples/wallet/v3.json +0 -1
  223. ethpm/ethpm-spec/examples/wallet-with-send/1.0.0-pretty.json +0 -135
  224. ethpm/ethpm-spec/examples/wallet-with-send/1.0.0.json +0 -1
  225. ethpm/ethpm-spec/examples/wallet-with-send/contracts/WalletWithSend.sol +0 -18
  226. ethpm/ethpm-spec/examples/wallet-with-send/v3-pretty.json +0 -207
  227. ethpm/ethpm-spec/examples/wallet-with-send/v3.json +0 -1
  228. ethpm/ethpm-spec/spec/package.spec.json +0 -379
  229. ethpm/ethpm-spec/spec/v3.spec.json +0 -483
  230. ethpm/exceptions.py +0 -68
  231. ethpm/package.py +0 -438
  232. ethpm/tools/__init__.py +0 -4
  233. ethpm/tools/builder.py +0 -930
  234. ethpm/tools/checker.py +0 -312
  235. ethpm/tools/get_manifest.py +0 -19
  236. ethpm/uri.py +0 -141
  237. ethpm/validation/__init__.py +0 -0
  238. ethpm/validation/manifest.py +0 -146
  239. ethpm/validation/misc.py +0 -39
  240. ethpm/validation/package.py +0 -80
  241. ethpm/validation/uri.py +0 -163
  242. web3/_utils/contract_sources/contract_data/address_reflector.py +0 -29
  243. web3/_utils/miner.py +0 -88
  244. web3/_utils/module_testing/go_ethereum_personal_module.py +0 -323
  245. web3/_utils/request.py +0 -265
  246. web3/middleware/abi.py +0 -11
  247. web3/middleware/async_cache.py +0 -99
  248. web3/middleware/cache.py +0 -374
  249. web3/middleware/exception_handling.py +0 -49
  250. web3/middleware/exception_retry_request.py +0 -188
  251. web3/middleware/fixture.py +0 -190
  252. web3/middleware/geth_poa.py +0 -81
  253. web3/middleware/normalize_request_parameters.py +0 -11
  254. web3/middleware/simulate_unmined_transaction.py +0 -43
  255. web3/pm.py +0 -602
  256. web3/providers/async_rpc.py +0 -99
  257. web3/providers/rpc.py +0 -98
  258. web3/providers/websocket/__init__.py +0 -11
  259. web3/providers/websocket/websocket_connection.py +0 -42
  260. web3/tools/__init__.py +0 -4
  261. web3/tools/pytest_ethereum/__init__.py +0 -0
  262. web3/tools/pytest_ethereum/_utils.py +0 -145
  263. web3/tools/pytest_ethereum/deployer.py +0 -48
  264. web3/tools/pytest_ethereum/exceptions.py +0 -22
  265. web3/tools/pytest_ethereum/linker.py +0 -128
  266. web3/tools/pytest_ethereum/plugins.py +0 -33
  267. web3-6.20.2.dist-info/METADATA +0 -103
  268. web3-6.20.2.dist-info/RECORD +0 -283
  269. web3-6.20.2.dist-info/entry_points.txt +0 -2
  270. /web3/_utils/{function_identifiers.py → abi_element_identifiers.py} +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 = None
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))
@@ -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.request import (
14
- get_response_from_get_request,
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 = get_response_from_get_request(formatted_url)
53
+ response = session.get(formatted_url, timeout=DEFAULT_HTTP_TIMEOUT)
53
54
  elif "{sender}" in url:
54
- response = get_response_from_post_request(
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
+ [![Join the conversation on Discord](https://img.shields.io/discord/809793915578089484?color=blue&label=chat&logo=discord&logoColor=white)](https://discord.gg/GHryRvPB84)
79
+ [![Build Status](https://circleci.com/gh/ethereum/web3.py.svg?style=shield)](https://circleci.com/gh/ethereum/web3.py)
80
+ [![PyPI version](https://badge.fury.io/py/web3.svg)](https://badge.fury.io/py/web3)
81
+ [![Python versions](https://img.shields.io/pypi/pyversions/web3.svg)](https://pypi.python.org/pypi/web3)
82
+ [![Docs build](https://readthedocs.org/projects/web3py/badge/?version=latest)](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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (72.2.0)
2
+ Generator: setuptools (73.0.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,3 +1,2 @@
1
1
  ens
2
- ethpm
3
2
  web3
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
- )