web3 7.0.0b2__py3-none-any.whl → 7.7.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 (144) hide show
  1. ens/__init__.py +13 -2
  2. ens/_normalization.py +4 -4
  3. ens/async_ens.py +27 -15
  4. ens/base_ens.py +3 -1
  5. ens/contract_data.py +2 -2
  6. ens/ens.py +10 -7
  7. ens/exceptions.py +16 -29
  8. ens/specs/nf.json +1 -1
  9. ens/specs/normalization_spec.json +1 -1
  10. ens/utils.py +24 -32
  11. web3/__init__.py +23 -12
  12. web3/_utils/abi.py +157 -263
  13. web3/_utils/async_transactions.py +34 -20
  14. web3/_utils/batching.py +217 -0
  15. web3/_utils/blocks.py +6 -2
  16. web3/_utils/caching/__init__.py +12 -0
  17. web3/_utils/caching/caching_utils.py +433 -0
  18. web3/_utils/caching/request_caching_validation.py +287 -0
  19. web3/_utils/compat/__init__.py +2 -3
  20. web3/_utils/contract_sources/compile_contracts.py +1 -1
  21. web3/_utils/contract_sources/contract_data/ambiguous_function_contract.py +42 -0
  22. web3/_utils/contract_sources/contract_data/arrays_contract.py +3 -3
  23. web3/_utils/contract_sources/contract_data/bytes_contracts.py +5 -5
  24. web3/_utils/contract_sources/contract_data/constructor_contracts.py +7 -7
  25. web3/_utils/contract_sources/contract_data/contract_caller_tester.py +3 -3
  26. web3/_utils/contract_sources/contract_data/emitter_contract.py +3 -3
  27. web3/_utils/contract_sources/contract_data/event_contracts.py +50 -5
  28. web3/_utils/contract_sources/contract_data/extended_resolver.py +3 -3
  29. web3/_utils/contract_sources/contract_data/fallback_function_contract.py +3 -3
  30. web3/_utils/contract_sources/contract_data/function_name_tester_contract.py +3 -3
  31. web3/_utils/contract_sources/contract_data/math_contract.py +3 -3
  32. web3/_utils/contract_sources/contract_data/offchain_lookup.py +3 -3
  33. web3/_utils/contract_sources/contract_data/offchain_resolver.py +3 -3
  34. web3/_utils/contract_sources/contract_data/panic_errors_contract.py +3 -3
  35. web3/_utils/contract_sources/contract_data/payable_tester.py +3 -3
  36. web3/_utils/contract_sources/contract_data/receive_function_contracts.py +5 -5
  37. web3/_utils/contract_sources/contract_data/reflector_contracts.py +3 -3
  38. web3/_utils/contract_sources/contract_data/revert_contract.py +3 -3
  39. web3/_utils/contract_sources/contract_data/simple_resolver.py +3 -3
  40. web3/_utils/contract_sources/contract_data/storage_contract.py +3 -3
  41. web3/_utils/contract_sources/contract_data/string_contract.py +3 -3
  42. web3/_utils/contract_sources/contract_data/tuple_contracts.py +5 -5
  43. web3/_utils/contracts.py +172 -220
  44. web3/_utils/datatypes.py +5 -1
  45. web3/_utils/decorators.py +6 -1
  46. web3/_utils/empty.py +1 -1
  47. web3/_utils/encoding.py +16 -12
  48. web3/_utils/error_formatters_utils.py +5 -3
  49. web3/_utils/events.py +78 -72
  50. web3/_utils/fee_utils.py +1 -3
  51. web3/_utils/filters.py +24 -22
  52. web3/_utils/formatters.py +2 -2
  53. web3/_utils/http.py +8 -2
  54. web3/_utils/http_session_manager.py +314 -0
  55. web3/_utils/math.py +14 -15
  56. web3/_utils/method_formatters.py +161 -34
  57. web3/_utils/module.py +2 -1
  58. web3/_utils/module_testing/__init__.py +3 -2
  59. web3/_utils/module_testing/eth_module.py +736 -583
  60. web3/_utils/module_testing/go_ethereum_debug_module.py +128 -0
  61. web3/_utils/module_testing/module_testing_utils.py +81 -24
  62. web3/_utils/module_testing/persistent_connection_provider.py +702 -220
  63. web3/_utils/module_testing/utils.py +114 -33
  64. web3/_utils/module_testing/web3_module.py +438 -17
  65. web3/_utils/normalizers.py +13 -11
  66. web3/_utils/rpc_abi.py +10 -22
  67. web3/_utils/threads.py +8 -7
  68. web3/_utils/transactions.py +32 -25
  69. web3/_utils/type_conversion.py +5 -1
  70. web3/_utils/validation.py +20 -17
  71. web3/beacon/__init__.py +5 -0
  72. web3/beacon/api_endpoints.py +3 -0
  73. web3/beacon/async_beacon.py +29 -6
  74. web3/beacon/beacon.py +24 -6
  75. web3/contract/__init__.py +7 -0
  76. web3/contract/async_contract.py +285 -82
  77. web3/contract/base_contract.py +556 -258
  78. web3/contract/contract.py +295 -84
  79. web3/contract/utils.py +251 -55
  80. web3/datastructures.py +49 -34
  81. web3/eth/__init__.py +7 -0
  82. web3/eth/async_eth.py +89 -69
  83. web3/eth/base_eth.py +7 -3
  84. web3/eth/eth.py +43 -66
  85. web3/exceptions.py +158 -83
  86. web3/gas_strategies/time_based.py +8 -6
  87. web3/geth.py +53 -184
  88. web3/main.py +77 -17
  89. web3/manager.py +362 -95
  90. web3/method.py +43 -15
  91. web3/middleware/__init__.py +17 -0
  92. web3/middleware/attrdict.py +12 -22
  93. web3/middleware/base.py +55 -2
  94. web3/middleware/filter.py +45 -23
  95. web3/middleware/formatting.py +6 -3
  96. web3/middleware/names.py +4 -1
  97. web3/middleware/signing.py +15 -6
  98. web3/middleware/stalecheck.py +2 -1
  99. web3/module.py +61 -25
  100. web3/providers/__init__.py +21 -0
  101. web3/providers/async_base.py +87 -32
  102. web3/providers/base.py +77 -32
  103. web3/providers/eth_tester/__init__.py +5 -0
  104. web3/providers/eth_tester/defaults.py +2 -55
  105. web3/providers/eth_tester/main.py +41 -15
  106. web3/providers/eth_tester/middleware.py +16 -17
  107. web3/providers/ipc.py +41 -17
  108. web3/providers/legacy_websocket.py +26 -1
  109. web3/providers/persistent/__init__.py +7 -0
  110. web3/providers/persistent/async_ipc.py +61 -121
  111. web3/providers/persistent/persistent.py +323 -16
  112. web3/providers/persistent/persistent_connection.py +54 -5
  113. web3/providers/persistent/request_processor.py +136 -56
  114. web3/providers/persistent/subscription_container.py +56 -0
  115. web3/providers/persistent/subscription_manager.py +233 -0
  116. web3/providers/persistent/websocket.py +29 -92
  117. web3/providers/rpc/__init__.py +5 -0
  118. web3/providers/rpc/async_rpc.py +73 -18
  119. web3/providers/rpc/rpc.py +73 -30
  120. web3/providers/rpc/utils.py +1 -13
  121. web3/scripts/install_pre_releases.py +33 -0
  122. web3/scripts/parse_pygeth_version.py +16 -0
  123. web3/testing.py +4 -4
  124. web3/tracing.py +9 -5
  125. web3/types.py +141 -74
  126. web3/utils/__init__.py +64 -5
  127. web3/utils/abi.py +790 -10
  128. web3/utils/address.py +8 -0
  129. web3/utils/async_exception_handling.py +20 -11
  130. web3/utils/caching.py +34 -4
  131. web3/utils/exception_handling.py +9 -12
  132. web3/utils/subscriptions.py +285 -0
  133. {web3-7.0.0b2.dist-info → web3-7.7.0.dist-info}/LICENSE +1 -1
  134. web3-7.7.0.dist-info/METADATA +130 -0
  135. web3-7.7.0.dist-info/RECORD +171 -0
  136. {web3-7.0.0b2.dist-info → web3-7.7.0.dist-info}/WHEEL +1 -1
  137. web3/_utils/caching.py +0 -155
  138. web3/_utils/contract_sources/contract_data/address_reflector.py +0 -29
  139. web3/_utils/module_testing/go_ethereum_personal_module.py +0 -300
  140. web3/_utils/request.py +0 -265
  141. web3-7.0.0b2.dist-info/METADATA +0 -106
  142. web3-7.0.0b2.dist-info/RECORD +0 -163
  143. /web3/_utils/{function_identifiers.py → abi_element_identifiers.py} +0 -0
  144. {web3-7.0.0b2.dist-info → web3-7.7.0.dist-info}/top_level.txt +0 -0
web3/_utils/request.py DELETED
@@ -1,265 +0,0 @@
1
- import asyncio
2
- from concurrent.futures import (
3
- ThreadPoolExecutor,
4
- )
5
- import logging
6
- import os
7
- import threading
8
- from typing import (
9
- Any,
10
- Dict,
11
- List,
12
- Optional,
13
- Union,
14
- )
15
-
16
- from aiohttp import (
17
- ClientResponse,
18
- ClientSession,
19
- ClientTimeout,
20
- )
21
- from eth_typing import (
22
- URI,
23
- )
24
- import requests
25
-
26
- from web3._utils.async_caching import (
27
- async_lock,
28
- )
29
- from web3._utils.caching import (
30
- generate_cache_key,
31
- )
32
- from web3.utils.caching import (
33
- SimpleCache,
34
- )
35
-
36
- logger = logging.getLogger(__name__)
37
-
38
- DEFAULT_TIMEOUT = 30
39
-
40
-
41
- def get_default_http_endpoint() -> URI:
42
- return URI(os.environ.get("WEB3_HTTP_PROVIDER_URI", "http://localhost:8545"))
43
-
44
-
45
- _session_cache = SimpleCache()
46
- _session_cache_lock = threading.Lock()
47
-
48
-
49
- def cache_and_return_session(
50
- endpoint_uri: URI, session: requests.Session = None
51
- ) -> requests.Session:
52
- # cache key should have a unique thread identifier
53
- cache_key = generate_cache_key(f"{threading.get_ident()}:{endpoint_uri}")
54
-
55
- cached_session = _session_cache.get_cache_entry(cache_key)
56
- if cached_session is not None:
57
- # If read from cache yields a session, no need to lock; return the session.
58
- # Sync is a bit simpler in this way since a `requests.Session` doesn't really
59
- # "close" in the same way that an async `ClientSession` does. When "closed", it
60
- # still uses http / https adapters successfully if a request is made.
61
- return cached_session
62
-
63
- if session is None:
64
- session = requests.Session()
65
-
66
- with _session_cache_lock:
67
- cached_session, evicted_items = _session_cache.cache(cache_key, session)
68
- logger.debug(f"Session cached: {endpoint_uri}, {cached_session}")
69
-
70
- if evicted_items is not None:
71
- evicted_sessions = evicted_items.values()
72
- for evicted_session in evicted_sessions:
73
- logger.debug(
74
- f"Session cache full. Session evicted from cache: {evicted_session}",
75
- )
76
- threading.Timer(
77
- DEFAULT_TIMEOUT + 0.1,
78
- _close_evicted_sessions,
79
- args=[evicted_sessions],
80
- ).start()
81
-
82
- return cached_session
83
-
84
-
85
- def get_response_from_get_request(
86
- endpoint_uri: URI, *args: Any, **kwargs: Any
87
- ) -> requests.Response:
88
- kwargs.setdefault("timeout", DEFAULT_TIMEOUT)
89
- session = cache_and_return_session(endpoint_uri)
90
- response = session.get(endpoint_uri, *args, **kwargs)
91
- return response
92
-
93
-
94
- def json_make_get_request(
95
- endpoint_uri: URI, *args: Any, **kwargs: Any
96
- ) -> Dict[str, Any]:
97
- response = get_response_from_get_request(endpoint_uri, *args, **kwargs)
98
- response.raise_for_status()
99
- return response.json()
100
-
101
-
102
- def get_response_from_post_request(
103
- endpoint_uri: URI, *args: Any, **kwargs: Any
104
- ) -> requests.Response:
105
- kwargs.setdefault("timeout", DEFAULT_TIMEOUT)
106
- session = cache_and_return_session(endpoint_uri)
107
- response = session.post(endpoint_uri, *args, **kwargs)
108
- return response
109
-
110
-
111
- def make_post_request(
112
- endpoint_uri: URI, data: Union[bytes, Dict[str, Any]], *args: Any, **kwargs: Any
113
- ) -> bytes:
114
- response = get_response_from_post_request(endpoint_uri, data=data, *args, **kwargs)
115
- response.raise_for_status()
116
- return response.content
117
-
118
-
119
- def _close_evicted_sessions(evicted_sessions: List[requests.Session]) -> None:
120
- for evicted_session in evicted_sessions:
121
- evicted_session.close()
122
- logger.debug(f"Closed evicted session: {evicted_session}")
123
-
124
-
125
- # --- async --- #
126
-
127
-
128
- _async_session_cache = SimpleCache()
129
- _async_session_cache_lock = threading.Lock()
130
- _async_session_pool = ThreadPoolExecutor(max_workers=1)
131
-
132
-
133
- async def async_cache_and_return_session(
134
- endpoint_uri: URI,
135
- session: Optional[ClientSession] = None,
136
- ) -> ClientSession:
137
- # cache key should have a unique thread identifier
138
- cache_key = generate_cache_key(f"{threading.get_ident()}:{endpoint_uri}")
139
-
140
- evicted_items = None
141
- async with async_lock(_async_session_pool, _async_session_cache_lock):
142
- if cache_key not in _async_session_cache:
143
- if session is None:
144
- session = ClientSession(raise_for_status=True)
145
-
146
- cached_session, evicted_items = _async_session_cache.cache(
147
- cache_key, session
148
- )
149
- logger.debug(f"Async session cached: {endpoint_uri}, {cached_session}")
150
-
151
- else:
152
- # get the cached session
153
- cached_session = _async_session_cache.get_cache_entry(cache_key)
154
- session_is_closed = cached_session.closed
155
- session_loop_is_closed = cached_session._loop.is_closed()
156
-
157
- warning = (
158
- "Async session was closed"
159
- if session_is_closed
160
- else (
161
- "Loop was closed for async session"
162
- if session_loop_is_closed
163
- else None
164
- )
165
- )
166
- if warning:
167
- logger.debug(
168
- f"{warning}: {endpoint_uri}, {cached_session}. "
169
- f"Creating and caching a new async session for uri."
170
- )
171
-
172
- _async_session_cache._data.pop(cache_key)
173
- if not session_is_closed:
174
- # if loop was closed but not the session, close the session
175
- await cached_session.close()
176
- logger.debug(
177
- f"Async session closed and evicted from cache: {cached_session}"
178
- )
179
-
180
- # replace stale session with a new session at the cache key
181
- _session = ClientSession(raise_for_status=True)
182
- cached_session, evicted_items = _async_session_cache.cache(
183
- cache_key, _session
184
- )
185
- logger.debug(f"Async session cached: {endpoint_uri}, {cached_session}")
186
-
187
- if evicted_items is not None:
188
- # At this point the evicted sessions are already popped out of the cache and
189
- # just stored in the `evicted_sessions` dict. So we can kick off a future task
190
- # to close them and it should be safe to pop out of the lock here.
191
- evicted_sessions = evicted_items.values()
192
- for evicted_session in evicted_sessions:
193
- logger.debug(
194
- "Async session cache full. Session evicted from cache: "
195
- f"{evicted_session}",
196
- )
197
- # Kick off a future task, in a separate thread, to close the evicted
198
- # sessions. In the case that the cache filled very quickly and some
199
- # sessions have been evicted before their original request has been made,
200
- # we set the timer to a bit more than the `DEFAULT_TIMEOUT` for a call. This
201
- # should make it so that any call from an evicted session can still be made
202
- # before the session is closed.
203
- threading.Timer(
204
- DEFAULT_TIMEOUT + 0.1,
205
- _async_close_evicted_sessions,
206
- args=[evicted_sessions],
207
- ).start()
208
-
209
- return cached_session
210
-
211
-
212
- async def async_get_response_from_get_request(
213
- endpoint_uri: URI, *args: Any, **kwargs: Any
214
- ) -> ClientResponse:
215
- kwargs.setdefault("timeout", ClientTimeout(DEFAULT_TIMEOUT))
216
- session = await async_cache_and_return_session(endpoint_uri)
217
- response = await session.get(endpoint_uri, *args, **kwargs)
218
- return response
219
-
220
-
221
- async def async_json_make_get_request(
222
- endpoint_uri: URI, *args: Any, **kwargs: Any
223
- ) -> Dict[str, Any]:
224
- response = await async_get_response_from_get_request(endpoint_uri, *args, **kwargs)
225
- response.raise_for_status()
226
- return await response.json()
227
-
228
-
229
- async def async_get_response_from_post_request(
230
- endpoint_uri: URI, *args: Any, **kwargs: Any
231
- ) -> ClientResponse:
232
- kwargs.setdefault("timeout", ClientTimeout(DEFAULT_TIMEOUT))
233
- session = await async_cache_and_return_session(endpoint_uri)
234
- response = await session.post(endpoint_uri, *args, **kwargs)
235
- return response
236
-
237
-
238
- async def async_make_post_request(
239
- endpoint_uri: URI, data: Union[bytes, Dict[str, Any]], *args: Any, **kwargs: Any
240
- ) -> bytes:
241
- response = await async_get_response_from_post_request(
242
- endpoint_uri, data=data, *args, **kwargs
243
- )
244
- response.raise_for_status()
245
- return await response.read()
246
-
247
-
248
- async def async_get_json_from_client_response(
249
- response: ClientResponse,
250
- ) -> Dict[str, Any]:
251
- return await response.json()
252
-
253
-
254
- def _async_close_evicted_sessions(evicted_sessions: List[ClientSession]) -> None:
255
- loop = asyncio.new_event_loop()
256
-
257
- for evicted_session in evicted_sessions:
258
- loop.run_until_complete(evicted_session.close())
259
- logger.debug(f"Closed evicted async session: {evicted_session}")
260
-
261
- if any(not evicted_session.closed for evicted_session in evicted_sessions):
262
- logger.warning(
263
- f"Some evicted async sessions were not properly closed: {evicted_sessions}"
264
- )
265
- loop.close()
@@ -1,106 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: web3
3
- Version: 7.0.0b2
4
- Summary: web3.py
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
- Requires-Python: >=3.8
20
- Description-Content-Type: text/markdown
21
- License-File: LICENSE
22
- Requires-Dist: aiohttp >=3.7.4.post0
23
- Requires-Dist: eth-abi >=4.0.0
24
- Requires-Dist: eth-account >=0.8.0
25
- Requires-Dist: eth-hash[pycryptodome] >=0.5.1
26
- Requires-Dist: eth-typing >=3.0.0
27
- Requires-Dist: eth-utils >=4.0.0
28
- Requires-Dist: hexbytes <0.4.0,>=0.1.0
29
- Requires-Dist: pydantic >=2.4.0
30
- Requires-Dist: requests >=2.16.0
31
- Requires-Dist: typing-extensions >=4.0.1
32
- Requires-Dist: websockets >=10.0.0
33
- Requires-Dist: pyunormalize >=15.0.0
34
- Requires-Dist: pywin32 >=223 ; platform_system == "Windows"
35
- Provides-Extra: dev
36
- Requires-Dist: eth-tester[py-evm] ==v0.10.0-b.3 ; extra == 'dev'
37
- Requires-Dist: py-geth >=4.1.0 ; extra == 'dev'
38
- Requires-Dist: black >=22.1.0 ; extra == 'dev'
39
- Requires-Dist: flake8 ==3.8.3 ; extra == 'dev'
40
- Requires-Dist: isort >=5.11.0 ; extra == 'dev'
41
- Requires-Dist: mypy ==1.4.1 ; extra == 'dev'
42
- Requires-Dist: types-setuptools >=57.4.4 ; extra == 'dev'
43
- Requires-Dist: types-requests >=2.26.1 ; extra == 'dev'
44
- Requires-Dist: sphinx >=5.3.0 ; extra == 'dev'
45
- Requires-Dist: sphinx-rtd-theme >=1.0.0 ; extra == 'dev'
46
- Requires-Dist: towncrier <22,>=21 ; extra == 'dev'
47
- Requires-Dist: bumpversion ; extra == 'dev'
48
- Requires-Dist: flaky >=3.7.0 ; extra == 'dev'
49
- Requires-Dist: hypothesis >=3.31.2 ; extra == 'dev'
50
- Requires-Dist: pytest >=7.0.0 ; extra == 'dev'
51
- Requires-Dist: pytest-asyncio <0.23,>=0.18.1 ; extra == 'dev'
52
- Requires-Dist: pytest-mock >=1.10 ; extra == 'dev'
53
- Requires-Dist: pytest-watch >=4.2 ; extra == 'dev'
54
- Requires-Dist: pytest-xdist >=1.29 ; extra == 'dev'
55
- Requires-Dist: setuptools >=38.6.0 ; extra == 'dev'
56
- Requires-Dist: tox >=3.18.0 ; extra == 'dev'
57
- Requires-Dist: tqdm >4.32 ; extra == 'dev'
58
- Requires-Dist: twine >=1.13 ; extra == 'dev'
59
- Requires-Dist: build >=0.9.0 ; extra == 'dev'
60
- Requires-Dist: importlib-metadata <5.0 ; (python_version < "3.8") and extra == 'dev'
61
- Provides-Extra: docs
62
- Requires-Dist: sphinx >=5.3.0 ; extra == 'docs'
63
- Requires-Dist: sphinx-rtd-theme >=1.0.0 ; extra == 'docs'
64
- Requires-Dist: towncrier <22,>=21 ; extra == 'docs'
65
- Provides-Extra: linter
66
- Requires-Dist: black >=22.1.0 ; extra == 'linter'
67
- Requires-Dist: flake8 ==3.8.3 ; extra == 'linter'
68
- Requires-Dist: isort >=5.11.0 ; extra == 'linter'
69
- Requires-Dist: mypy ==1.4.1 ; extra == 'linter'
70
- Requires-Dist: types-setuptools >=57.4.4 ; extra == 'linter'
71
- Requires-Dist: types-requests >=2.26.1 ; extra == 'linter'
72
- Provides-Extra: tester
73
- Requires-Dist: eth-tester[py-evm] ==v0.10.0-b.3 ; extra == 'tester'
74
- Requires-Dist: py-geth >=4.1.0 ; extra == 'tester'
75
-
76
- # web3.py
77
-
78
- [![Documentation Status](https://readthedocs.org/projects/web3py/badge/?version=latest)](https://web3py.readthedocs.io/en/latest/?badge=latest)
79
- [![Discord](https://img.shields.io/discord/809793915578089484?color=blue&label=chat&logo=discord&logoColor=white)](https://discord.gg/GHryRvPB84)
80
- [![Build Status](https://circleci.com/gh/ethereum/web3.py.svg?style=shield)](https://circleci.com/gh/ethereum/web3.py)
81
-
82
- A Python library for interacting with Ethereum.
83
-
84
- - Python 3.8+ support
85
-
86
- ---
87
-
88
- ## Quickstart
89
-
90
- [Get started in 5 minutes](https://web3py.readthedocs.io/en/latest/quickstart.html) or
91
- [take a tour](https://web3py.readthedocs.io/en/latest/overview.html) of the library.
92
-
93
- ## Documentation
94
-
95
- For additional guides, examples, and APIs, see the [documentation](https://web3py.readthedocs.io/en/latest/).
96
-
97
- ## Want to help?
98
-
99
- Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on our
100
- guidelines for [contributing](https://web3py.readthedocs.io/en/latest/contributing.html),
101
- then check out issues that are labeled
102
- [Good First Issue](https://github.com/ethereum/web3.py/issues?q=is%3Aissue+is%3Aopen+label%3A%22Good+First+Issue%22).
103
-
104
- ---
105
-
106
- #### Questions on implementation or usage? Join the conversation on [discord](https://discord.gg/GHryRvPB84).
@@ -1,163 +0,0 @@
1
- ens/__init__.py,sha256=Dtb57dzb4nLJbtR-XCziJs075vqNpmNfiDSIVe5EPnE,285
2
- ens/_normalization.py,sha256=cj9EWUFtKwiYEoX-2PfrcVv5VRYm-oy-CX9cDjegZrE,16788
3
- ens/abis.py,sha256=0Ec_lqe7HBsVpQrID3ccFMhx8Vb7S0TGFbeuRdXhuCE,34745
4
- ens/async_ens.py,sha256=Nns377sjU9RwsbnkjSLaaXp6r9VbXBxSgNrTbc9h4rY,22298
5
- ens/auto.py,sha256=w_E6Ua5ZmJVxfdii2aG5I_kQG5B9U5Y2qIFKVNhXo98,41
6
- ens/base_ens.py,sha256=BTYB5SCkif5r08Aou7haMhJABaggOHn3S4tUW4MLsVo,3477
7
- ens/constants.py,sha256=XCO4Pntwdnw10K_AZ86V0cqcvdUoOkEZvRqoDdFPE_w,913
8
- ens/contract_data.py,sha256=ZF8wMZDXbhd3q1Qn5ishjbASQf4QoDAMUet9ySTwmVU,148604
9
- ens/ens.py,sha256=GJSbTD64-X7Uf06OikeutuRcx4pZaHzOIY-7XxJMmII,21570
10
- ens/exceptions.py,sha256=g15oQhT3cbhniGjAmboC2M7xKGGNDfMutSnfK0LMqvs,2326
11
- ens/utils.py,sha256=9tl1mH2c3VHxubQkCcNRc4yMKx7dLNm8vgpJ89OMUAQ,9138
12
- ens/specs/nf.json,sha256=EnLJQWU7usNO-EBe1SessY2CioM4H_HXTRvxU__0Ufw,48402
13
- ens/specs/normalization_spec.json,sha256=liMWlkVT_OYYjiWlFmpMHpBjM631O98pZMcd7cD44sg,3115333
14
- web3/__init__.py,sha256=ZKNvCbdKGK7fBlUIGBOiIoBaEsvnKIjF0GpZZpNF5h4,1068
15
- web3/constants.py,sha256=eQLRQVMFPbgpOjjkPTMHkY-syncJuO-sPX5UrCSRjzQ,564
16
- web3/datastructures.py,sha256=ylvV3sgXsovIwbg9cXiHXdIZHdCIMzPwxMY1SeJVUSM,10716
17
- web3/exceptions.py,sha256=vJsP5sXeUeeUUFd7GaodGh-k1YH6CfwFTWyT-EZFMu0,6641
18
- web3/geth.py,sha256=1DRMSCErpCxL7l0406z5K46P8ORmtS87ZMyLowwK9LI,11329
19
- web3/logs.py,sha256=ROs-mDMH_ZOecE7hfbWA5yp27G38FbLjX4lO_WtlZxQ,198
20
- web3/main.py,sha256=-75d38t4aGjJNbbcUOnlE2s0jdIw34UDODHjVVzaBTo,13987
21
- web3/manager.py,sha256=-0Ce0zO9HZr3XenPYhATscrkrCmow8p60vPM5nBquTc,15069
22
- web3/method.py,sha256=3q8SnB6z3KKVfYYlDHoPCuQd-gYdjYkQWy8Q4Y5_L0U,7766
23
- web3/module.py,sha256=zonvW0meqdfG82-KgtYTF9ketsCShK2m9b-HYRBJRZg,4793
24
- web3/net.py,sha256=Y3vPzHWVFkfHEZoJxjDOt4tp5ERmZrMuyi4ZFOLmIeA,1562
25
- web3/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
- web3/testing.py,sha256=X7rKGcuEbRCvwXlWuJOfzZvXHboIEeoK-bIWnF_zn1A,951
27
- web3/tracing.py,sha256=OBRKLfoSSstzUrk-oqkrbPYPTNGTaPX7-VO5iEt1FwY,2968
28
- web3/types.py,sha256=Eq5MeHp497dx_I4kbdZMvy91zBdsy4XdgHWMBphYzEw,12417
29
- web3/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- web3/_utils/abi.py,sha256=OOnpQSGVAPgbgCXcxGypmhMMj1tq27HXyqPYrTqkchU,30587
31
- web3/_utils/async_caching.py,sha256=2XnaKCHBTTDK6B2R_YZvjJqIRUpbMDIU1uYrq-Lcyp8,486
32
- web3/_utils/async_transactions.py,sha256=R4w5CL4g0SCEPO8THKHRV_C-UxVuFDDNyecPRw-yx40,5161
33
- web3/_utils/blocks.py,sha256=l4w71UErmuZayZOBMxvqB6aqIpMS4Nx24m4gsYBoOO0,2059
34
- web3/_utils/caching.py,sha256=abFhXWAdrtT3TBtfD3uC8EqUhNUAymqZ3tAW3wFnCpY,4789
35
- web3/_utils/contracts.py,sha256=3sFLshwf8pV2FN6tMwt6b3aZFz7kBm0wfl3_ZQSRt8k,14323
36
- web3/_utils/datatypes.py,sha256=kdHO-crgPKfSvSFg6GSdZrlJq3Gxs6zAC337DA-6MKM,1640
37
- web3/_utils/decorators.py,sha256=GKaEFqyZJvvrXOcxutlN6CvWLQU7ZTiHHwcbslixJ0c,1738
38
- web3/_utils/empty.py,sha256=jd7-bwIhNLfBjns5WRDCeN1aT1reGgTZ1XlT6olTs3U,144
39
- web3/_utils/encoding.py,sha256=VW_-lDqQsEjqrA34Ea8v4Lj8_y3ZHL6EnTGJK-jt5rw,9117
40
- web3/_utils/ens.py,sha256=2BvzfegBkR7vH3Fq7lo_LsgfT912Zj-mR8eUt6o_lBA,2434
41
- web3/_utils/error_formatters_utils.py,sha256=0D1Dc6QojWgG2JSJmdjnFjs3k-ylKItygTulI7XZXco,6809
42
- web3/_utils/events.py,sha256=yDkzxWqT--KZN2MFo4F_ERsgOHRvUuc0z1vr4GH6uj0,17278
43
- web3/_utils/fee_utils.py,sha256=65Z6pPaPz39gsCVIyQwM2y1qfOUNc-4hlGbYAqAteVA,2145
44
- web3/_utils/filters.py,sha256=MTgJGMw2hHmrxtaJmWO-0DjQ5OCbwY0kOoT-OglgPDc,11996
45
- web3/_utils/formatters.py,sha256=xcLQIRxL07vHHTwfsdGEGS7LGzY1_tf5mSnTS9KTfoM,3071
46
- web3/_utils/function_identifiers.py,sha256=m305lsvUZk-jkPixT0IJd9P5sXqMvmwlwlLeBgEAnBQ,55
47
- web3/_utils/http.py,sha256=GDHmbeWt7UoHkRBvFt9Py5Vzr2ZLzH9WxAqEYZCJ53s,205
48
- web3/_utils/hypothesis.py,sha256=4Cm4iOWv-uP9irg_Pv63kYNDYUAGhnUH6fOPWRw3A0g,209
49
- web3/_utils/math.py,sha256=Tl-EhmKXtPM7t5tkj2VKrJYTtl5DJoTHiKIL95kzQHc,1047
50
- web3/_utils/method_formatters.py,sha256=Dl6TbwkuL-5LhRpUdjQG6XVNJ2p-o5sA93WQJedJdZo,33552
51
- web3/_utils/module.py,sha256=s3oqAZpR5hlbGrHkFNNtqavNqciAQjNkMrMYke-mYlg,3147
52
- web3/_utils/normalizers.py,sha256=jb-tMhWyNKWv1TJyrECwOeyDGAGON67jKb0Iz-Rxlcw,7447
53
- web3/_utils/request.py,sha256=PC_UMluqlaJECfiqEyLAiLKff_lz49sOqK0-77iVpw8,8881
54
- web3/_utils/rpc_abi.py,sha256=6-6r7oybsB7delHgZ2w0CXWayYYFIjR0qb7b2X6o98I,9294
55
- web3/_utils/threads.py,sha256=ZaBg_daNU_eI3nWtyAR8aQYM-ETTSoNchpfRyw6lEbQ,4208
56
- web3/_utils/transactions.py,sha256=5bWHkXvA1RYQlgSOEEZN6QbAl7AqoNQPVp6m3lA8bV0,8737
57
- web3/_utils/type_conversion.py,sha256=P9ojTqFASnlFEIA_Pf_BA3YJB4Ok4P0E_aGJw7FinNc,816
58
- web3/_utils/utility_methods.py,sha256=7VCpo5ysvPoGjFuDj5gT1Niva2l3BADUvNeJFlL3Yvg,2559
59
- web3/_utils/validation.py,sha256=5JBDbu8Azw4bgmN-QARRh6WFiZiX2VABl2zVsv9z0rc,6291
60
- web3/_utils/windows.py,sha256=IlFUtqYSbUUfFRx60zvEwpiZd080WpOrA4ojm4tmSEE,994
61
- web3/_utils/compat/__init__.py,sha256=TqX3GLnPutBwXIl0QDrFNK-qRDWFOgYKz7IgwfbuD48,592
62
- web3/_utils/contract_sources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
- web3/_utils/contract_sources/compile_contracts.py,sha256=nGrpgb7exjHBphyYg4hbBey_W9MbmgLVfwGkzdPAvXE,6491
64
- web3/_utils/contract_sources/contract_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
- web3/_utils/contract_sources/contract_data/_custom_contract_data.py,sha256=nxpN2uS1T338Tp5uVhwY9U1C2m2pdDz7kZv3LoZ0hpo,552
66
- web3/_utils/contract_sources/contract_data/address_reflector.py,sha256=oBddZz6wMCf7CZ8UFL_i2XWl7b8qwsHrJrgrEBn8hFw,5344
67
- web3/_utils/contract_sources/contract_data/arrays_contract.py,sha256=hJM6jVsTqWPsyLiHdI3Lg5FH_LphlE91yFn5bfT-W3k,18852
68
- web3/_utils/contract_sources/contract_data/bytes_contracts.py,sha256=nTTVEvKBIT-2FfmFw9471HxPvUi8GuIe4MNNi2iPDd4,14783
69
- web3/_utils/contract_sources/contract_data/constructor_contracts.py,sha256=5CjW-TIZWB08pRRulbB08634-WIzIiysQsr4rctyEQo,6089
70
- web3/_utils/contract_sources/contract_data/contract_caller_tester.py,sha256=NI3CH0TSFXZXNujqrNm3A9yQJLzG23TrA4dvLPeT-CM,6334
71
- web3/_utils/contract_sources/contract_data/emitter_contract.py,sha256=tsQA_dj6JJNMoRs1YJH-PzSCfTPVN1NuLZBnTZZylhk,40967
72
- web3/_utils/contract_sources/contract_data/event_contracts.py,sha256=DUYrlFubw53DlIo1RL7roS_OVJI_A0hVmo8DZU9ythw,5573
73
- web3/_utils/contract_sources/contract_data/extended_resolver.py,sha256=wL5hWALeAKXhB9KSI3fUijRs8GlsEC0OZg5DOaaBEog,15824
74
- web3/_utils/contract_sources/contract_data/fallback_function_contract.py,sha256=y8YFW9nWpt4rclQtLlXieuZv2qsskz8F-Rcv1Ihmwx8,1651
75
- web3/_utils/contract_sources/contract_data/function_name_tester_contract.py,sha256=68RxXutgPj05TJU6ism4f5qO4ypVnRr6hts_L1CXDbI,1886
76
- web3/_utils/contract_sources/contract_data/math_contract.py,sha256=unrYYyilwvVdNJ0vzmMzlQ7vD2dJVX7DBgLT15f6Im8,7637
77
- web3/_utils/contract_sources/contract_data/offchain_lookup.py,sha256=4k6UiBS9S8Ga3n_38IOikPtjzt5G39uqjxL_wO-AXhk,16716
78
- web3/_utils/contract_sources/contract_data/offchain_resolver.py,sha256=mwzJvyorsnY3ZlZn1N0A9Me6Pm74nvXi-wn4AcUf93w,32387
79
- web3/_utils/contract_sources/contract_data/panic_errors_contract.py,sha256=S5r3hffZxqHfMG2UfVwy4-ne14lL9miqazToCKx_RrM,15579
80
- web3/_utils/contract_sources/contract_data/payable_tester.py,sha256=zKw04ItPZF0kQ8Y_XAhLhwDM-83Y_CNzQyw97u_Hb38,1825
81
- web3/_utils/contract_sources/contract_data/receive_function_contracts.py,sha256=qcEweZoyhYQym0GipZw-BpfNk1IMUiu3Fui1sZDEMI0,17290
82
- web3/_utils/contract_sources/contract_data/reflector_contracts.py,sha256=9yGPBokbDjSL1P4_CEIjBm_S5hi77mgeve7USUSpYQI,5264
83
- web3/_utils/contract_sources/contract_data/revert_contract.py,sha256=YOIXuOw4PER9S3HuiiJ-yKbhlYpx9lwSmjfOyETSsro,4264
84
- web3/_utils/contract_sources/contract_data/simple_resolver.py,sha256=WveX0v15U64yWGO5N51Gzng7iMZh_RW80DZ9JCa7WhI,3555
85
- web3/_utils/contract_sources/contract_data/storage_contract.py,sha256=NhoWNlWltNtGBdPwCWQGQfDO4hDTRXCVPWx7jSc58B0,8238
86
- web3/_utils/contract_sources/contract_data/string_contract.py,sha256=zZdglZ6se_aqMIUKN3-3zR57h8zyDyUQIgtSIXtdSzg,11586
87
- web3/_utils/contract_sources/contract_data/tuple_contracts.py,sha256=qt0cGM1Kh-LlRYn04-fpSPQJAWcGrvP8EKPCJvsrnvE,23180
88
- web3/_utils/module_testing/__init__.py,sha256=_AuZ0S4xesS7ocRdMHeTN6zju7KqpSsG4NXgmccJonU,455
89
- web3/_utils/module_testing/eth_module.py,sha256=tY5ei3oE0x-kttHXxorYgu_Vr6Qo6ZmzbQRWSL7TcDA,181815
90
- web3/_utils/module_testing/go_ethereum_admin_module.py,sha256=_c-6SyzZkfAJ-7ySXUpw9FEr4cg-ShRdAGSAHWanCtY,3406
91
- web3/_utils/module_testing/go_ethereum_personal_module.py,sha256=PRX1dxqxGydHWyzcGVa0EP0IUoiSQyDYaszbmmXDKTU,10432
92
- web3/_utils/module_testing/go_ethereum_txpool_module.py,sha256=5f8XL8-2x3keyGRaITxMQYl9oQzjgqGn8zobB-j9BPs,1176
93
- web3/_utils/module_testing/module_testing_utils.py,sha256=AC1AGQPQQriABK1Q9hsbODGKzRGlgcuiM7bB3xnbly4,5594
94
- web3/_utils/module_testing/net_module.py,sha256=ifUTC-5fTcQbwpm0X09OdD5RSPnn00T8klFeYe8tTm4,1272
95
- web3/_utils/module_testing/persistent_connection_provider.py,sha256=RDcyBIznwweuG2X-57vq1jhMqYMK9lJRDEpaXuljwuE,16567
96
- web3/_utils/module_testing/utils.py,sha256=KkS0nbpj8b0DuBTh4hNejGwMqur6uEZi2mswmi-DMNI,9632
97
- web3/_utils/module_testing/web3_module.py,sha256=Y4lYglg_kbrpfwGfjekv52h4B7DaWa3uS15KGrCKL7c,9613
98
- web3/auto/__init__.py,sha256=ZbzAiCZMdt_tCTTPvH6t8NCVNroKKkt7TSVBBNR74Is,44
99
- web3/auto/gethdev.py,sha256=MuWD2gxv0xDv_SzPsp9mSkS1oG4P54xFK83qw9NvswA,438
100
- web3/beacon/__init__.py,sha256=8VmlbCbMiZBpEISoMcz72MoewtQxlUBk9FCfYud3Elw,65
101
- web3/beacon/api_endpoints.py,sha256=dkekSCmkat5QIfwKzwm49CyVcRb-pIbn1nZHB4F8M0U,2208
102
- web3/beacon/async_beacon.py,sha256=y7cvbsDYjRNDZftzcJyXaSLCsRrASAGxfyCwE53oCG4,7472
103
- web3/beacon/beacon.py,sha256=wgSmF-5hu_95L6onnlA33ADDoASFf9OZf-YWnqnY0VY,6640
104
- web3/contract/__init__.py,sha256=EX_RmT8D2DDKKsk1U8grCNdLq9b1rF-8xWaR53CBiew,187
105
- web3/contract/async_contract.py,sha256=oxxq5Pse4JkrRvPnecbF5eYwKg_FX17ltiHLvxiRj6Q,20392
106
- web3/contract/base_contract.py,sha256=TmG2l61YkX4lFN8u1e4PoqpNp5irx2HA3BfiX_LSVaA,37551
107
- web3/contract/contract.py,sha256=mNrGoMvxdKHRecoMxT7KDEWK0hCKqPoH6DX7yqD78As,19997
108
- web3/contract/utils.py,sha256=ozHDwk1JoCYlFV6LX2upYlgQhcW6zOP4eQ0jOHJzboA,12462
109
- web3/eth/__init__.py,sha256=CrYZXIlIdKTmznnLNUaA-C3eLvftBnmlVt9uxm-dwAI,124
110
- web3/eth/async_eth.py,sha256=peNTqwrN3whyWQdYJQR6P9oGz8tlriEVWbbctzTOLag,23466
111
- web3/eth/base_eth.py,sha256=WC1BRE1QOhPV417Od2NSu28fnyXTjKQ9YVqTU3W3N0A,6822
112
- web3/eth/eth.py,sha256=MLReiFi2VeFMrgYU706CPXRArsReMuZsD38p1cvWDNw,20460
113
- web3/gas_strategies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
- web3/gas_strategies/rpc.py,sha256=3Va-32jdmHkX7tzQCmh17ms2D6te5zZcqHP1326BdpY,352
115
- web3/gas_strategies/time_based.py,sha256=xWj3WyA8UL76KTNAbMWLiWwD-UYuWyFttclHoXuP1gg,9169
116
- web3/middleware/__init__.py,sha256=3aCt9x2A9x_Hg0QnqsN0MDbm2yw2WFTNjzlt1ytYrdQ,2414
117
- web3/middleware/attrdict.py,sha256=NY5yxlFOfLBBmcIjl8R-uP2dTz9ITIyTttG8-QcJWCI,2259
118
- web3/middleware/base.py,sha256=Ovw2HXX-6B2nAiN7PjTPQnujAP15idMLoPF2tCZqaWY,3519
119
- web3/middleware/buffered_gas_estimate.py,sha256=EmxUd-uO959UVroPsPKkl7oDa8Tw6N8BQLB6Urng5Eo,1647
120
- web3/middleware/filter.py,sha256=62Zs-fKS3nMU1aChMEJbXNof7mni5tj30ivaDrRDBJU,21778
121
- web3/middleware/formatting.py,sha256=UHvhlYdoAArqYKR8EFaLsdeU5snQQut6wx8olUcmkIc,7507
122
- web3/middleware/gas_price_strategy.py,sha256=ZjZ6pe3z0mDGLZHYoFXp4_fZIePqukljEh9f4mZUyIA,3779
123
- web3/middleware/names.py,sha256=m9Hj8v5xwJuXE3L_bKjj5Li0gZHS0I-V-OcUIZUruoA,4257
124
- web3/middleware/proof_of_authority.py,sha256=0AT4jr5CmTdrvl8Jiy-WYy8IFDYBOEaesgHDwpn0c7M,1429
125
- web3/middleware/pythonic.py,sha256=awc8I6lLzVc2Iv138sps2uf6dMQipskLRBTdvTEEIgQ,348
126
- web3/middleware/signing.py,sha256=jdH1LdD2Y2XbTMIcPFQgna4_nrawy5X8861zpo5m_6s,5680
127
- web3/middleware/stalecheck.py,sha256=FazqyU1rNHg6vPOMJhSg68qG3d8TPLIgId-yvk080N4,2656
128
- web3/middleware/validation.py,sha256=QxActrJk_zsXXiwpadP2MUjZBS5E50OJOtUwVrm9XVo,4280
129
- web3/providers/__init__.py,sha256=PLRNgSNqMjXKGM-qAatJTGSaQjmjzQW6jYxS3lVX_w0,470
130
- web3/providers/async_base.py,sha256=NGmg36qihjvhnx1OXIB0fg2kkc0rbFlJV5iFPzr0nGY,5323
131
- web3/providers/auto.py,sha256=Zx3CHKoRkmiw3Jte2BLNPiJAFd8rDXNGfA3XtxZvHgc,3465
132
- web3/providers/base.py,sha256=47r2USOZP3cc78fk2K8yFR7MoI2AMqKClGltPqbV4Xg,4468
133
- web3/providers/ipc.py,sha256=ss2ieRz0rou7CHnzGihNnQX1S3KbU2_QsiDCy6RN0ic,5688
134
- web3/providers/legacy_websocket.py,sha256=TuGCB26n9b9USXLUFNI5htKNZV7f_5pfsl_iro2N9e4,3953
135
- web3/providers/eth_tester/__init__.py,sha256=J6wazY3hQySsUfpFgwCXbEMo-CGEZjRo11RCg4UXKmA,83
136
- web3/providers/eth_tester/defaults.py,sha256=KpvHDHIoDw8rqUvToKl1LezNyod0TzxoMw7J3fLeUCg,14512
137
- web3/providers/eth_tester/main.py,sha256=I7NuZT8fA2CoSN-I-3UekcXrY-P1wb7sa6tzeQy502k,7196
138
- web3/providers/eth_tester/middleware.py,sha256=ZV8JFObcCzIKi_Xkne00qW-ttDmp30iTveXJps5IOvU,12882
139
- web3/providers/persistent/__init__.py,sha256=S1s8m1cjPOjD-CCrWrLDP0PGlP1FUqgEw2KdrDeMPgk,283
140
- web3/providers/persistent/async_ipc.py,sha256=FW01Z5hzT0NE0izCN5AVMZIYbHxpqCR62tzt2xNO6Dw,7277
141
- web3/providers/persistent/persistent.py,sha256=wQpQC-7c268KrUqopgX2EAvwJmt-grHQHjbmKrTyDlA,3550
142
- web3/providers/persistent/persistent_connection.py,sha256=56yjpwDMM2phkJ_M5_QB-A6_CjZc5VrkWhNDweA70d0,1109
143
- web3/providers/persistent/request_processor.py,sha256=SLrclcWs7QKL8Cx4K3amGjneB836qYszapmvMyBZwWM,11545
144
- web3/providers/persistent/utils.py,sha256=gfY7w1HB8xuE7OujSrbwWYjQuQ8nzRBoxoL8ESinqWM,1140
145
- web3/providers/persistent/websocket.py,sha256=N70-qqitPT5eqNdlQrvZXgETabG3ZImTv99111LkgX8,6914
146
- web3/providers/rpc/__init__.py,sha256=d20CaZ6vOXlud5sh6I5JnT_zEGBMpbXl-vCDFMxBNoY,89
147
- web3/providers/rpc/async_rpc.py,sha256=2_xh4RYSPU3_ELcRXuc-10ZEZWppxhVRKFi9OmlIbOU,4136
148
- web3/providers/rpc/rpc.py,sha256=SQHm34TiBmy03f-XApJt9iNYTluePf-hz5sFxt2Rpw4,4230
149
- web3/providers/rpc/utils.py,sha256=hjw0_tzBvJ6eBsQak9xzo37ODMGhKTAlLjeSoSZk39k,2458
150
- web3/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
151
- web3/scripts/release/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
- web3/scripts/release/test_package.py,sha256=DH0AryllcF4zfpWSd0NLPSQGHNoC-Qng5WYYbS5_4c8,1534
153
- web3/utils/__init__.py,sha256=pswH3MW_mro5zrHn_q8Pto-iS1jrbtEH3UtQ9qioiKM,455
154
- web3/utils/abi.py,sha256=naNkD7_XQGV8hd4CkxytLKWCcgzUjkb7q3ERwRVNICI,498
155
- web3/utils/address.py,sha256=KC_IpEbixSCuMhaW6V2QCyyJTYKYGS9c8QtI9_aH7zQ,967
156
- web3/utils/async_exception_handling.py,sha256=gfLuzP7Y5rc21jZVjWEYAOZUMJkJd9CmsL297UKReow,3096
157
- web3/utils/caching.py,sha256=udHytI9q1i0UdELR5B4DB95yNn1Hzu3AL0Skz2Zul0I,1693
158
- web3/utils/exception_handling.py,sha256=12xkzIqMAOx0Jcm6PYL98PmWlLPKFll0p9YoLGS_ZNg,3052
159
- web3-7.0.0b2.dist-info/LICENSE,sha256=ulnXiEqqFp9VyWe8yMFdtDi70RMBJk3mpY3FKujv6l8,1090
160
- web3-7.0.0b2.dist-info/METADATA,sha256=icThzoL5lnZpzD97-_-ljvg7XJS6P1TvjhnBWNjcsTw,4502
161
- web3-7.0.0b2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
162
- web3-7.0.0b2.dist-info/top_level.txt,sha256=iwupuJh7wgypXrpk_awszyri3TahRr5vxSphNyvt1bU,9
163
- web3-7.0.0b2.dist-info/RECORD,,