web3 7.7.0__py3-none-any.whl → 7.8.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/async_ens.py +1 -1
- ens/ens.py +1 -1
- web3/_utils/events.py +1 -1
- web3/_utils/http_session_manager.py +19 -1
- web3/_utils/module_testing/eth_module.py +3 -0
- web3/_utils/module_testing/module_testing_utils.py +0 -42
- web3/_utils/module_testing/persistent_connection_provider.py +38 -0
- web3/beacon/api_endpoints.py +10 -0
- web3/beacon/async_beacon.py +47 -0
- web3/beacon/beacon.py +45 -0
- web3/contract/async_contract.py +2 -206
- web3/contract/base_contract.py +208 -12
- web3/contract/contract.py +2 -205
- web3/datastructures.py +4 -0
- web3/manager.py +62 -18
- web3/middleware/base.py +14 -6
- web3/providers/async_base.py +5 -4
- web3/providers/base.py +3 -3
- web3/providers/persistent/request_processor.py +11 -1
- web3/providers/persistent/subscription_manager.py +110 -45
- web3/providers/rpc/async_rpc.py +8 -3
- web3/providers/rpc/rpc.py +8 -3
- web3/types.py +10 -11
- web3/utils/subscriptions.py +5 -1
- {web3-7.7.0.dist-info → web3-7.8.0.dist-info}/LICENSE +1 -1
- {web3-7.7.0.dist-info → web3-7.8.0.dist-info}/METADATA +1 -1
- {web3-7.7.0.dist-info → web3-7.8.0.dist-info}/RECORD +29 -29
- {web3-7.7.0.dist-info → web3-7.8.0.dist-info}/WHEEL +0 -0
- {web3-7.7.0.dist-info → web3-7.8.0.dist-info}/top_level.txt +0 -0
|
@@ -69,6 +69,23 @@ class SubscriptionManager:
|
|
|
69
69
|
def _remove_subscription(self, subscription: EthSubscription[Any]) -> None:
|
|
70
70
|
self._subscription_container.remove_subscription(subscription)
|
|
71
71
|
|
|
72
|
+
def _validate_and_normalize_label(self, subscription: EthSubscription[Any]) -> None:
|
|
73
|
+
if subscription.label == subscription._default_label:
|
|
74
|
+
# if no custom label was provided, generate a unique label
|
|
75
|
+
i = 2
|
|
76
|
+
while self.get_by_label(subscription._label) is not None:
|
|
77
|
+
subscription._label = f"{subscription._default_label}#{i}"
|
|
78
|
+
i += 1
|
|
79
|
+
else:
|
|
80
|
+
if (
|
|
81
|
+
subscription._label
|
|
82
|
+
in self._subscription_container.subscriptions_by_label
|
|
83
|
+
):
|
|
84
|
+
raise Web3ValueError(
|
|
85
|
+
"Subscription label already exists. Subscriptions must have unique "
|
|
86
|
+
f"labels.\n label: {subscription._label}"
|
|
87
|
+
)
|
|
88
|
+
|
|
72
89
|
@property
|
|
73
90
|
def subscriptions(self) -> List[EthSubscription[Any]]:
|
|
74
91
|
return self._subscription_container.subscriptions
|
|
@@ -100,16 +117,8 @@ class SubscriptionManager:
|
|
|
100
117
|
:return:
|
|
101
118
|
"""
|
|
102
119
|
if isinstance(subscriptions, EthSubscription):
|
|
103
|
-
if (
|
|
104
|
-
subscriptions.label
|
|
105
|
-
in self._subscription_container.subscriptions_by_label
|
|
106
|
-
):
|
|
107
|
-
raise Web3ValueError(
|
|
108
|
-
"Subscription label already exists. Subscriptions must have "
|
|
109
|
-
f"unique labels.\n label: {subscriptions.label}"
|
|
110
|
-
)
|
|
111
|
-
|
|
112
120
|
subscriptions.manager = self
|
|
121
|
+
self._validate_and_normalize_label(subscriptions)
|
|
113
122
|
sub_id = await self._w3.eth._subscribe(*subscriptions.subscription_params)
|
|
114
123
|
subscriptions._id = sub_id
|
|
115
124
|
self._add_subscription(subscriptions)
|
|
@@ -124,34 +133,88 @@ class SubscriptionManager:
|
|
|
124
133
|
|
|
125
134
|
sub_ids: List[HexStr] = []
|
|
126
135
|
for sub in subscriptions:
|
|
127
|
-
await self.subscribe(sub)
|
|
136
|
+
sub_ids.append(await self.subscribe(sub))
|
|
128
137
|
return sub_ids
|
|
129
138
|
raise Web3TypeError("Expected a Subscription or a sequence of Subscriptions.")
|
|
130
139
|
|
|
131
|
-
|
|
140
|
+
@overload
|
|
141
|
+
async def unsubscribe(self, subscriptions: EthSubscription[Any]) -> bool:
|
|
142
|
+
...
|
|
143
|
+
|
|
144
|
+
@overload
|
|
145
|
+
async def unsubscribe(self, subscriptions: HexStr) -> bool:
|
|
146
|
+
...
|
|
147
|
+
|
|
148
|
+
@overload
|
|
149
|
+
async def unsubscribe(
|
|
150
|
+
self,
|
|
151
|
+
subscriptions: Sequence[Union[EthSubscription[Any], HexStr]],
|
|
152
|
+
) -> bool:
|
|
153
|
+
...
|
|
154
|
+
|
|
155
|
+
async def unsubscribe(
|
|
156
|
+
self,
|
|
157
|
+
subscriptions: Union[
|
|
158
|
+
EthSubscription[Any],
|
|
159
|
+
HexStr,
|
|
160
|
+
Sequence[Union[EthSubscription[Any], HexStr]],
|
|
161
|
+
],
|
|
162
|
+
) -> bool:
|
|
132
163
|
"""
|
|
133
|
-
Used to unsubscribe from
|
|
164
|
+
Used to unsubscribe from one or multiple subscriptions.
|
|
134
165
|
|
|
135
|
-
:param
|
|
136
|
-
:type
|
|
137
|
-
|
|
166
|
+
:param subscriptions: The subscription(s) to unsubscribe from.
|
|
167
|
+
:type subscriptions: Union[EthSubscription, Sequence[EthSubscription], HexStr,
|
|
168
|
+
Sequence[HexStr]]
|
|
169
|
+
:return: ``True`` if unsubscribing to all was successful, ``False`` otherwise
|
|
170
|
+
with a warning.
|
|
138
171
|
:rtype: bool
|
|
139
172
|
"""
|
|
140
|
-
if
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
173
|
+
if isinstance(subscriptions, EthSubscription) or isinstance(subscriptions, str):
|
|
174
|
+
if isinstance(subscriptions, str):
|
|
175
|
+
subscription_id = subscriptions
|
|
176
|
+
subscriptions = self.get_by_id(subscription_id)
|
|
177
|
+
if subscriptions is None:
|
|
178
|
+
raise Web3ValueError(
|
|
179
|
+
"Subscription not found or is not being managed by the "
|
|
180
|
+
f"subscription manager.\n id: {subscription_id}"
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
if subscriptions not in self.subscriptions:
|
|
184
|
+
raise Web3ValueError(
|
|
185
|
+
"Subscription not found or is not being managed by the "
|
|
186
|
+
"subscription manager.\n "
|
|
187
|
+
f"label: {subscriptions.label}\n id: {subscriptions._id}"
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
if await self._w3.eth._unsubscribe(subscriptions.id):
|
|
191
|
+
self._remove_subscription(subscriptions)
|
|
192
|
+
self.logger.info(
|
|
193
|
+
"Successfully unsubscribed from subscription:\n "
|
|
194
|
+
f"label: {subscriptions.label}\n id: {subscriptions.id}"
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
if len(self._subscription_container.handler_subscriptions) == 0:
|
|
198
|
+
queue = (
|
|
199
|
+
self._provider._request_processor._handler_subscription_queue
|
|
200
|
+
)
|
|
201
|
+
await queue.put(SubscriptionProcessingFinished())
|
|
202
|
+
return True
|
|
203
|
+
|
|
204
|
+
elif isinstance(subscriptions, Sequence):
|
|
205
|
+
if len(subscriptions) == 0:
|
|
206
|
+
raise Web3ValueError("No subscriptions provided.")
|
|
207
|
+
|
|
208
|
+
unsubscribed: List[bool] = []
|
|
209
|
+
for sub in subscriptions:
|
|
210
|
+
if isinstance(sub, str):
|
|
211
|
+
sub = HexStr(sub)
|
|
212
|
+
unsubscribed.append(await self.unsubscribe(sub))
|
|
213
|
+
return all(unsubscribed)
|
|
214
|
+
|
|
215
|
+
self.logger.warning(
|
|
216
|
+
f"Failed to unsubscribe from subscription\n subscription={subscriptions}"
|
|
217
|
+
)
|
|
155
218
|
return False
|
|
156
219
|
|
|
157
220
|
async def unsubscribe_all(self) -> bool:
|
|
@@ -186,15 +249,15 @@ class SubscriptionManager:
|
|
|
186
249
|
:type run_forever: bool
|
|
187
250
|
:return: None
|
|
188
251
|
"""
|
|
189
|
-
if not self._subscription_container.handler_subscriptions:
|
|
252
|
+
if not self._subscription_container.handler_subscriptions and not run_forever:
|
|
190
253
|
self.logger.warning(
|
|
191
254
|
"No handler subscriptions found. Subscription handler did not run."
|
|
192
255
|
)
|
|
193
256
|
return
|
|
194
257
|
|
|
195
258
|
queue = self._provider._request_processor._handler_subscription_queue
|
|
196
|
-
|
|
197
|
-
|
|
259
|
+
while run_forever or self._subscription_container.handler_subscriptions:
|
|
260
|
+
try:
|
|
198
261
|
response = cast(RPCResponse, await queue.get())
|
|
199
262
|
formatted_sub_response = cast(
|
|
200
263
|
FormattedEthSubscriptionResponse,
|
|
@@ -216,18 +279,20 @@ class SubscriptionManager:
|
|
|
216
279
|
**sub._handler_context,
|
|
217
280
|
)
|
|
218
281
|
)
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
282
|
+
except SubscriptionProcessingFinished:
|
|
283
|
+
if not run_forever:
|
|
284
|
+
self.logger.info(
|
|
285
|
+
"All handler subscriptions have been unsubscribed from. "
|
|
286
|
+
"Stopping subscription handling."
|
|
287
|
+
)
|
|
288
|
+
break
|
|
289
|
+
except TaskNotRunning:
|
|
290
|
+
await asyncio.sleep(0)
|
|
291
|
+
self._provider._handle_listener_task_exceptions()
|
|
292
|
+
self.logger.error(
|
|
293
|
+
"Message listener background task for the provider has stopped "
|
|
294
|
+
"unexpectedly. Stopping subscription handling."
|
|
295
|
+
)
|
|
231
296
|
|
|
232
297
|
# no active handler subscriptions, clear the handler subscription queue
|
|
233
298
|
self._provider._request_processor._reset_handler_subscription_queue()
|
web3/providers/rpc/async_rpc.py
CHANGED
|
@@ -168,15 +168,20 @@ class AsyncHTTPProvider(AsyncJSONBaseProvider):
|
|
|
168
168
|
|
|
169
169
|
async def make_batch_request(
|
|
170
170
|
self, batch_requests: List[Tuple[RPCEndpoint, Any]]
|
|
171
|
-
) -> List[RPCResponse]:
|
|
171
|
+
) -> Union[List[RPCResponse], RPCResponse]:
|
|
172
172
|
self.logger.debug(f"Making batch request HTTP - uri: `{self.endpoint_uri}`")
|
|
173
173
|
request_data = self.encode_batch_rpc_request(batch_requests)
|
|
174
174
|
raw_response = await self._request_session_manager.async_make_post_request(
|
|
175
175
|
self.endpoint_uri, request_data, **self.get_request_kwargs()
|
|
176
176
|
)
|
|
177
177
|
self.logger.debug("Received batch response HTTP.")
|
|
178
|
-
|
|
179
|
-
|
|
178
|
+
response = self.decode_rpc_response(raw_response)
|
|
179
|
+
if not isinstance(response, list):
|
|
180
|
+
# RPC errors return only one response with the error object
|
|
181
|
+
return response
|
|
182
|
+
return sort_batch_response_by_response_ids(
|
|
183
|
+
cast(List[RPCResponse], sort_batch_response_by_response_ids(response))
|
|
184
|
+
)
|
|
180
185
|
|
|
181
186
|
async def disconnect(self) -> None:
|
|
182
187
|
cache = self._request_session_manager.session_cache
|
web3/providers/rpc/rpc.py
CHANGED
|
@@ -176,12 +176,17 @@ class HTTPProvider(JSONBaseProvider):
|
|
|
176
176
|
|
|
177
177
|
def make_batch_request(
|
|
178
178
|
self, batch_requests: List[Tuple[RPCEndpoint, Any]]
|
|
179
|
-
) -> List[RPCResponse]:
|
|
179
|
+
) -> Union[List[RPCResponse], RPCResponse]:
|
|
180
180
|
self.logger.debug(f"Making batch request HTTP, uri: `{self.endpoint_uri}`")
|
|
181
181
|
request_data = self.encode_batch_rpc_request(batch_requests)
|
|
182
182
|
raw_response = self._request_session_manager.make_post_request(
|
|
183
183
|
self.endpoint_uri, request_data, **self.get_request_kwargs()
|
|
184
184
|
)
|
|
185
185
|
self.logger.debug("Received batch response HTTP.")
|
|
186
|
-
|
|
187
|
-
|
|
186
|
+
response = self.decode_rpc_response(raw_response)
|
|
187
|
+
if not isinstance(response, list):
|
|
188
|
+
# RPC errors return only one response with the error object
|
|
189
|
+
return response
|
|
190
|
+
return sort_batch_response_by_response_ids(
|
|
191
|
+
cast(List[RPCResponse], sort_batch_response_by_response_ids(response))
|
|
192
|
+
)
|
web3/types.py
CHANGED
|
@@ -36,13 +36,9 @@ from web3._utils.compat import (
|
|
|
36
36
|
)
|
|
37
37
|
|
|
38
38
|
if TYPE_CHECKING:
|
|
39
|
-
from web3.contract.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
)
|
|
43
|
-
from web3.contract.contract import ( # noqa: F401
|
|
44
|
-
ContractEvent,
|
|
45
|
-
ContractFunction,
|
|
39
|
+
from web3.contract.base_contract import (
|
|
40
|
+
BaseContractEvent,
|
|
41
|
+
BaseContractFunction,
|
|
46
42
|
)
|
|
47
43
|
from web3.main import ( # noqa: F401
|
|
48
44
|
AsyncWeb3,
|
|
@@ -301,10 +297,13 @@ class CreateAccessListResponse(TypedDict):
|
|
|
301
297
|
|
|
302
298
|
|
|
303
299
|
MakeRequestFn = Callable[[RPCEndpoint, Any], RPCResponse]
|
|
304
|
-
MakeBatchRequestFn = Callable[
|
|
300
|
+
MakeBatchRequestFn = Callable[
|
|
301
|
+
[List[Tuple[RPCEndpoint, Any]]], Union[List[RPCResponse], RPCResponse]
|
|
302
|
+
]
|
|
305
303
|
AsyncMakeRequestFn = Callable[[RPCEndpoint, Any], Coroutine[Any, Any, RPCResponse]]
|
|
306
304
|
AsyncMakeBatchRequestFn = Callable[
|
|
307
|
-
[List[Tuple[RPCEndpoint, Any]]],
|
|
305
|
+
[List[Tuple[RPCEndpoint, Any]]],
|
|
306
|
+
Coroutine[Any, Any, Union[List[RPCResponse], RPCResponse]],
|
|
308
307
|
]
|
|
309
308
|
|
|
310
309
|
|
|
@@ -581,8 +580,8 @@ class GethWallet(TypedDict):
|
|
|
581
580
|
|
|
582
581
|
# Contract types
|
|
583
582
|
|
|
584
|
-
TContractFn = TypeVar("TContractFn", "
|
|
585
|
-
TContractEvent = TypeVar("TContractEvent", "
|
|
583
|
+
TContractFn = TypeVar("TContractFn", bound="BaseContractFunction")
|
|
584
|
+
TContractEvent = TypeVar("TContractEvent", bound="BaseContractEvent")
|
|
586
585
|
|
|
587
586
|
|
|
588
587
|
# Tracing types
|
web3/utils/subscriptions.py
CHANGED
|
@@ -114,6 +114,10 @@ class EthSubscription(Generic[TSubscriptionResult]):
|
|
|
114
114
|
self._label = label
|
|
115
115
|
self.handler_call_count = 0
|
|
116
116
|
|
|
117
|
+
@property
|
|
118
|
+
def _default_label(self) -> str:
|
|
119
|
+
return f"{self.__class__.__name__}{self.subscription_params}"
|
|
120
|
+
|
|
117
121
|
@classmethod
|
|
118
122
|
def _create_type_aware_subscription(
|
|
119
123
|
cls,
|
|
@@ -170,7 +174,7 @@ class EthSubscription(Generic[TSubscriptionResult]):
|
|
|
170
174
|
@property
|
|
171
175
|
def label(self) -> str:
|
|
172
176
|
if not self._label:
|
|
173
|
-
self._label =
|
|
177
|
+
self._label = self._default_label
|
|
174
178
|
return self._label
|
|
175
179
|
|
|
176
180
|
@property
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
The MIT License (MIT)
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2016-
|
|
3
|
+
Copyright (c) 2016-2025 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
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
ens/__init__.py,sha256=BtOyGF_JrIpWFTr_T1GCJuUtmZI-Qf-v560uzTWp18E,471
|
|
2
2
|
ens/_normalization.py,sha256=t_abmu3z2QcTcX6gVaSfdUzz0_E5aGCPvuj0Hftd-Kg,16900
|
|
3
3
|
ens/abis.py,sha256=0Ec_lqe7HBsVpQrID3ccFMhx8Vb7S0TGFbeuRdXhuCE,34745
|
|
4
|
-
ens/async_ens.py,sha256=
|
|
4
|
+
ens/async_ens.py,sha256=_nXXutnTdJPomhP5VbROUhFnFu5rLkq4X72xWII-j84,22673
|
|
5
5
|
ens/auto.py,sha256=w_E6Ua5ZmJVxfdii2aG5I_kQG5B9U5Y2qIFKVNhXo98,41
|
|
6
6
|
ens/base_ens.py,sha256=zn3lIV5-vkBEvdOAIVkE78wwTdJx7VG_fXqQmLJ_j7w,3507
|
|
7
7
|
ens/constants.py,sha256=XCO4Pntwdnw10K_AZ86V0cqcvdUoOkEZvRqoDdFPE_w,913
|
|
8
8
|
ens/contract_data.py,sha256=CZa7Uxzq6rT-KonwHHM_wo-5ry0j1DMbikgEaP27Uy8,148602
|
|
9
|
-
ens/ens.py,sha256=
|
|
9
|
+
ens/ens.py,sha256=Es4dNXVhpHPTF1ZN17hmf6VIHb91fKVMCoVnFVo36ZA,21722
|
|
10
10
|
ens/exceptions.py,sha256=FVnGiWkt1IcAATfSxoWz9hwrlVG_-WCpraTo8nSHCxA,2441
|
|
11
11
|
ens/utils.py,sha256=Ro2-kcowwIgNExxNDQ1CpSFiGL9WSP_NCxp_qLzGWHw,8985
|
|
12
12
|
ens/specs/nf.json,sha256=tPXKzdhgu9gqNi0UhKC1kzPqSBgy4yHm5TL19RQHBqU,49038
|
|
13
13
|
ens/specs/normalization_spec.json,sha256=8mmjBj4OoYCn7pD4P7hqKP_qy6rpYzpyRinSH3CCP9M,3171499
|
|
14
14
|
web3/__init__.py,sha256=P11QAEV_GYoZq9ij8gDzFx5tKzJY2aMXG-keg2Lg1xs,1277
|
|
15
15
|
web3/constants.py,sha256=eQLRQVMFPbgpOjjkPTMHkY-syncJuO-sPX5UrCSRjzQ,564
|
|
16
|
-
web3/datastructures.py,sha256=
|
|
16
|
+
web3/datastructures.py,sha256=J5rdpnuS10pKUfPYqcoorkDw-aHHZNrdiW-Bh7dVDwI,11514
|
|
17
17
|
web3/exceptions.py,sha256=GMIrWTkYDR0jtvtdOlgl_s6fctTibW4Ytw4So5BY4uE,9584
|
|
18
18
|
web3/geth.py,sha256=xVBZWSksBo2ipesAN9V5hzDc_te7kU8ueicFdvpkSO4,7370
|
|
19
19
|
web3/logs.py,sha256=ROs-mDMH_ZOecE7hfbWA5yp27G38FbLjX4lO_WtlZxQ,198
|
|
20
20
|
web3/main.py,sha256=eVdSh7m_iBMf3au0Aj49TZ7NSaRbN1Ccsng9Fuu8dME,16162
|
|
21
|
-
web3/manager.py,sha256=
|
|
21
|
+
web3/manager.py,sha256=DudssLJqK8SC7_W1JzBKbEj8mqLEDJCMox_THB9C7II,26664
|
|
22
22
|
web3/method.py,sha256=Q7EWTwI4TxqAbJ3mZrdvLc9wfV-8o8sOzS_pbsRgAP0,8601
|
|
23
23
|
web3/module.py,sha256=CDlnDrrWzkCJtd3gzHZ972l-6En6IyFEWwB7TXkHHLM,5617
|
|
24
24
|
web3/net.py,sha256=Y3vPzHWVFkfHEZoJxjDOt4tp5ERmZrMuyi4ZFOLmIeA,1562
|
|
25
25
|
web3/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
26
|
web3/testing.py,sha256=Ury_-7XSstJ8bkCfdGEi4Cr76QzSfW7v_zfPlDlLJj0,923
|
|
27
27
|
web3/tracing.py,sha256=ZcOam7t-uEZXyui6Cndv6RYeCZP5jh1TBn2hG8sv17Q,3098
|
|
28
|
-
web3/types.py,sha256=
|
|
28
|
+
web3/types.py,sha256=PFbVpEUAQhs6tgbolFGfuzXz7nfh7np6fekOgxU303c,13872
|
|
29
29
|
web3/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
30
|
web3/_utils/abi.py,sha256=Y0vIFLEKwiMTdedxRPxVMQ1l-GbRRJia1AP1DqLBvjU,27430
|
|
31
31
|
web3/_utils/abi_element_identifiers.py,sha256=m305lsvUZk-jkPixT0IJd9P5sXqMvmwlwlLeBgEAnBQ,55
|
|
@@ -40,12 +40,12 @@ web3/_utils/empty.py,sha256=ccgxFk5qm2x2ZeD8b17wX5cCAJPkPFuHrNQNMDslytY,132
|
|
|
40
40
|
web3/_utils/encoding.py,sha256=yS3awPQshfqMqEgiZWWU2AG8Kq_mrCH9VwHvlMhrGw4,9282
|
|
41
41
|
web3/_utils/ens.py,sha256=2BvzfegBkR7vH3Fq7lo_LsgfT912Zj-mR8eUt6o_lBA,2434
|
|
42
42
|
web3/_utils/error_formatters_utils.py,sha256=uRXm6P6z4cUTTlQRLFLtuC3FYOjR0lrIlQToR5f_gzI,6868
|
|
43
|
-
web3/_utils/events.py,sha256=
|
|
43
|
+
web3/_utils/events.py,sha256=eZEUDImd4-s0wQxdzHn5llYoTwMaKQpakoccoU85_R0,17036
|
|
44
44
|
web3/_utils/fee_utils.py,sha256=MFt27R9E3qFP-Hf87-Lzv0JAiuYRE_qqafyTmzctAYA,2145
|
|
45
45
|
web3/_utils/filters.py,sha256=1WX2Vgmat8QKj0WNm_GoRcVp4iJ0BhaIpM_RbcZlBzs,11860
|
|
46
46
|
web3/_utils/formatters.py,sha256=RfRZU0aXC99s6OoLMY7D-fcYJyVAYBEwdbw-JIDjbZE,3067
|
|
47
47
|
web3/_utils/http.py,sha256=2R3UOeZmwiQGc3ladf78R9AnufbGaTXAntqf-ZQlZPI,230
|
|
48
|
-
web3/_utils/http_session_manager.py,sha256=
|
|
48
|
+
web3/_utils/http_session_manager.py,sha256=8nfXMPlOpZ2rMuo-aR46BxzMGrERAmHLshNC9qxEvuA,12591
|
|
49
49
|
web3/_utils/hypothesis.py,sha256=4Cm4iOWv-uP9irg_Pv63kYNDYUAGhnUH6fOPWRw3A0g,209
|
|
50
50
|
web3/_utils/math.py,sha256=4oU5YdbQBXElxK00CxmUZ94ApXFu9QT_TrO0Kho1HTs,1083
|
|
51
51
|
web3/_utils/method_formatters.py,sha256=a9VxHy9KnraxT7EddFd_CIS82SIOXKoZ_SmdxGE4K-Y,36902
|
|
@@ -89,25 +89,25 @@ web3/_utils/contract_sources/contract_data/storage_contract.py,sha256=fZ-4ho-fbV
|
|
|
89
89
|
web3/_utils/contract_sources/contract_data/string_contract.py,sha256=fJHQg_CxzOt7Ojp5Af067M46tyY6CARkzycS0fL6reQ,11228
|
|
90
90
|
web3/_utils/contract_sources/contract_data/tuple_contracts.py,sha256=PPzVF67kRpeNLXGjUGjpIowGyD3F6fMzqYLuOwXRZbE,23176
|
|
91
91
|
web3/_utils/module_testing/__init__.py,sha256=Xr_S46cjr0mypD_Y4ZbeF1EJ-XWfNxWUks5ykhzN10c,485
|
|
92
|
-
web3/_utils/module_testing/eth_module.py,sha256=
|
|
92
|
+
web3/_utils/module_testing/eth_module.py,sha256=63jLDwrFMTEl6bPiWVkeW7vQI86JxNMtD1OF1r_hs90,187535
|
|
93
93
|
web3/_utils/module_testing/go_ethereum_admin_module.py,sha256=_c-6SyzZkfAJ-7ySXUpw9FEr4cg-ShRdAGSAHWanCtY,3406
|
|
94
94
|
web3/_utils/module_testing/go_ethereum_debug_module.py,sha256=BP1UjK-5ewkYMilvW9jtZX5Mc9BGh3QlJWPXqDNWizU,4144
|
|
95
95
|
web3/_utils/module_testing/go_ethereum_txpool_module.py,sha256=5f8XL8-2x3keyGRaITxMQYl9oQzjgqGn8zobB-j9BPs,1176
|
|
96
|
-
web3/_utils/module_testing/module_testing_utils.py,sha256=
|
|
96
|
+
web3/_utils/module_testing/module_testing_utils.py,sha256=9NfSislx36DWe9IcK-IYZHzMDNp9JKcOJjJ7jIW_wrU,5969
|
|
97
97
|
web3/_utils/module_testing/net_module.py,sha256=ifUTC-5fTcQbwpm0X09OdD5RSPnn00T8klFeYe8tTm4,1272
|
|
98
|
-
web3/_utils/module_testing/persistent_connection_provider.py,sha256=
|
|
98
|
+
web3/_utils/module_testing/persistent_connection_provider.py,sha256=rmPrXpmaOz7B2cIMyG0pEO5l8hevxLpfu474zykRCug,30603
|
|
99
99
|
web3/_utils/module_testing/utils.py,sha256=bvF57wKVbfnXGRM4kqEZpysPrr9LvAQy-E-huk1HpxM,13561
|
|
100
100
|
web3/_utils/module_testing/web3_module.py,sha256=7c6penGbHn381fPTYY6DsXKv56xGQpYkHljOsr2gbaw,25413
|
|
101
101
|
web3/auto/__init__.py,sha256=ZbzAiCZMdt_tCTTPvH6t8NCVNroKKkt7TSVBBNR74Is,44
|
|
102
102
|
web3/auto/gethdev.py,sha256=MuWD2gxv0xDv_SzPsp9mSkS1oG4P54xFK83qw9NvswA,438
|
|
103
103
|
web3/beacon/__init__.py,sha256=Ac6YiNgU8D8Ynnh5RwSCx2NwPyjnpFjpXeHuSssFbaU,113
|
|
104
|
-
web3/beacon/api_endpoints.py,sha256=
|
|
105
|
-
web3/beacon/async_beacon.py,sha256=
|
|
106
|
-
web3/beacon/beacon.py,sha256=
|
|
104
|
+
web3/beacon/api_endpoints.py,sha256=rkoy4d6igjgHbI0HSE9FEdZSYw94KhPz1gGaPdEjMCg,2632
|
|
105
|
+
web3/beacon/async_beacon.py,sha256=CWchRZANN57174sWz90177eMz0kfQPROQlBLGWNxqs8,9763
|
|
106
|
+
web3/beacon/beacon.py,sha256=awL60kk7syulb2tuwkOFnkS1eki_tZxAk4p34LGPGho,8707
|
|
107
107
|
web3/contract/__init__.py,sha256=qeZRtTw9xriwoD82w6vePDuPBZ35-CMVdkzViBSH3Qs,293
|
|
108
|
-
web3/contract/async_contract.py,sha256=
|
|
109
|
-
web3/contract/base_contract.py,sha256=
|
|
110
|
-
web3/contract/contract.py,sha256
|
|
108
|
+
web3/contract/async_contract.py,sha256=yjfsQyEzx7M_93TsURg1IXHg8qnmfyAn-MezBWm6owA,20534
|
|
109
|
+
web3/contract/base_contract.py,sha256=vQVcne9luQ35eBheRh1Jc_jXOp2uDxIotKK9O1EQjQY,54371
|
|
110
|
+
web3/contract/contract.py,sha256=-TJJMjwybZmQo8-DtGhrjIr7TwVXFoiIsdMan1NFgQY,20562
|
|
111
111
|
web3/contract/utils.py,sha256=mrW3WIxki6EJ1kNqyGp20SMJIu4GqAzOFgMuzpsHB2M,19363
|
|
112
112
|
web3/eth/__init__.py,sha256=qDLxOcHHIzzPD7xzwy6Wcs0lLPQieB7WN0Ax25ctit8,197
|
|
113
113
|
web3/eth/async_eth.py,sha256=Wqm03xSbSmPDxar3echSZGpiexTNk6yjeAaHKn971A8,24138
|
|
@@ -118,7 +118,7 @@ web3/gas_strategies/rpc.py,sha256=3Va-32jdmHkX7tzQCmh17ms2D6te5zZcqHP1326BdpY,35
|
|
|
118
118
|
web3/gas_strategies/time_based.py,sha256=oGk6nBUD4iMC8wl1vzf-nhURaqyPWYdPvNU0C3RIs8g,9071
|
|
119
119
|
web3/middleware/__init__.py,sha256=fSmPCYJOO8Qp5p-Vm_Z4XPJATu2qN7KJRypYNSO6_uM,2830
|
|
120
120
|
web3/middleware/attrdict.py,sha256=tIoMEZ3BkmEafnwitGY70o0GS9ShfwReDMxkHuvcOwI,2092
|
|
121
|
-
web3/middleware/base.py,sha256=
|
|
121
|
+
web3/middleware/base.py,sha256=jUY19tw6iiJenDprYqkTeIESd8qPcTvNALP3Vhp86qk,5728
|
|
122
122
|
web3/middleware/buffered_gas_estimate.py,sha256=EmxUd-uO959UVroPsPKkl7oDa8Tw6N8BQLB6Urng5Eo,1647
|
|
123
123
|
web3/middleware/filter.py,sha256=I09sSE_q_dhWX5_24KVWhVXZNevwViI7wucJBP4TZl4,22221
|
|
124
124
|
web3/middleware/formatting.py,sha256=hqe5XQE1n5Fmj6riJp7i3oIoZkd-4ChQc7UK8f3HB6I,7567
|
|
@@ -130,9 +130,9 @@ web3/middleware/signing.py,sha256=1DOYxpmCra-Qq5r42237q3b54uDO-QHjMVMulxVpLVQ,58
|
|
|
130
130
|
web3/middleware/stalecheck.py,sha256=oWRA69BGIbNGjHSnUVOBnoxOYJZYjzRzlqqL5RRlnzk,2680
|
|
131
131
|
web3/middleware/validation.py,sha256=QxActrJk_zsXXiwpadP2MUjZBS5E50OJOtUwVrm9XVo,4280
|
|
132
132
|
web3/providers/__init__.py,sha256=YkcSzE9AubvSp-UfvJjyCrdepvziysbqeq2LT0ImDoc,936
|
|
133
|
-
web3/providers/async_base.py,sha256=
|
|
133
|
+
web3/providers/async_base.py,sha256=4u1okZDig5jEcmYtRwod13RpEafUAx-ZNdRy4JI-rWE,7687
|
|
134
134
|
web3/providers/auto.py,sha256=Zx3CHKoRkmiw3Jte2BLNPiJAFd8rDXNGfA3XtxZvHgc,3465
|
|
135
|
-
web3/providers/base.py,sha256=
|
|
135
|
+
web3/providers/base.py,sha256=2morKtz6l_XuMQ8gt9eNtC0r64JnsIzFrUHlJQQ7F7Y,6440
|
|
136
136
|
web3/providers/ipc.py,sha256=19jm5e-mytwx_s-s8hGMCK9sfOCgwwr_1hHcHQyB_7o,6514
|
|
137
137
|
web3/providers/legacy_websocket.py,sha256=goS-ww86ijftbYs7QiqvrZZFycHBd5BD6U18yVQ7lF8,4767
|
|
138
138
|
web3/providers/eth_tester/__init__.py,sha256=UggyBQdeAyjy1awATW1933jkJcpqqaUYUQEFAQnA2o0,163
|
|
@@ -143,14 +143,14 @@ web3/providers/persistent/__init__.py,sha256=X7tFKJL5BXSwciq5_bRwGRB6bfdWBkIPPWM
|
|
|
143
143
|
web3/providers/persistent/async_ipc.py,sha256=dlySmRkVsKWOjb2w08n38PTcoI5MtviwqsRxq3YUg6M,5006
|
|
144
144
|
web3/providers/persistent/persistent.py,sha256=fMVeS-BQ42C8XDH7G_N4WWdlUInmNhnU2S8UBfqcKeI,15072
|
|
145
145
|
web3/providers/persistent/persistent_connection.py,sha256=NxxS-KeJhV07agg8CtJvmE-Ff-wLggQYpz4gdgVRDNU,3011
|
|
146
|
-
web3/providers/persistent/request_processor.py,sha256=
|
|
146
|
+
web3/providers/persistent/request_processor.py,sha256=MEfPM5nezjvXS8KMpH65JEIP7qNZ4uf56CcbN-4Hhr0,14712
|
|
147
147
|
web3/providers/persistent/subscription_container.py,sha256=yd5pjjz_YnRLuUoxZUxt29Md1VUTemdUIBq8PCJre6Y,1734
|
|
148
|
-
web3/providers/persistent/subscription_manager.py,sha256=
|
|
148
|
+
web3/providers/persistent/subscription_manager.py,sha256=rH3oIWdj_pbIfjdMwwigy-4IFMbX2u_SEjPIPWJY84I,11265
|
|
149
149
|
web3/providers/persistent/utils.py,sha256=gfY7w1HB8xuE7OujSrbwWYjQuQ8nzRBoxoL8ESinqWM,1140
|
|
150
150
|
web3/providers/persistent/websocket.py,sha256=d-IZNPfT6RGChTLDjHR4dH2y02U9KJoWpZlfxpiG1so,4353
|
|
151
151
|
web3/providers/rpc/__init__.py,sha256=mObsuwjr7xyHnnRlwzsmbp2JgZdn2NXSSctvpye4AuQ,149
|
|
152
|
-
web3/providers/rpc/async_rpc.py,sha256=
|
|
153
|
-
web3/providers/rpc/rpc.py,sha256=
|
|
152
|
+
web3/providers/rpc/async_rpc.py,sha256=r8OYrCh0MoUUBwRLT8rLo98cjziLs1E782vCEzFzGVc,6314
|
|
153
|
+
web3/providers/rpc/rpc.py,sha256=qb17d1rocm1xOV7Pcqye9lQqFfbWmRnB6W-m1E1mB5A,6075
|
|
154
154
|
web3/providers/rpc/utils.py,sha256=_mtoZMMIoZpPA8J8U5DfRxaNQmi8bw0ZVUiqn1Nz4co,2154
|
|
155
155
|
web3/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
156
156
|
web3/scripts/install_pre_releases.py,sha256=uVxsZk239640yxiqlPhfXxZKSsh3858pURKppi9kM5U,821
|
|
@@ -163,9 +163,9 @@ web3/utils/address.py,sha256=nzPLiWWCG9BqstDeDOcDwEpteJ8im6ywjLHKpd5akhw,1186
|
|
|
163
163
|
web3/utils/async_exception_handling.py,sha256=OoKbLNwWcY9dxLCbOfxcQPSB1OxWraNqcw8V0ZX-JaQ,3173
|
|
164
164
|
web3/utils/caching.py,sha256=Rkt5IN8A7YBZYXlCRaWa64FiDhTXsxzTGGQdGBB4Nzw,2514
|
|
165
165
|
web3/utils/exception_handling.py,sha256=n-MtO5LNzJDVzHTzO6olzfb2_qEVtVRvink0ixswg-Y,2917
|
|
166
|
-
web3/utils/subscriptions.py,sha256=
|
|
167
|
-
web3-7.
|
|
168
|
-
web3-7.
|
|
169
|
-
web3-7.
|
|
170
|
-
web3-7.
|
|
171
|
-
web3-7.
|
|
166
|
+
web3/utils/subscriptions.py,sha256=iqlIK5xXM3XY6wEJQiovxrtKRvqpXmjhkPmrm15FnB8,8578
|
|
167
|
+
web3-7.8.0.dist-info/LICENSE,sha256=ENGC4gSn0kYaC_mlaXOEwCKmA6W7Z9MeSemc5O2k-h0,1095
|
|
168
|
+
web3-7.8.0.dist-info/METADATA,sha256=xcLoefR42JzPL3xkAnJiSFGGbAAK3jY6GaVBkVLNVoA,5541
|
|
169
|
+
web3-7.8.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
170
|
+
web3-7.8.0.dist-info/top_level.txt,sha256=iwupuJh7wgypXrpk_awszyri3TahRr5vxSphNyvt1bU,9
|
|
171
|
+
web3-7.8.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|