iwa 0.0.58__py3-none-any.whl → 0.0.60__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.
- iwa/core/chain/interface.py +118 -53
- iwa/core/chain/rate_limiter.py +35 -12
- iwa/core/chainlist.py +15 -10
- iwa/core/cli.py +3 -0
- iwa/core/contracts/cache.py +1 -1
- iwa/core/contracts/contract.py +1 -0
- iwa/core/contracts/decoder.py +10 -4
- iwa/core/http.py +31 -0
- iwa/core/ipfs.py +11 -19
- iwa/core/keys.py +10 -4
- iwa/core/models.py +1 -3
- iwa/core/pricing.py +3 -21
- iwa/core/rpc_monitor.py +1 -0
- iwa/core/services/balance.py +0 -1
- iwa/core/services/safe.py +8 -2
- iwa/core/services/safe_executor.py +52 -18
- iwa/core/services/transaction.py +32 -12
- iwa/core/services/transfer/erc20.py +0 -1
- iwa/core/services/transfer/native.py +1 -1
- iwa/core/tests/test_gnosis_fee.py +6 -2
- iwa/core/tests/test_ipfs.py +1 -1
- iwa/core/tests/test_regression_fixes.py +3 -6
- iwa/core/utils.py +2 -0
- iwa/core/wallet.py +3 -1
- iwa/plugins/olas/constants.py +15 -5
- iwa/plugins/olas/contracts/activity_checker.py +3 -3
- iwa/plugins/olas/contracts/staking.py +0 -1
- iwa/plugins/olas/events.py +15 -13
- iwa/plugins/olas/importer.py +26 -20
- iwa/plugins/olas/plugin.py +16 -14
- iwa/plugins/olas/service_manager/drain.py +1 -3
- iwa/plugins/olas/service_manager/lifecycle.py +9 -9
- iwa/plugins/olas/service_manager/staking.py +11 -6
- iwa/plugins/olas/tests/test_olas_archiving.py +25 -15
- iwa/plugins/olas/tests/test_olas_integration.py +49 -29
- iwa/plugins/olas/tests/test_service_manager.py +8 -10
- iwa/plugins/olas/tests/test_service_manager_errors.py +5 -4
- iwa/plugins/olas/tests/test_service_manager_flows.py +6 -5
- iwa/plugins/olas/tests/test_service_staking.py +64 -38
- iwa/tools/drain_accounts.py +2 -1
- iwa/tools/reset_env.py +2 -1
- iwa/tools/test_chainlist.py +5 -1
- iwa/tui/screens/wallets.py +1 -3
- iwa/web/routers/olas/services.py +10 -5
- {iwa-0.0.58.dist-info → iwa-0.0.60.dist-info}/METADATA +1 -1
- {iwa-0.0.58.dist-info → iwa-0.0.60.dist-info}/RECORD +60 -59
- tests/test_balance_service.py +0 -2
- tests/test_chain.py +1 -2
- tests/test_chain_interface.py +3 -3
- tests/test_rate_limiter.py +7 -5
- tests/test_rate_limiter_retry.py +34 -33
- tests/test_rpc_efficiency.py +4 -1
- tests/test_rpc_rate_limit.py +4 -3
- tests/test_rpc_rotation.py +4 -4
- tests/test_safe_executor.py +76 -50
- tests/test_safe_integration.py +11 -6
- {iwa-0.0.58.dist-info → iwa-0.0.60.dist-info}/WHEEL +0 -0
- {iwa-0.0.58.dist-info → iwa-0.0.60.dist-info}/entry_points.txt +0 -0
- {iwa-0.0.58.dist-info → iwa-0.0.60.dist-info}/licenses/LICENSE +0 -0
- {iwa-0.0.58.dist-info → iwa-0.0.60.dist-info}/top_level.txt +0 -0
|
@@ -33,9 +33,11 @@ def mock_wallet():
|
|
|
33
33
|
|
|
34
34
|
def test_sm_unstake_not_staked(mock_wallet):
|
|
35
35
|
"""Cover unstake when not staked (lines 736-738)."""
|
|
36
|
-
with
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
with (
|
|
37
|
+
patch("iwa.core.models.Config"),
|
|
38
|
+
patch("iwa.plugins.olas.service_manager.base.ContractCache") as mock_cache,
|
|
39
|
+
patch("iwa.plugins.olas.service_manager.staking.ContractCache", mock_cache),
|
|
40
|
+
):
|
|
39
41
|
mock_cache.return_value.get_contract.side_effect = lambda cls, *a, **k: cls(*a, **k)
|
|
40
42
|
sm = ServiceManager(mock_wallet)
|
|
41
43
|
sm.service = Service(
|
|
@@ -51,9 +53,11 @@ def test_sm_unstake_not_staked(mock_wallet):
|
|
|
51
53
|
|
|
52
54
|
def test_sm_unstake_tx_fails(mock_wallet):
|
|
53
55
|
"""Cover unstake transaction failure (lines 766-768)."""
|
|
54
|
-
with
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
with (
|
|
57
|
+
patch("iwa.core.models.Config"),
|
|
58
|
+
patch("iwa.plugins.olas.service_manager.base.ContractCache") as mock_cache,
|
|
59
|
+
patch("iwa.plugins.olas.service_manager.staking.ContractCache", mock_cache),
|
|
60
|
+
):
|
|
57
61
|
mock_cache.return_value.get_contract.side_effect = lambda cls, *a, **k: cls(*a, **k)
|
|
58
62
|
sm = ServiceManager(mock_wallet)
|
|
59
63
|
sm.service = Service(
|
|
@@ -77,9 +81,11 @@ def test_sm_unstake_tx_fails(mock_wallet):
|
|
|
77
81
|
|
|
78
82
|
def test_sm_get_staking_status_no_staking_address(mock_wallet):
|
|
79
83
|
"""Cover get_staking_status with no staking address (lines 831)."""
|
|
80
|
-
with
|
|
81
|
-
|
|
82
|
-
|
|
84
|
+
with (
|
|
85
|
+
patch("iwa.core.models.Config"),
|
|
86
|
+
patch("iwa.plugins.olas.service_manager.base.ContractCache") as mock_cache,
|
|
87
|
+
patch("iwa.plugins.olas.service_manager.staking.ContractCache", mock_cache),
|
|
88
|
+
):
|
|
83
89
|
mock_cache.return_value.get_contract.side_effect = lambda cls, *a, **k: cls(*a, **k)
|
|
84
90
|
sm = ServiceManager(mock_wallet)
|
|
85
91
|
sm.service = Service(
|
|
@@ -97,9 +103,11 @@ def test_sm_get_staking_status_no_staking_address(mock_wallet):
|
|
|
97
103
|
|
|
98
104
|
def test_sm_get_staking_status_with_full_info(mock_wallet):
|
|
99
105
|
"""Cover get_staking_status with complete info (lines 866-891)."""
|
|
100
|
-
with
|
|
101
|
-
|
|
102
|
-
|
|
106
|
+
with (
|
|
107
|
+
patch("iwa.core.models.Config"),
|
|
108
|
+
patch("iwa.plugins.olas.service_manager.base.ContractCache") as mock_cache,
|
|
109
|
+
patch("iwa.plugins.olas.service_manager.staking.ContractCache", mock_cache),
|
|
110
|
+
):
|
|
103
111
|
mock_cache.return_value.get_contract.side_effect = lambda cls, *a, **k: cls(*a, **k)
|
|
104
112
|
sm = ServiceManager(mock_wallet)
|
|
105
113
|
sm.service = Service(
|
|
@@ -142,9 +150,11 @@ def test_sm_get_staking_status_with_full_info(mock_wallet):
|
|
|
142
150
|
|
|
143
151
|
def test_sm_claim_rewards_no_service(mock_wallet):
|
|
144
152
|
"""Cover claim_rewards with no service (lines 936-938)."""
|
|
145
|
-
with
|
|
146
|
-
|
|
147
|
-
|
|
153
|
+
with (
|
|
154
|
+
patch("iwa.core.models.Config"),
|
|
155
|
+
patch("iwa.plugins.olas.service_manager.base.ContractCache") as mock_cache,
|
|
156
|
+
patch("iwa.plugins.olas.service_manager.staking.ContractCache", mock_cache),
|
|
157
|
+
):
|
|
148
158
|
mock_cache.return_value.get_contract.side_effect = lambda cls, *a, **k: cls(*a, **k)
|
|
149
159
|
sm = ServiceManager(mock_wallet)
|
|
150
160
|
sm.service = None
|
|
@@ -156,9 +166,11 @@ def test_sm_claim_rewards_no_service(mock_wallet):
|
|
|
156
166
|
|
|
157
167
|
def test_sm_claim_rewards_no_staking_address(mock_wallet):
|
|
158
168
|
"""Cover claim_rewards with no staking address (lines 939-943)."""
|
|
159
|
-
with
|
|
160
|
-
|
|
161
|
-
|
|
169
|
+
with (
|
|
170
|
+
patch("iwa.core.models.Config"),
|
|
171
|
+
patch("iwa.plugins.olas.service_manager.base.ContractCache") as mock_cache,
|
|
172
|
+
patch("iwa.plugins.olas.service_manager.staking.ContractCache", mock_cache),
|
|
173
|
+
):
|
|
162
174
|
mock_cache.return_value.get_contract.side_effect = lambda cls, *a, **k: cls(*a, **k)
|
|
163
175
|
sm = ServiceManager(mock_wallet)
|
|
164
176
|
sm.service = Service(
|
|
@@ -171,9 +183,11 @@ def test_sm_claim_rewards_no_staking_address(mock_wallet):
|
|
|
171
183
|
|
|
172
184
|
def test_sm_claim_rewards_tx_fails(mock_wallet):
|
|
173
185
|
"""Cover claim_rewards transaction failure (lines 967-968)."""
|
|
174
|
-
with
|
|
175
|
-
|
|
176
|
-
|
|
186
|
+
with (
|
|
187
|
+
patch("iwa.core.models.Config"),
|
|
188
|
+
patch("iwa.plugins.olas.service_manager.base.ContractCache") as mock_cache,
|
|
189
|
+
patch("iwa.plugins.olas.service_manager.staking.ContractCache", mock_cache),
|
|
190
|
+
):
|
|
177
191
|
mock_cache.return_value.get_contract.side_effect = lambda cls, *a, **k: cls(*a, **k)
|
|
178
192
|
sm = ServiceManager(mock_wallet)
|
|
179
193
|
sm.service = Service(
|
|
@@ -199,9 +213,11 @@ def test_sm_claim_rewards_tx_fails(mock_wallet):
|
|
|
199
213
|
|
|
200
214
|
mock_wallet.sign_and_send_transaction.return_value = (False, None)
|
|
201
215
|
|
|
202
|
-
with patch(
|
|
203
|
-
|
|
204
|
-
|
|
216
|
+
with patch(
|
|
217
|
+
"iwa.plugins.olas.service_manager.drain.StakingContract", return_value=mock_staking
|
|
218
|
+
):
|
|
219
|
+
success, amount = sm.claim_rewards()
|
|
220
|
+
assert success is False
|
|
205
221
|
|
|
206
222
|
|
|
207
223
|
# === SERVICE MANAGER SPIN_UP STATE TRANSITIONS (lines 1188-1241) ===
|
|
@@ -209,9 +225,11 @@ def test_sm_claim_rewards_tx_fails(mock_wallet):
|
|
|
209
225
|
|
|
210
226
|
def test_sm_spin_up_state_mismatch_after_activation(mock_wallet):
|
|
211
227
|
"""Cover spin_up state mismatch after activation (lines 1188-1191)."""
|
|
212
|
-
with
|
|
213
|
-
|
|
214
|
-
|
|
228
|
+
with (
|
|
229
|
+
patch("iwa.core.models.Config"),
|
|
230
|
+
patch("iwa.plugins.olas.service_manager.base.ContractCache") as mock_cache,
|
|
231
|
+
patch("iwa.plugins.olas.service_manager.staking.ContractCache", mock_cache),
|
|
232
|
+
):
|
|
215
233
|
mock_cache.return_value.get_contract.side_effect = lambda cls, *a, **k: cls(*a, **k)
|
|
216
234
|
sm = ServiceManager(mock_wallet)
|
|
217
235
|
sm.service = Service(service_name="t", chain_name="gnosis", service_id=1)
|
|
@@ -233,9 +251,11 @@ def test_sm_spin_up_state_mismatch_after_activation(mock_wallet):
|
|
|
233
251
|
|
|
234
252
|
def test_sm_spin_up_registration_fails(mock_wallet):
|
|
235
253
|
"""Cover spin_up registration failure (lines 1199-1201)."""
|
|
236
|
-
with
|
|
237
|
-
|
|
238
|
-
|
|
254
|
+
with (
|
|
255
|
+
patch("iwa.core.models.Config"),
|
|
256
|
+
patch("iwa.plugins.olas.service_manager.base.ContractCache") as mock_cache,
|
|
257
|
+
patch("iwa.plugins.olas.service_manager.staking.ContractCache", mock_cache),
|
|
258
|
+
):
|
|
239
259
|
mock_cache.return_value.get_contract.side_effect = lambda cls, *a, **k: cls(*a, **k)
|
|
240
260
|
sm = ServiceManager(mock_wallet)
|
|
241
261
|
sm.service = Service(service_name="t", chain_name="gnosis", service_id=1)
|
|
@@ -253,9 +273,11 @@ def test_sm_spin_up_registration_fails(mock_wallet):
|
|
|
253
273
|
|
|
254
274
|
def test_sm_spin_up_deploy_fails(mock_wallet):
|
|
255
275
|
"""Cover spin_up deploy failure (lines 1216-1218)."""
|
|
256
|
-
with
|
|
257
|
-
|
|
258
|
-
|
|
276
|
+
with (
|
|
277
|
+
patch("iwa.core.models.Config"),
|
|
278
|
+
patch("iwa.plugins.olas.service_manager.base.ContractCache") as mock_cache,
|
|
279
|
+
patch("iwa.plugins.olas.service_manager.staking.ContractCache", mock_cache),
|
|
280
|
+
):
|
|
259
281
|
mock_cache.return_value.get_contract.side_effect = lambda cls, *a, **k: cls(*a, **k)
|
|
260
282
|
sm = ServiceManager(mock_wallet)
|
|
261
283
|
sm.service = Service(service_name="t", chain_name="gnosis", service_id=1)
|
|
@@ -273,9 +295,11 @@ def test_sm_spin_up_deploy_fails(mock_wallet):
|
|
|
273
295
|
|
|
274
296
|
def test_sm_wind_down_terminate_fails(mock_wallet):
|
|
275
297
|
"""Cover wind_down terminate failure (lines 1299-1301)."""
|
|
276
|
-
with
|
|
277
|
-
|
|
278
|
-
|
|
298
|
+
with (
|
|
299
|
+
patch("iwa.core.models.Config"),
|
|
300
|
+
patch("iwa.plugins.olas.service_manager.base.ContractCache") as mock_cache,
|
|
301
|
+
patch("iwa.plugins.olas.service_manager.staking.ContractCache", mock_cache),
|
|
302
|
+
):
|
|
279
303
|
mock_cache.return_value.get_contract.side_effect = lambda cls, *a, **k: cls(*a, **k)
|
|
280
304
|
sm = ServiceManager(mock_wallet)
|
|
281
305
|
sm.service = Service(service_name="t", chain_name="gnosis", service_id=1)
|
|
@@ -293,8 +317,10 @@ def test_sm_wind_down_terminate_fails(mock_wallet):
|
|
|
293
317
|
|
|
294
318
|
def test_sm_wind_down_unbond_fails(mock_wallet):
|
|
295
319
|
"""Cover wind_down unbond failure (lines 1315-1317)."""
|
|
296
|
-
with
|
|
297
|
-
|
|
320
|
+
with (
|
|
321
|
+
patch("iwa.core.models.Config"),
|
|
322
|
+
patch("iwa.plugins.olas.service_manager.base.ContractCache"),
|
|
323
|
+
):
|
|
298
324
|
sm = ServiceManager(mock_wallet)
|
|
299
325
|
sm.service = Service(service_name="t", chain_name="gnosis", service_id=1)
|
|
300
326
|
|
iwa/tools/drain_accounts.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
1
|
"""Tool to drain specific accounts to a master address."""
|
|
2
|
+
|
|
3
3
|
import argparse
|
|
4
4
|
import sys
|
|
5
5
|
from pathlib import Path
|
|
@@ -56,5 +56,6 @@ def main() -> None:
|
|
|
56
56
|
except Exception:
|
|
57
57
|
logger.exception(f"Error draining {tag}")
|
|
58
58
|
|
|
59
|
+
|
|
59
60
|
if __name__ == "__main__":
|
|
60
61
|
main()
|
iwa/tools/reset_env.py
CHANGED
|
@@ -25,6 +25,7 @@ def _reset_tenderly(profile: int) -> None:
|
|
|
25
25
|
env = {"PYTHONPATH": "src"}
|
|
26
26
|
# Merge with current env to keep PATH etc.
|
|
27
27
|
import os
|
|
28
|
+
|
|
28
29
|
full_env = os.environ.copy()
|
|
29
30
|
full_env.update(env)
|
|
30
31
|
|
|
@@ -110,7 +111,7 @@ def main():
|
|
|
110
111
|
parser.add_argument(
|
|
111
112
|
"--keep-data",
|
|
112
113
|
action="store_true",
|
|
113
|
-
help="Reset only Tenderly, keeping config.yaml and wallet.json intact."
|
|
114
|
+
help="Reset only Tenderly, keeping config.yaml and wallet.json intact.",
|
|
114
115
|
)
|
|
115
116
|
args = parser.parse_args()
|
|
116
117
|
|
iwa/tools/test_chainlist.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Script to verify ChainlistRPC functionality."""
|
|
2
|
+
|
|
2
3
|
from iwa.core.chainlist import ChainlistRPC
|
|
3
4
|
|
|
4
5
|
|
|
@@ -32,7 +33,10 @@ def main() -> None:
|
|
|
32
33
|
|
|
33
34
|
print("\nTracking info for first 5 RPCs:")
|
|
34
35
|
for node in all_rpcs[:5]:
|
|
35
|
-
print(
|
|
36
|
+
print(
|
|
37
|
+
f" - {node.url}: Tracking={node.is_tracking} (Privacy={node.privacy}, Tracking={node.tracking})"
|
|
38
|
+
)
|
|
39
|
+
|
|
36
40
|
|
|
37
41
|
if __name__ == "__main__":
|
|
38
42
|
main()
|
iwa/tui/screens/wallets.py
CHANGED
|
@@ -330,9 +330,7 @@ class WalletsScreen(VerticalScroll):
|
|
|
330
330
|
|
|
331
331
|
def _fetch_single_token_balance(self, address: str, token: str, chain_name: str) -> str:
|
|
332
332
|
"""Fetch a single token balance using BalanceService."""
|
|
333
|
-
val_token = self.wallet.balance_service.get_erc20_balance_eth(
|
|
334
|
-
address, token, chain_name
|
|
335
|
-
)
|
|
333
|
+
val_token = self.wallet.balance_service.get_erc20_balance_eth(address, token, chain_name)
|
|
336
334
|
val_token_str = f"{val_token:.4f}" if val_token is not None else "-"
|
|
337
335
|
|
|
338
336
|
if val_token is not None:
|
iwa/web/routers/olas/services.py
CHANGED
|
@@ -41,7 +41,9 @@ def _determine_bond_amount(req: CreateServiceRequest) -> int:
|
|
|
41
41
|
|
|
42
42
|
if req.token_address and req.staking_contract:
|
|
43
43
|
# If a contract is specified, we MUST use its requirements
|
|
44
|
-
staking_name =
|
|
44
|
+
staking_name = (
|
|
45
|
+
wallet.account_service.get_tag_by_address(req.staking_contract) or req.staking_contract
|
|
46
|
+
)
|
|
45
47
|
logger.info(f"Fetching requirements from {staking_name}...")
|
|
46
48
|
staking_contract = StakingContract(req.staking_contract, req.chain)
|
|
47
49
|
reqs = staking_contract.get_requirements()
|
|
@@ -73,6 +75,7 @@ def _determine_bond_amount(req: CreateServiceRequest) -> int:
|
|
|
73
75
|
)
|
|
74
76
|
return bond_amount
|
|
75
77
|
|
|
78
|
+
|
|
76
79
|
@router.post(
|
|
77
80
|
"/create",
|
|
78
81
|
summary="Create Service",
|
|
@@ -81,7 +84,6 @@ def _determine_bond_amount(req: CreateServiceRequest) -> int:
|
|
|
81
84
|
def create_service(req: CreateServiceRequest, auth: bool = Depends(verify_auth)):
|
|
82
85
|
"""Create a new Olas service using spin_up for seamless deployment."""
|
|
83
86
|
try:
|
|
84
|
-
|
|
85
87
|
from iwa.plugins.olas.contracts.staking import StakingContract
|
|
86
88
|
from iwa.plugins.olas.service_manager import ServiceManager
|
|
87
89
|
|
|
@@ -196,7 +198,9 @@ def deploy_service(
|
|
|
196
198
|
if staking_contract:
|
|
197
199
|
try:
|
|
198
200
|
staking_obj = StakingContract(staking_contract, service.chain_name)
|
|
199
|
-
staking_name =
|
|
201
|
+
staking_name = (
|
|
202
|
+
wallet.account_service.get_tag_by_address(staking_contract) or staking_contract
|
|
203
|
+
)
|
|
200
204
|
logger.info(f"Will stake in {staking_name} after deployment")
|
|
201
205
|
except Exception as e:
|
|
202
206
|
logger.warning(f"Could not set up staking contract: {e}")
|
|
@@ -230,7 +234,6 @@ def deploy_service(
|
|
|
230
234
|
raise HTTPException(status_code=400, detail=str(e)) from None
|
|
231
235
|
|
|
232
236
|
|
|
233
|
-
|
|
234
237
|
def _resolve_service_accounts(service) -> dict:
|
|
235
238
|
"""Resolve basic accounts info including owner_signer if applicable."""
|
|
236
239
|
accounts = {}
|
|
@@ -279,7 +282,9 @@ def _resolve_service_balances(service, chain: str) -> dict:
|
|
|
279
282
|
if role == "owner" and stored and hasattr(stored, "signers") and stored.signers:
|
|
280
283
|
signer_addr = stored.signers[0]
|
|
281
284
|
s_native = wallet.get_native_balance_eth(signer_addr, chain)
|
|
282
|
-
s_olas_wei = wallet.balance_service.get_erc20_balance_wei(
|
|
285
|
+
s_olas_wei = wallet.balance_service.get_erc20_balance_wei(
|
|
286
|
+
signer_addr, "OLAS", chain
|
|
287
|
+
)
|
|
283
288
|
s_olas = float(s_olas_wei) / 1e18 if s_olas_wei else 0
|
|
284
289
|
s_stored = wallet.key_storage.find_stored_account(signer_addr)
|
|
285
290
|
balances["owner_signer"] = {
|
|
@@ -1,35 +1,36 @@
|
|
|
1
1
|
iwa/__init__.py,sha256=vu12UytYNREtMRvIWp6AfV1GgUe53XWwCMhYyqKAPgo,19
|
|
2
2
|
iwa/__main__.py,sha256=eJU5Uxeu9Y7shWg5dt5Mcq0pMC4wFVNWjeYGKSf4Apw,88
|
|
3
3
|
iwa/core/__init__.py,sha256=GJv4LJOXeZ3hgGvbt5I6omkoFkP2A9qhHjpDlOep9ik,24
|
|
4
|
-
iwa/core/chainlist.py,sha256=
|
|
5
|
-
iwa/core/cli.py,sha256=
|
|
4
|
+
iwa/core/chainlist.py,sha256=bcbv1P9R-RiCghullse0qVmqkTs1l4_ZOkOHZ0MzjtI,4097
|
|
5
|
+
iwa/core/cli.py,sha256=Qo0SXvgKFOd3Ru-LnX5zEXIaR7r3uwYoqwPhVShEqiQ,8315
|
|
6
6
|
iwa/core/constants.py,sha256=_CYUVQpR--dRPuxotsmbzQE-22y61tlnjUD7IhlvVVA,997
|
|
7
7
|
iwa/core/db.py,sha256=WI-mP0tQAmwFPeEi9w7RCa_Mcf_zBfd_7JcbHJwU1aU,10377
|
|
8
|
-
iwa/core/
|
|
9
|
-
iwa/core/
|
|
8
|
+
iwa/core/http.py,sha256=3OB6j2E2TzhNbKJgpoRPvt20yu5NX_agCssDbxEUm8w,953
|
|
9
|
+
iwa/core/ipfs.py,sha256=xYpcg3Y8k_4FpDiZUQO_wmc8ldybET1ReM6CwrKrbz0,5423
|
|
10
|
+
iwa/core/keys.py,sha256=THDq1W1AALSTY1HULNYDYoPj1V0DbFZzGjhtZtXcrjU,24803
|
|
10
11
|
iwa/core/mnemonic.py,sha256=LiG1VmpydQoHQ0pHUJ1OIlrWJry47VSMnOqPM_Yk-O8,12930
|
|
11
|
-
iwa/core/models.py,sha256=
|
|
12
|
+
iwa/core/models.py,sha256=hSIjwWs7speLDlv4jxAT0Itr02jL_kMb2-yTFnuY6qs,14530
|
|
12
13
|
iwa/core/monitor.py,sha256=6hQHAdJIsyoOwnZ9KdYDk_k0mclgr94iFk8V6BtatFQ,7957
|
|
13
14
|
iwa/core/plugins.py,sha256=FLvOG4S397fKi0aTH1fWBEtexn4yvGv_QzGWqFrhSKE,1102
|
|
14
|
-
iwa/core/pricing.py,sha256=
|
|
15
|
-
iwa/core/rpc_monitor.py,sha256
|
|
15
|
+
iwa/core/pricing.py,sha256=xMihEHi0Mupu1nO5YwujafWLOZnd50Lj9fYQS_JDWTQ,4236
|
|
16
|
+
iwa/core/rpc_monitor.py,sha256=C6AX5pSs5TEE43u3nVlE9oZ-ISKn5pq1jMQb5xatZ-g,1662
|
|
16
17
|
iwa/core/secrets.py,sha256=5cPUtNVsAUKakNHFCaPOQ3aygAOs_FemSTNZpljqiRs,3920
|
|
17
18
|
iwa/core/tables.py,sha256=y7Cg67PAGHYVMVyAjbo_CQ9t2iz7UXE-OTuUHRyFRTo,2021
|
|
18
19
|
iwa/core/test.py,sha256=gey0dql5eajo1itOhgkSrgfyGWue2eSfpr0xzX3vc38,643
|
|
19
20
|
iwa/core/types.py,sha256=EfDfIwLajTNK-BP9K17QLOIsGCs8legplKI_bUD_NjM,1992
|
|
20
21
|
iwa/core/ui.py,sha256=DglmrI7XhUmOpLn9Nog9Cej4r-VT0JGFkuSNBx-XorQ,3131
|
|
21
|
-
iwa/core/utils.py,sha256=
|
|
22
|
-
iwa/core/wallet.py,sha256=
|
|
22
|
+
iwa/core/utils.py,sha256=FTYpIdQ1wnugD4lYU4TQ7d7_TlDs4CTUIhEpHGEJph4,4281
|
|
23
|
+
iwa/core/wallet.py,sha256=xSGFOK5Wzh-ctLGhBMK1BySlXN0Ircpztyk1an21QiQ,13129
|
|
23
24
|
iwa/core/chain/__init__.py,sha256=XJMmn0ed-_aVkY2iEMKpuTxPgIKBd41dexSVmEZTa-o,1604
|
|
24
25
|
iwa/core/chain/errors.py,sha256=9SEbhxZ-qASPkzt-DoI51qq0GRJVqRgqgL720gO7a64,1275
|
|
25
|
-
iwa/core/chain/interface.py,sha256=
|
|
26
|
+
iwa/core/chain/interface.py,sha256=ww779Wek8qeIxu5t0v3hcmwXq7dMaxp0TjpW4Eikg8Y,25924
|
|
26
27
|
iwa/core/chain/manager.py,sha256=cFEzh6pK5OyVhjhpeMAqhc9RnRDQR1DjIGiGKp-FXBI,1159
|
|
27
28
|
iwa/core/chain/models.py,sha256=WUhAighMKcFdbAUkPU_3dkGbWyAUpRJqXMHLcWFC1xg,5261
|
|
28
|
-
iwa/core/chain/rate_limiter.py,sha256=
|
|
29
|
+
iwa/core/chain/rate_limiter.py,sha256=Ps1MrR4HHtylxgUAawe6DoC9tuqKagjQdKulqcJD2gs,9093
|
|
29
30
|
iwa/core/contracts/__init__.py,sha256=P5GFY_pnuI02teqVY2U0t98bn1_SSPAbcAzRMpCdTi4,34
|
|
30
|
-
iwa/core/contracts/cache.py,sha256=
|
|
31
|
-
iwa/core/contracts/contract.py,sha256=
|
|
32
|
-
iwa/core/contracts/decoder.py,sha256=
|
|
31
|
+
iwa/core/contracts/cache.py,sha256=vN7ArNhNsSDr1rYHDMWsMm6VbSszBt4Xej9MeI-rkgc,4452
|
|
32
|
+
iwa/core/contracts/contract.py,sha256=TLZGF7BtMl2fr92B80Gp3ttnP4hJsdAG-raaFZiNLO8,13255
|
|
33
|
+
iwa/core/contracts/decoder.py,sha256=fe84N4wdVCADIz6ytT6IvC5NS_7uiosaXsMk5vRE414,5630
|
|
33
34
|
iwa/core/contracts/erc20.py,sha256=VqriOdUXej0ilTgpukpm1FUF_9sSrVMAPuEpIvyZ2SQ,2646
|
|
34
35
|
iwa/core/contracts/multisend.py,sha256=tSdBCWe7LSdBoKZ7z2QebmRFK4M2ln7H3kmJBeEb4Ho,2431
|
|
35
36
|
iwa/core/contracts/abis/erc20.json,sha256=vrdExMWcIogg_nO59j1Pmipmpa2Ulj3oCCdcdrrFVCE,16995
|
|
@@ -37,21 +38,21 @@ iwa/core/contracts/abis/multisend.json,sha256=BE8JbNQU_m1VsIppNK0GKP1E9R7Aor9YTr
|
|
|
37
38
|
iwa/core/contracts/abis/multisend_call_only.json,sha256=lamMZflFtsoBKcG4QgmLWKyTK1-TcIaTM-j3r23EqJU,287
|
|
38
39
|
iwa/core/services/__init__.py,sha256=ab5pYzmu3LrZLTO5N-plx6Rp4R0hBEnbbzsgz84zWGM,498
|
|
39
40
|
iwa/core/services/account.py,sha256=0l14qD8_-ZbN_hQUNa7bRZt0tkceHPPc4GHmB8UKqy4,2009
|
|
40
|
-
iwa/core/services/balance.py,sha256=
|
|
41
|
+
iwa/core/services/balance.py,sha256=MSCEzPRDPlHIjaWD1A2X2oIuiMz5MFJjD7sSHUxQ8OM,3324
|
|
41
42
|
iwa/core/services/plugin.py,sha256=GNNlbtELyHl7MNVChrypF76GYphxXduxDog4kx1MLi8,3277
|
|
42
|
-
iwa/core/services/safe.py,sha256=
|
|
43
|
-
iwa/core/services/safe_executor.py,sha256=
|
|
44
|
-
iwa/core/services/transaction.py,sha256=
|
|
43
|
+
iwa/core/services/safe.py,sha256=vqvpk7aIqHljaG1zYYpmKdW4mi5OVuoyXcpReISPYM0,15744
|
|
44
|
+
iwa/core/services/safe_executor.py,sha256=e7M4Z0w00W5H88I1Yf2qQGP_orI5FDDVSzgilhJaeQo,13509
|
|
45
|
+
iwa/core/services/transaction.py,sha256=FrGRWn1xo5rbGIr2ToZ2kPzapr3zmWW38oycyB87TK8,19971
|
|
45
46
|
iwa/core/services/transfer/__init__.py,sha256=ZJfshFxJRsp8rkOqfVvd1cqEzIJ9tqBJh8pc0l90GLk,5576
|
|
46
47
|
iwa/core/services/transfer/base.py,sha256=sohz-Ss2i-pGYGl4x9bD93cnYKcSvsXaXyvyRawvgQs,9043
|
|
47
|
-
iwa/core/services/transfer/erc20.py,sha256=
|
|
48
|
+
iwa/core/services/transfer/erc20.py,sha256=e6RD1_QcI_-iJvP85kj7aw4p6NnCPjZcm-QSKi14RRA,10104
|
|
48
49
|
iwa/core/services/transfer/multisend.py,sha256=MuOTjzUQoYg1eSixXKhJGBmB1c0ymLelvk4puHm_VGE,15194
|
|
49
|
-
iwa/core/services/transfer/native.py,sha256=
|
|
50
|
+
iwa/core/services/transfer/native.py,sha256=fZZJURW5kcNPEA_R9c5eG813F-7_odLcvdHLZqlUavQ,9900
|
|
50
51
|
iwa/core/services/transfer/swap.py,sha256=jsLCj_wc8Q4iWIXplcOIEtAvQnTpgTQF_5wrhQ6GjEk,12306
|
|
51
|
-
iwa/core/tests/test_gnosis_fee.py,sha256
|
|
52
|
-
iwa/core/tests/test_ipfs.py,sha256=
|
|
52
|
+
iwa/core/tests/test_gnosis_fee.py,sha256=-Qs4yQy8qMrsqWMA5DHYWiF0UEW7PpT3sekJbnKn-uM,3702
|
|
53
|
+
iwa/core/tests/test_ipfs.py,sha256=nhS1ZRAuc9_rtnBd9aJhG7RD5yzA1vWKqcek2Q16pj8,2774
|
|
53
54
|
iwa/core/tests/test_pricing.py,sha256=B2f8vx_JSdilIMu6cb8TxfVyr6kDLt5wN8ZCPvEAuOY,1876
|
|
54
|
-
iwa/core/tests/test_regression_fixes.py,sha256=
|
|
55
|
+
iwa/core/tests/test_regression_fixes.py,sha256=W53R5Gj-gj8lZJwO_PBVNE3h7pWybj0G99oDwJcCl3g,3972
|
|
55
56
|
iwa/core/tests/test_wallet.py,sha256=N8_gO7KkV5nqk_KcHqW_xOwNNKpDuXHeFgnala3bB84,9361
|
|
56
57
|
iwa/plugins/__init__.py,sha256=zy-DjOZn8GSgIETN2X_GAb9O6yk71t6ZRzeUgoZ52KA,23
|
|
57
58
|
iwa/plugins/gnosis/__init__.py,sha256=dpx0mE84eV-g5iZaH5nKivZJnoKWyRFX5rhdjowBwuU,114
|
|
@@ -65,19 +66,19 @@ iwa/plugins/gnosis/cow/types.py,sha256=-9VRiFhAkmN1iIJ95Pg7zLFSeXtkkW00sl13usxi3
|
|
|
65
66
|
iwa/plugins/gnosis/tests/test_cow.py,sha256=50bj9kZ-PwrZXIdTTTNlien5WdDWHhxI44dcB89jOc8,8809
|
|
66
67
|
iwa/plugins/gnosis/tests/test_safe.py,sha256=hQHVHBWQhGnuvzvx4U9fOWEwASJWwql42q6cfRcuAls,3218
|
|
67
68
|
iwa/plugins/olas/__init__.py,sha256=_NhBczzM61fhGYwGhnWfEeL8Jywyy_730GASe2BxzeQ,106
|
|
68
|
-
iwa/plugins/olas/constants.py,sha256=
|
|
69
|
-
iwa/plugins/olas/events.py,sha256=
|
|
70
|
-
iwa/plugins/olas/importer.py,sha256=
|
|
69
|
+
iwa/plugins/olas/constants.py,sha256=BbEDho_TAh10cCGsrlk2vP1OVrS_ZWBE_cAEITd_658,7838
|
|
70
|
+
iwa/plugins/olas/events.py,sha256=HHjYu4pN3tuZATIh8vGWWzDb7z9wuqhsaTqI3_4H0-I,6086
|
|
71
|
+
iwa/plugins/olas/importer.py,sha256=5xTtlQe5hO5bUCOg1sRuFkN2UcohYdJEQwfMm2JckyI,42088
|
|
71
72
|
iwa/plugins/olas/mech_reference.py,sha256=CaSCpQnQL4F7wOG6Ox6Zdoy-uNEQ78YBwVLILQZKL8Q,5782
|
|
72
73
|
iwa/plugins/olas/models.py,sha256=uXih8UcmBYj6PlxqP-cnyAiazJezjShjkCaN1Kqlb2I,4921
|
|
73
|
-
iwa/plugins/olas/plugin.py,sha256=
|
|
74
|
-
iwa/plugins/olas/contracts/activity_checker.py,sha256=
|
|
74
|
+
iwa/plugins/olas/plugin.py,sha256=kz21CxIGQw3Is6HC2dvKvFRIm9m1FRKHO0YgUuDEplQ,15650
|
|
75
|
+
iwa/plugins/olas/contracts/activity_checker.py,sha256=OXh0SFPGfcpeD665ay-I19LqcIx38qEz8o62dw0A9zE,5361
|
|
75
76
|
iwa/plugins/olas/contracts/base.py,sha256=y73aQbDq6l4zUpz_eQAg4MsLkTAEqjjupXlcvxjfgCI,240
|
|
76
77
|
iwa/plugins/olas/contracts/mech.py,sha256=dXYtyORc-oiu9ga5PtTquOFkoakb6BLGKvlUsteygIg,2767
|
|
77
78
|
iwa/plugins/olas/contracts/mech_marketplace.py,sha256=hMADl5MQGvT2wLRKu4vHGe4RrAZVq8Y2M_EvXWWz528,1554
|
|
78
79
|
iwa/plugins/olas/contracts/mech_marketplace_v1.py,sha256=ooF5uw1wxwYsoriGUGGxXxmaD8DtWZtK4TJBCUNTGtI,2501
|
|
79
80
|
iwa/plugins/olas/contracts/service.py,sha256=BDQKeCTCnBNrwKD1a8rrlLytpKG3CAdjr-s0ec-dsFY,8243
|
|
80
|
-
iwa/plugins/olas/contracts/staking.py,sha256=
|
|
81
|
+
iwa/plugins/olas/contracts/staking.py,sha256=kKF4Uc2cFr9_drKG5OzFgzKTdgGyHIM_PUa-L0LX9gU,18486
|
|
81
82
|
iwa/plugins/olas/contracts/abis/activity_checker.json,sha256=HT0IMbyTLMO71ITBKwoS950rHe772suPP4b8eDAodJ0,2230
|
|
82
83
|
iwa/plugins/olas/contracts/abis/mech.json,sha256=bMMCXInjE_2PTPnc_sIyS_H8pod5Sm_e-xTbKgZppKc,16369
|
|
83
84
|
iwa/plugins/olas/contracts/abis/mech_marketplace.json,sha256=KPnF-H_UATb3wdb_7o6ky_hSp5xwgvckD-QqylsWJLg,32468
|
|
@@ -92,17 +93,17 @@ iwa/plugins/olas/scripts/test_full_mech_flow.py,sha256=Fqoq5bn7Z_3YyRrnuqNAZy9cw
|
|
|
92
93
|
iwa/plugins/olas/scripts/test_simple_lifecycle.py,sha256=8T50tOZx3afeECSfCNAb0rAHNtYOsBaeXlMwKXElCk8,2099
|
|
93
94
|
iwa/plugins/olas/service_manager/__init__.py,sha256=GXiThMEY3nPgHUl1i-DLrF4h96z9jPxxI8Jepo2E1PM,1926
|
|
94
95
|
iwa/plugins/olas/service_manager/base.py,sha256=EBPg0ymqgtAb7ZvVSfTt31QYgv_6gp4UAc6je00NLAg,5009
|
|
95
|
-
iwa/plugins/olas/service_manager/drain.py,sha256=
|
|
96
|
-
iwa/plugins/olas/service_manager/lifecycle.py,sha256=
|
|
96
|
+
iwa/plugins/olas/service_manager/drain.py,sha256=Hoa8rTIDwp9xGf_0O-7Nvn58LMZ_8PTOTr2ETUY5TjY,12920
|
|
97
|
+
iwa/plugins/olas/service_manager/lifecycle.py,sha256=JCLGN7RjJbbPXXHOqvD64OKj2wH2NVh7o3mCBqJQEAQ,50570
|
|
97
98
|
iwa/plugins/olas/service_manager/mech.py,sha256=NVzVbEmyOe3wK92VEzCCOSuy3HDkEP1MSoVt7Av8Psk,27949
|
|
98
|
-
iwa/plugins/olas/service_manager/staking.py,sha256=
|
|
99
|
+
iwa/plugins/olas/service_manager/staking.py,sha256=kT9OOQ4fi3FrIJB2T2gsvmv7DBRD6pDxqcXXh2o6iwc,29600
|
|
99
100
|
iwa/plugins/olas/tests/conftest.py,sha256=4vM7EI00SrTGyeP0hNzsGSQHEj2-iznVgzlNh2_OGfo,739
|
|
100
101
|
iwa/plugins/olas/tests/test_importer.py,sha256=i9LKov7kNRECB3hmRnhKBwcfx3uxtjWe4BB77bOOpeo,4282
|
|
101
102
|
iwa/plugins/olas/tests/test_importer_error_handling.py,sha256=GeXu4Par3_FAUL9hT6Sn5PdRg2_EU2gf3iaL73atoYo,12256
|
|
102
103
|
iwa/plugins/olas/tests/test_mech_contracts.py,sha256=wvxuigPafF-ySIHVBdWVei3AO418iPh7cSVdAlUGm_s,3566
|
|
103
|
-
iwa/plugins/olas/tests/test_olas_archiving.py,sha256=
|
|
104
|
+
iwa/plugins/olas/tests/test_olas_archiving.py,sha256=rwyP-9eZ1cNvvV4h4bBOrs_8qV-du9yt-VNMuH_13nY,3443
|
|
104
105
|
iwa/plugins/olas/tests/test_olas_contracts.py,sha256=B8X-5l1KfYMoZOiM94_rcNzbILLl78rqt_jhyxzAOqE,10835
|
|
105
|
-
iwa/plugins/olas/tests/test_olas_integration.py,sha256=
|
|
106
|
+
iwa/plugins/olas/tests/test_olas_integration.py,sha256=LGkdeso5lvi7_0GjlS9EFlSs6PEEn_b5aD2USmperDA,23086
|
|
106
107
|
iwa/plugins/olas/tests/test_olas_models.py,sha256=5scX-wvRLGH3G44S2okq_tyQ9Rk7Pd0Ak1zNCZ2HtI4,4957
|
|
107
108
|
iwa/plugins/olas/tests/test_olas_view.py,sha256=2SsQYayeV3rf_mAPVvt4vINcMysAXmICkkQe3MRn4K8,10662
|
|
108
109
|
iwa/plugins/olas/tests/test_olas_view_actions.py,sha256=jAxr9bjFNAaxGf1btIrxdMaHgJ0PWX9aDwVU-oPGMpk,5109
|
|
@@ -110,26 +111,26 @@ iwa/plugins/olas/tests/test_olas_view_modals.py,sha256=8j0PNFjKqFC5V1kBdVFWNLMvq
|
|
|
110
111
|
iwa/plugins/olas/tests/test_plugin.py,sha256=RVgU-Cq6t_3mOh90xFAGwlJOV7ZIgp0VNaK5ZAxisAQ,2565
|
|
111
112
|
iwa/plugins/olas/tests/test_plugin_full.py,sha256=55EBa07JhJLVG3IMi6QKlR_ivWLYCdLQTySP66qbEXo,8584
|
|
112
113
|
iwa/plugins/olas/tests/test_service_lifecycle.py,sha256=sOCtpz8T9s55AZe9AoqP1h3XrXw5NDSjDqwLgYThvU4,5559
|
|
113
|
-
iwa/plugins/olas/tests/test_service_manager.py,sha256=
|
|
114
|
-
iwa/plugins/olas/tests/test_service_manager_errors.py,sha256
|
|
115
|
-
iwa/plugins/olas/tests/test_service_manager_flows.py,sha256=
|
|
114
|
+
iwa/plugins/olas/tests/test_service_manager.py,sha256=_mFRptssimITHhjvZA5jUPU2bInUIPCKll5wlj9elcA,40905
|
|
115
|
+
iwa/plugins/olas/tests/test_service_manager_errors.py,sha256=-qpLmU4Uiqqtre59L2wXpO4WPMs4ej_K_gAL3naEvRg,8554
|
|
116
|
+
iwa/plugins/olas/tests/test_service_manager_flows.py,sha256=ZSmBJNa18d_MyAaLQRoPpfFYRwzmk9k-5AhSAGd7WeI,20737
|
|
116
117
|
iwa/plugins/olas/tests/test_service_manager_mech.py,sha256=qG6qu5IPRNypXUsblU2OEkuiuwDJ0TH8RXZbibmTFcQ,4937
|
|
117
118
|
iwa/plugins/olas/tests/test_service_manager_rewards.py,sha256=jVAe4HSAxDfnq8Ec-JMsvE2E0HYsydO78ITFHnSSka4,11993
|
|
118
119
|
iwa/plugins/olas/tests/test_service_manager_validation.py,sha256=ajlfH5uc4mAHf8A7GLE5cW7X8utM2vUilM0JdGDdlVg,5382
|
|
119
|
-
iwa/plugins/olas/tests/test_service_staking.py,sha256=
|
|
120
|
+
iwa/plugins/olas/tests/test_service_staking.py,sha256=ETNnWzV52FDhK0mrPb9xl9gSiYRH2EeDVxcaQIV0d5Q,15849
|
|
120
121
|
iwa/plugins/olas/tests/test_staking_integration.py,sha256=QCBQf6P2ZmmsEGt2k8W2r53lG2aVRuoMJE-aFxVDLss,9701
|
|
121
122
|
iwa/plugins/olas/tests/test_staking_validation.py,sha256=uug64jFcXYJ3Nw_lNa3O4fnhNr5wAWHHIrchSbR2MVE,4020
|
|
122
123
|
iwa/plugins/olas/tui/__init__.py,sha256=5ZRsbC7J3z1xfkZRiwr4bLEklf78rNVjdswe2p7SlS8,28
|
|
123
124
|
iwa/plugins/olas/tui/olas_view.py,sha256=OlhciDK1Ni4BdzggqTzQeYnP2azB-We02hH6jQhbZuU,37388
|
|
124
125
|
iwa/tools/__init__.py,sha256=jQyuwDQGRigSe7S9JMb4yK3CXPgZFJNffzt6N2v9PU0,21
|
|
125
126
|
iwa/tools/check_profile.py,sha256=0LAv9wx4wMM610mX88-6tIoDi2I5LDzh0W9nkprt42s,2177
|
|
126
|
-
iwa/tools/drain_accounts.py,sha256=
|
|
127
|
+
iwa/tools/drain_accounts.py,sha256=Xd0ephHENms2f5G7IotpFBazPpKrvXoRurctS7fYrc4,1760
|
|
127
128
|
iwa/tools/list_contracts.py,sha256=c7ugXfblJ47cC2n5ruGzBwN5DYWiZVJqKYqIttc_PMk,5013
|
|
128
129
|
iwa/tools/release.py,sha256=-Z9GG6Y-K6KG32K0VUf_MruiUdJxG6W7ToOMzhyCH7Y,3963
|
|
129
|
-
iwa/tools/reset_env.py,sha256=
|
|
130
|
+
iwa/tools/reset_env.py,sha256=UbstfM9zIVNyH_8Oa3T4rSixQLmueR903pRx_aEu_Pk,3833
|
|
130
131
|
iwa/tools/reset_tenderly.py,sha256=usKfOLrQvdCzEncueg-Sz3spqX80vHPQmbh2tIygo8o,11295
|
|
131
132
|
iwa/tools/restore_backup.py,sha256=_LJbmKv9SlekLUQFdjI3aHCvAc6uePobJe3bQEFyatk,2455
|
|
132
|
-
iwa/tools/test_chainlist.py,sha256=
|
|
133
|
+
iwa/tools/test_chainlist.py,sha256=CtSA1p-lUxhaJFqYL8LN20gyDiFwVgHmdyEbSJSxD0M,1167
|
|
133
134
|
iwa/tools/wallet_check.py,sha256=IQLgb8oCt4oG6FMEAqzUxM57DLv_UE24dFUSVxtBo_Y,4774
|
|
134
135
|
iwa/tui/__init__.py,sha256=XYIZNQNy-fZC1NHHM0sd9qUO0vE1slml-cm0CpQ4NLY,27
|
|
135
136
|
iwa/tui/app.py,sha256=XDQ4nAPGBwhrEmdL_e3V8oYSOho8pY7jsd3C_wk92UU,4163
|
|
@@ -138,7 +139,7 @@ iwa/tui/workers.py,sha256=lvzbIS375_H1rj7-9d-w0PKnkDJ4lW_13aWzZRaX9fY,1192
|
|
|
138
139
|
iwa/tui/modals/__init__.py,sha256=OyrjWjaPqQAllZcUJ-Ac_e1PtTouJy8m1eGo132p-EA,130
|
|
139
140
|
iwa/tui/modals/base.py,sha256=q9dEV6We_SPxbMRh711amFDwAOBywD00Qg0jcqvh5LE,12060
|
|
140
141
|
iwa/tui/screens/__init__.py,sha256=j0brLsuVd9M8hM5LHH05E7manY3ZVj24yf7nFyGryp4,31
|
|
141
|
-
iwa/tui/screens/wallets.py,sha256=
|
|
142
|
+
iwa/tui/screens/wallets.py,sha256=PJWDwXt3LYBaGny1DH0WtvWzMQGGgWR1kUzlEr8dLW8,30802
|
|
142
143
|
iwa/tui/tests/test_app.py,sha256=F0tJthsyWzwNbHcGtiyDQtKDPn3m9N1qt2vMGiXrQTQ,3868
|
|
143
144
|
iwa/tui/tests/test_rpc.py,sha256=4m2HC-R5R9kO5pluo2G_CrTBQv63YYrdZNufTjtnGUk,4330
|
|
144
145
|
iwa/tui/tests/test_wallets_refactor.py,sha256=71G3HLbhTtgDy3ffVbYv0MFYRgdYd-NWGBdvdzW4M9c,998
|
|
@@ -156,7 +157,7 @@ iwa/web/routers/olas/__init__.py,sha256=Jo6Dm1e8fHafCD800fbxsxeFz3tvuEEKXEf5-9tj
|
|
|
156
157
|
iwa/web/routers/olas/admin.py,sha256=PMRdNelqYgQ1xbqh3floFV5xrVtBRQiwZPd8J9_ffxg,5785
|
|
157
158
|
iwa/web/routers/olas/funding.py,sha256=f8fADNtbZEBFl-vuVKfas6os38Vot6K5tJBTenZmCD0,4832
|
|
158
159
|
iwa/web/routers/olas/general.py,sha256=dPsBQppTGoQY1RztliUhseOHOZGeeCR10lhThD9kyXo,803
|
|
159
|
-
iwa/web/routers/olas/services.py,sha256=
|
|
160
|
+
iwa/web/routers/olas/services.py,sha256=jDbxLUJBN48vs2-fXrIpxhPSM6quqYxggmMOkUVEIaI,18200
|
|
160
161
|
iwa/web/routers/olas/staking.py,sha256=jktJ2C1Q9X4aC0tWJByN3sHpEXY0EIvr3rr4N0MtXXc,14081
|
|
161
162
|
iwa/web/static/app.js,sha256=hBjUSivxf5Uyy2H6BR-rfdvF8e7qBoDPK23aY3dagNY,114418
|
|
162
163
|
iwa/web/static/index.html,sha256=q7s7plnMbN1Nkzr5bRxZgvgOFerUChEGIZW7SpAVtPc,28514
|
|
@@ -165,7 +166,7 @@ iwa/web/tests/test_web_endpoints.py,sha256=vA25YghHNB23sbmhD4ciesn_f_okSq0tjlkrS
|
|
|
165
166
|
iwa/web/tests/test_web_olas.py,sha256=0CVSsrncOeJ3x0ECV7mVLQV_CXZRrOqGiVjgLIi6hZ8,16308
|
|
166
167
|
iwa/web/tests/test_web_swap.py,sha256=7A4gBJFL01kIXPtW1E1J17SCsVc_0DmUn-R8kKrnnVA,2974
|
|
167
168
|
iwa/web/tests/test_web_swap_coverage.py,sha256=zGNrzlhZ_vWDCvWmLcoUwFgqxnrp_ACbo49AtWBS_Kw,5584
|
|
168
|
-
iwa-0.0.
|
|
169
|
+
iwa-0.0.60.dist-info/licenses/LICENSE,sha256=eIubm_IlBHPYRQlLNZKbBNKhJUUP3JH0A2miZUhAVfI,1078
|
|
169
170
|
tests/legacy_cow.py,sha256=oOkZvIxL70ReEoD9oHQbOD5GpjIr6AGNHcOCgfPlerU,8389
|
|
170
171
|
tests/legacy_safe.py,sha256=AssM2g13E74dNGODu_H0Q0y412lgqsrYnEzI97nm_Ts,2972
|
|
171
172
|
tests/legacy_transaction_retry_logic.py,sha256=D9RqZ7DBu61Xr2djBAodU2p9UE939LL-DnQXswX5iQk,1497
|
|
@@ -173,9 +174,9 @@ tests/legacy_tui.py,sha256=qu5-_C0H9dumElLFEWB71ACOgcA6bxbipgmWCBB12DM,15676
|
|
|
173
174
|
tests/legacy_wallets_screen.py,sha256=9hZnX-VhKgwH9w8MxbNdboRyNxLDhOakLKJECsw_vhc,19262
|
|
174
175
|
tests/legacy_web.py,sha256=q2ERIriaDHT3Q8axG2N3ucO7f2VSvV_WkuPR00DVko4,8577
|
|
175
176
|
tests/test_account_service.py,sha256=g_AIVT2jhlvUtbFTaCd-d15x4CmXJQaV66tlAgnaXwY,3745
|
|
176
|
-
tests/test_balance_service.py,sha256=
|
|
177
|
-
tests/test_chain.py,sha256=
|
|
178
|
-
tests/test_chain_interface.py,sha256=
|
|
177
|
+
tests/test_balance_service.py,sha256=wcuCOVszxPy8nPkldAVcEiygcOK3BuQt797fqAJvbp4,4979
|
|
178
|
+
tests/test_chain.py,sha256=VZoidSojWyt1y4mQdZdoZsjuuDZjLC6neTC-2SF_Q7I,13957
|
|
179
|
+
tests/test_chain_interface.py,sha256=bgqGM8wJGZjc-BOX6i0K4sh06KCJl-6UAvrwl8x24lA,8324
|
|
179
180
|
tests/test_chain_interface_coverage.py,sha256=fvrVvw8-DMwdsSFKQHUhpbfutrVRxnnTc-tjB7Bb-jo,3327
|
|
180
181
|
tests/test_cli.py,sha256=Pl4RC2xp1omiJUnL3Dza6pCmIoO29LJ0vGw33_ZpT5c,3980
|
|
181
182
|
tests/test_contract.py,sha256=tApHAxsfKGawYJWA9PhTNrOZUE0VVAq79ruIe3KxeWY,14412
|
|
@@ -193,16 +194,16 @@ tests/test_models.py,sha256=1bEfPiDVgEdtwFEzwecSPAHjCF8kjOPSMeQExJ7eCJ4,7107
|
|
|
193
194
|
tests/test_monitor.py,sha256=dRVS6EkTwfvGEOg7t0dVhs6M3oEZExBH7iBZe6hmk4M,7261
|
|
194
195
|
tests/test_multisend.py,sha256=IvXpwnC5xSDRCyCDGcMdO3L-eQegvdjAzHZB0FoVFUI,2685
|
|
195
196
|
tests/test_plugin_service.py,sha256=ZEe37kV_sv4Eb04032O1hZIoo9yf5gJo83ks7Grzrng,3767
|
|
196
|
-
tests/test_rate_limiter.py,sha256=
|
|
197
|
-
tests/test_rate_limiter_retry.py,sha256=
|
|
197
|
+
tests/test_rate_limiter.py,sha256=XDN22HWs85OicBpQ9zgHRnoJ1VMola_AOkobqp83dfs,7444
|
|
198
|
+
tests/test_rate_limiter_retry.py,sha256=Yq7Ik2r8VIYgPdlSN2tYbdA0ngrB37ZPimfkZkh9Cvk,4568
|
|
198
199
|
tests/test_reset_tenderly.py,sha256=GVoqbDT3n4_GnlKF5Lx-8ew15jT8I2hIPdTulQDb6dI,7215
|
|
199
|
-
tests/test_rpc_efficiency.py,sha256=
|
|
200
|
-
tests/test_rpc_rate_limit.py,sha256=
|
|
201
|
-
tests/test_rpc_rotation.py,sha256=
|
|
200
|
+
tests/test_rpc_efficiency.py,sha256=mNuCoa5r6lSEyTqcRX98oz-huoKMTUlKM2UcOHlTQ6M,3745
|
|
201
|
+
tests/test_rpc_rate_limit.py,sha256=3P_Nd9voFmz-4r_Et-vw8W-Esbq5elSYmRBSOtJGx1Y,1014
|
|
202
|
+
tests/test_rpc_rotation.py,sha256=a1cFKsf0fo-73_MSDnTuU6Zpv7bJHjrCVu3ANe8PXDU,12541
|
|
202
203
|
tests/test_rpc_view.py,sha256=sgZ53KEHl8VGb7WKYa0VI7Cdxbf8JH1SdroHYbWHjfQ,2031
|
|
203
204
|
tests/test_safe_coverage.py,sha256=KBxKz64XkK8CgN0N0LTNVKakf8Wg8EpghcBlLmDFmLs,6119
|
|
204
|
-
tests/test_safe_executor.py,sha256=
|
|
205
|
-
tests/test_safe_integration.py,sha256=
|
|
205
|
+
tests/test_safe_executor.py,sha256=V3ovBRY1lOuW5rm8rpm5Ns7jb-rgmHKHpz9pMTqz6c4,14448
|
|
206
|
+
tests/test_safe_integration.py,sha256=WWAKDio3N-CFyr5RRvphbOPdu3TI9WSM8IesfbFbvWQ,5363
|
|
206
207
|
tests/test_safe_service.py,sha256=5ULlj0fPZRwg-4fCBJplhm4Msr_Beof7W-Zf_JljZc8,5782
|
|
207
208
|
tests/test_service_manager_integration.py,sha256=I_BLUzEKrVTyg_8jqsUK0oFD3aQVPCRJ7z0gY8P-j04,2354
|
|
208
209
|
tests/test_service_manager_structure.py,sha256=zK506ucCXCBHcjPYKrKEuK1bgq0xsbawyL8Y-wahXf8,868
|
|
@@ -221,8 +222,8 @@ tests/test_utils.py,sha256=vkP49rYNI8BRzLpWR3WnKdDr8upeZjZcs7Rx0pjbQMo,1292
|
|
|
221
222
|
tests/test_workers.py,sha256=MInwdkFY5LdmFB3o1odIaSD7AQZb3263hNafO1De5PE,2793
|
|
222
223
|
tools/create_and_stake_service.py,sha256=1xwy_bJQI1j9yIQ968Oc9Db_F6mk1659LuuZntTASDE,3742
|
|
223
224
|
tools/verify_drain.py,sha256=PkMjblyOOAuQge88FwfEzRtCYeEtJxXhPBmtQYCoQ-8,6743
|
|
224
|
-
iwa-0.0.
|
|
225
|
-
iwa-0.0.
|
|
226
|
-
iwa-0.0.
|
|
227
|
-
iwa-0.0.
|
|
228
|
-
iwa-0.0.
|
|
225
|
+
iwa-0.0.60.dist-info/METADATA,sha256=BpkWW6DmPQhaX7fFo7LtVfNYg3thQWSMiMmR_yGApCc,7337
|
|
226
|
+
iwa-0.0.60.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
227
|
+
iwa-0.0.60.dist-info/entry_points.txt,sha256=nwB6kscrfA7M00pYmL2j-sBH6eF6h2ga9IK1BZxdiyQ,241
|
|
228
|
+
iwa-0.0.60.dist-info/top_level.txt,sha256=kedS9cRUbm4JE2wYeabIXilhHjN8KCw0IGbqqqsw0Bs,16
|
|
229
|
+
iwa-0.0.60.dist-info/RECORD,,
|
tests/test_balance_service.py
CHANGED
|
@@ -131,8 +131,6 @@ def test_get_erc20_balance_wei_account_not_found(
|
|
|
131
131
|
assert result is None
|
|
132
132
|
|
|
133
133
|
|
|
134
|
-
|
|
135
|
-
|
|
136
134
|
def test_balance_service_with_wallet(mock_account_service):
|
|
137
135
|
"""Test BalanceService initialization with Wallet (has key_storage attr)."""
|
|
138
136
|
from iwa.core.services.balance import BalanceService
|
tests/test_chain.py
CHANGED
|
@@ -155,7 +155,7 @@ def test_calculate_transaction_params(mock_web3):
|
|
|
155
155
|
ci.web3.eth.gas_price = 20
|
|
156
156
|
|
|
157
157
|
# Mock for EIP-1559 check (disable it for simple test)
|
|
158
|
-
ci.web3.eth.get_block.return_value = {}
|
|
158
|
+
ci.web3.eth.get_block.return_value = {} # No baseFeePerGas
|
|
159
159
|
|
|
160
160
|
with patch.object(ci, "estimate_gas", return_value=1000):
|
|
161
161
|
params = ci.calculate_transaction_params(MagicMock(), {"from": "0xSender"})
|
|
@@ -326,7 +326,6 @@ def test_chain_interface_with_real_chains():
|
|
|
326
326
|
# --- Negative Tests ---
|
|
327
327
|
|
|
328
328
|
|
|
329
|
-
|
|
330
329
|
def test_get_token_symbol_fallback_on_error(mock_web3):
|
|
331
330
|
"""Test get_token_symbol returns truncated address on error."""
|
|
332
331
|
chain = MagicMock(spec=SupportedChain)
|
tests/test_chain_interface.py
CHANGED
|
@@ -201,10 +201,10 @@ def test_is_tenderly_property():
|
|
|
201
201
|
|
|
202
202
|
|
|
203
203
|
def test_reset_rpc_failure_counts(mock_chain_interface):
|
|
204
|
-
"""Test resetting
|
|
204
|
+
"""Test resetting backoff tracking."""
|
|
205
205
|
interface, _ = mock_chain_interface
|
|
206
|
-
interface.
|
|
206
|
+
interface._rpc_backoff_until = {0: 99999.0, 1: 99999.0}
|
|
207
207
|
|
|
208
208
|
interface.reset_rpc_failure_counts()
|
|
209
209
|
|
|
210
|
-
assert interface.
|
|
210
|
+
assert interface._rpc_backoff_until == {}
|