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
ens/utils.py CHANGED
@@ -5,10 +5,7 @@ from datetime import (
5
5
  from typing import (
6
6
  TYPE_CHECKING,
7
7
  Any,
8
- Callable,
9
8
  Collection,
10
- Dict,
11
- List,
12
9
  Optional,
13
10
  Sequence,
14
11
  Tuple,
@@ -29,16 +26,15 @@ from eth_utils import (
29
26
  to_bytes,
30
27
  to_normalized_address,
31
28
  )
32
- from eth_utils.abi import (
33
- collapse_if_tuple,
34
- )
35
29
  from hexbytes import (
36
30
  HexBytes,
37
31
  )
38
32
 
39
- from ._normalization import (
40
- normalize_name_ensip15,
33
+ from ens.exceptions import (
34
+ ENSTypeError,
35
+ ENSValueError,
41
36
  )
37
+
42
38
  from .constants import (
43
39
  ACCEPTABLE_STALE_HOURS,
44
40
  AUCTION_START_GAS_CONSTANT,
@@ -60,16 +56,13 @@ if TYPE_CHECKING:
60
56
  AsyncWeb3,
61
57
  Web3 as _Web3,
62
58
  )
59
+ from web3.middleware.base import (
60
+ Middleware,
61
+ )
63
62
  from web3.providers import ( # noqa: F401
64
63
  AsyncBaseProvider,
65
64
  BaseProvider,
66
65
  )
67
- from web3.types import ( # noqa: F401
68
- ABIFunction,
69
- AsyncMiddleware,
70
- Middleware,
71
- RPCEndpoint,
72
- )
73
66
 
74
67
 
75
68
  def Web3() -> Type["_Web3"]:
@@ -81,8 +74,8 @@ def Web3() -> Type["_Web3"]:
81
74
 
82
75
 
83
76
  def init_web3(
84
- provider: "BaseProvider" = cast("BaseProvider", default),
85
- middlewares: Optional[Sequence[Tuple["Middleware", str]]] = None,
77
+ provider: "BaseProvider" = None,
78
+ middleware: Optional[Sequence[Tuple["Middleware", str]]] = None,
86
79
  ) -> "_Web3":
87
80
  from web3 import (
88
81
  Web3 as Web3Main,
@@ -91,39 +84,46 @@ def init_web3(
91
84
  Eth as EthMain,
92
85
  )
93
86
 
87
+ provider = provider or cast("BaseProvider", default)
94
88
  if provider is default:
95
89
  w3 = Web3Main(ens=None, modules={"eth": (EthMain)})
96
90
  else:
97
- w3 = Web3Main(provider, middlewares, ens=None, modules={"eth": (EthMain)})
91
+ w3 = Web3Main(provider, middleware, ens=None, modules={"eth": (EthMain)})
98
92
 
99
93
  return customize_web3(w3)
100
94
 
101
95
 
102
96
  def customize_web3(w3: "_Web3") -> "_Web3":
103
97
  from web3.middleware import (
104
- make_stalecheck_middleware,
98
+ StalecheckMiddlewareBuilder,
105
99
  )
106
100
 
107
- if w3.middleware_onion.get("name_to_address"):
108
- w3.middleware_onion.remove("name_to_address")
101
+ if w3.middleware_onion.get("ens_name_to_address"):
102
+ w3.middleware_onion.remove("ens_name_to_address")
109
103
 
110
104
  if not w3.middleware_onion.get("stalecheck"):
111
- w3.middleware_onion.add(
112
- make_stalecheck_middleware(ACCEPTABLE_STALE_HOURS * 3600), name="stalecheck"
105
+ stalecheck_middleware = StalecheckMiddlewareBuilder.build(
106
+ ACCEPTABLE_STALE_HOURS * 3600
113
107
  )
108
+ w3.middleware_onion.add(stalecheck_middleware, name="stalecheck")
114
109
  return w3
115
110
 
116
111
 
117
112
  def normalize_name(name: str) -> str:
118
113
  """
119
114
  Clean the fully qualified name, as defined in ENS `EIP-137
120
- <https://github.com/ethereum/EIPs/blob/master/EIPS/eip-137.md#name-syntax>`_
115
+ <https://github.com/ethereum/EIPs/blob/master/EIPS/eip-137.md#name-syntax>`_ # blocklint: pragma # noqa: E501
121
116
 
122
117
  This does *not* enforce whether ``name`` is a label or fully qualified domain.
123
118
 
124
119
  :param str name: the dot-separated ENS name
125
120
  :raises InvalidName: if ``name`` has invalid syntax
126
121
  """
122
+ # Defer import because module initialization takes > 0.1 ms
123
+ from ._normalization import (
124
+ normalize_name_ensip15,
125
+ )
126
+
127
127
  if is_empty_name(name):
128
128
  return ""
129
129
  elif isinstance(name, (bytes, bytearray)):
@@ -133,7 +133,7 @@ def normalize_name(name: str) -> str:
133
133
 
134
134
 
135
135
  def ens_encode_name(name: str) -> bytes:
136
- """
136
+ r"""
137
137
  Encode a name according to DNS standards specified in section 3.1
138
138
  of RFC1035 with the following validations:
139
139
 
@@ -169,7 +169,7 @@ def ens_encode_name(name: str) -> bytes:
169
169
  def is_valid_name(name: str) -> bool:
170
170
  """
171
171
  Validate whether the fully qualified name is valid, as defined in ENS `EIP-137
172
- <https://github.com/ethereum/EIPs/blob/master/EIPS/eip-137.md#name-syntax>`_
172
+ <https://github.com/ethereum/EIPs/blob/master/EIPS/eip-137.md#name-syntax>`_ # blocklint: pragma # noqa: E501
173
173
 
174
174
  :param str name: the dot-separated ENS name
175
175
  :returns: True if ``name`` is set, and :meth:`~ens.ENS.nameprep` will not
@@ -197,17 +197,17 @@ def sha3_text(val: Union[str, bytes]) -> HexBytes:
197
197
  def label_to_hash(label: str) -> HexBytes:
198
198
  label = normalize_name(label)
199
199
  if "." in label:
200
- raise ValueError(f"Cannot generate hash for label {label!r} with a '.'")
200
+ raise ENSValueError(f"Cannot generate hash for label {label!r} with a '.'")
201
201
  return Web3().keccak(text=label)
202
202
 
203
203
 
204
204
  def normal_name_to_hash(name: str) -> HexBytes:
205
205
  """
206
- This method will not normalize the name. 'normal' name here means the name
207
- should already be normalized before calling this method.
206
+ Hashes a pre-normalized name.
207
+ The normalization of the name is a prerequisite and is not handled by this function.
208
208
 
209
- :param name: the name to hash - should already be normalized
210
- :return: namehash the hash of the name
209
+ :param str name: A normalized name string to be hashed.
210
+ :return: namehash - the hash of the name
211
211
  :rtype: HexBytes
212
212
  """
213
213
  node = EMPTY_SHA3_BYTES
@@ -229,7 +229,7 @@ def raw_name_to_hash(name: str) -> HexBytes:
229
229
  behind the scenes. For advanced usage, it is a helpful utility.
230
230
 
231
231
  This normalizes the name with `nameprep
232
- <https://github.com/ethereum/EIPs/blob/master/EIPS/eip-137.md#name-syntax>`_
232
+ <https://github.com/ethereum/EIPs/blob/master/EIPS/eip-137.md#name-syntax>`_ # blocklint: pragma # noqa: E501
233
233
  before hashing.
234
234
 
235
235
  :param str name: ENS name to hash
@@ -262,7 +262,7 @@ def assert_signer_in_modifier_kwargs(modifier_kwargs: Any) -> ChecksumAddress:
262
262
 
263
263
  _modifier_type, modifier_dict = dict(modifier_kwargs).popitem()
264
264
  if "from" not in modifier_dict:
265
- raise TypeError(ERR_MSG)
265
+ raise ENSTypeError(ERR_MSG)
266
266
 
267
267
  return modifier_dict["from"]
268
268
 
@@ -285,21 +285,12 @@ def is_valid_ens_name(ens_name: str) -> bool:
285
285
  return True
286
286
 
287
287
 
288
- # borrowed from similar method at `web3._utils.abi` due to circular dependency
289
- def get_abi_output_types(abi: "ABIFunction") -> List[str]:
290
- return (
291
- []
292
- if abi["type"] == "fallback"
293
- else [collapse_if_tuple(cast(Dict[str, Any], arg)) for arg in abi["outputs"]]
294
- )
295
-
296
-
297
288
  # -- async -- #
298
289
 
299
290
 
300
291
  def init_async_web3(
301
- provider: "AsyncBaseProvider" = cast("AsyncBaseProvider", default),
302
- middlewares: Optional[Sequence[Tuple["AsyncMiddleware", str]]] = (),
292
+ provider: "AsyncBaseProvider" = None,
293
+ middleware: Optional[Sequence[Tuple["Middleware", str]]] = (),
303
294
  ) -> "AsyncWeb3":
304
295
  from web3 import (
305
296
  AsyncWeb3 as AsyncWeb3Main,
@@ -307,36 +298,34 @@ def init_async_web3(
307
298
  from web3.eth import (
308
299
  AsyncEth as AsyncEthMain,
309
300
  )
301
+ from web3.middleware import (
302
+ StalecheckMiddlewareBuilder,
303
+ )
310
304
 
311
- middlewares = list(middlewares)
312
- for i, (middleware, name) in enumerate(middlewares):
313
- if name == "name_to_address":
314
- middlewares.pop(i)
315
-
316
- if "stalecheck" not in (name for mw, name in middlewares):
317
- middlewares.append((_async_ens_stalecheck_middleware, "stalecheck"))
305
+ provider = provider or cast("AsyncBaseProvider", default)
306
+ middleware = list(middleware)
307
+ for i, (_mw, name) in enumerate(middleware):
308
+ if name == "ens_name_to_address":
309
+ middleware.pop(i)
310
+
311
+ if "stalecheck" not in (name for mw, name in middleware):
312
+ middleware.append(
313
+ (
314
+ StalecheckMiddlewareBuilder.build(ACCEPTABLE_STALE_HOURS * 3600),
315
+ "stalecheck",
316
+ )
317
+ )
318
318
 
319
319
  if provider is default:
320
320
  async_w3 = AsyncWeb3Main(
321
- middlewares=middlewares, ens=None, modules={"eth": (AsyncEthMain)}
321
+ middleware=middleware, ens=None, modules={"eth": (AsyncEthMain)}
322
322
  )
323
323
  else:
324
324
  async_w3 = AsyncWeb3Main(
325
325
  provider,
326
- middlewares=middlewares,
326
+ middleware=middleware,
327
327
  ens=None,
328
328
  modules={"eth": (AsyncEthMain)},
329
329
  )
330
330
 
331
331
  return async_w3
332
-
333
-
334
- async def _async_ens_stalecheck_middleware(
335
- make_request: Callable[["RPCEndpoint", Any], Any], w3: "AsyncWeb3"
336
- ) -> "Middleware":
337
- from web3.middleware import (
338
- async_make_stalecheck_middleware,
339
- )
340
-
341
- middleware = await async_make_stalecheck_middleware(ACCEPTABLE_STALE_HOURS * 3600)
342
- return await middleware(make_request, w3)
web3/__init__.py CHANGED
@@ -1,31 +1,25 @@
1
1
  from eth_account import Account # noqa: E402
2
- import sys
3
2
 
4
- from web3.providers import (
5
- AsyncBaseProvider,
6
- AutoProvider,
7
- BaseProvider,
8
- JSONBaseProvider,
9
- PersistentConnectionProvider,
10
- )
11
-
12
-
13
- if sys.version_info.major == 3 and sys.version_info.minor < 8:
14
- import pkg_resources
15
-
16
- __version__ = pkg_resources.get_distribution("web3").version
17
- else:
18
- from importlib.metadata import version
3
+ from importlib.metadata import version
19
4
 
20
- __version__ = version("web3")
5
+ __version__ = version("web3")
21
6
 
22
7
 
23
8
  from web3.main import (
24
9
  AsyncWeb3,
25
10
  Web3,
26
11
  )
27
- from web3.providers.async_rpc import ( # noqa: E402
28
- AsyncHTTPProvider,
12
+ from web3.providers import (
13
+ AsyncBaseProvider,
14
+ AutoProvider,
15
+ BaseProvider,
16
+ JSONBaseProvider,
17
+ PersistentConnection,
18
+ )
19
+ from web3.providers.persistent import ( # noqa: E402
20
+ AsyncIPCProvider,
21
+ PersistentConnectionProvider,
22
+ WebSocketProvider,
29
23
  )
30
24
  from web3.providers.eth_tester import ( # noqa: E402
31
25
  AsyncEthereumTesterProvider,
@@ -35,11 +29,11 @@ from web3.providers.ipc import ( # noqa: E402
35
29
  IPCProvider,
36
30
  )
37
31
  from web3.providers.rpc import ( # noqa: E402
32
+ AsyncHTTPProvider,
38
33
  HTTPProvider,
39
34
  )
40
- from web3.providers.websocket import ( # noqa: E402
41
- WebsocketProvider,
42
- WebsocketProviderV2,
35
+ from web3.providers.legacy_websocket import ( # noqa: E402
36
+ LegacyWebSocketProvider,
43
37
  )
44
38
 
45
39
 
@@ -53,13 +47,15 @@ __all__ = [
53
47
  "AsyncBaseProvider",
54
48
  "AsyncEthereumTesterProvider",
55
49
  "AsyncHTTPProvider",
50
+ "AsyncIPCProvider",
56
51
  "AutoProvider",
57
52
  "BaseProvider",
58
53
  "EthereumTesterProvider",
59
54
  "HTTPProvider",
60
55
  "IPCProvider",
61
56
  "JSONBaseProvider",
57
+ "LegacyWebSocketProvider",
58
+ "PersistentConnection",
62
59
  "PersistentConnectionProvider",
63
- "WebsocketProvider",
64
- "WebsocketProviderV2",
60
+ "WebSocketProvider",
65
61
  ]