iwa 0.0.23__tar.gz → 0.0.25__tar.gz

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 (222) hide show
  1. {iwa-0.0.23/src/iwa.egg-info → iwa-0.0.25}/PKG-INFO +1 -1
  2. {iwa-0.0.23 → iwa-0.0.25}/pyproject.toml +2 -2
  3. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/importer.py +2 -6
  4. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/plugin.py +5 -5
  5. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_plugin_full.py +7 -5
  6. {iwa-0.0.23 → iwa-0.0.25/src/iwa.egg-info}/PKG-INFO +1 -1
  7. {iwa-0.0.23 → iwa-0.0.25}/LICENSE +0 -0
  8. {iwa-0.0.23 → iwa-0.0.25}/README.md +0 -0
  9. {iwa-0.0.23 → iwa-0.0.25}/setup.cfg +0 -0
  10. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/__init__.py +0 -0
  11. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/__main__.py +0 -0
  12. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/__init__.py +0 -0
  13. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/chain/__init__.py +0 -0
  14. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/chain/errors.py +0 -0
  15. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/chain/interface.py +0 -0
  16. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/chain/manager.py +0 -0
  17. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/chain/models.py +0 -0
  18. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/chain/rate_limiter.py +0 -0
  19. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/chainlist.py +0 -0
  20. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/cli.py +0 -0
  21. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/constants.py +0 -0
  22. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/contracts/__init__.py +0 -0
  23. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/contracts/abis/erc20.json +0 -0
  24. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/contracts/abis/multisend.json +0 -0
  25. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/contracts/abis/multisend_call_only.json +0 -0
  26. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/contracts/cache.py +0 -0
  27. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/contracts/contract.py +0 -0
  28. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/contracts/erc20.py +0 -0
  29. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/contracts/multisend.py +0 -0
  30. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/db.py +0 -0
  31. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/ipfs.py +0 -0
  32. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/keys.py +0 -0
  33. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/mnemonic.py +0 -0
  34. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/models.py +0 -0
  35. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/monitor.py +0 -0
  36. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/plugins.py +0 -0
  37. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/pricing.py +0 -0
  38. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/rpc_monitor.py +0 -0
  39. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/secrets.py +0 -0
  40. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/services/__init__.py +0 -0
  41. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/services/account.py +0 -0
  42. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/services/balance.py +0 -0
  43. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/services/plugin.py +0 -0
  44. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/services/safe.py +0 -0
  45. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/services/transaction.py +0 -0
  46. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/services/transfer/__init__.py +0 -0
  47. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/services/transfer/base.py +0 -0
  48. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/services/transfer/erc20.py +0 -0
  49. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/services/transfer/multisend.py +0 -0
  50. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/services/transfer/native.py +0 -0
  51. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/services/transfer/swap.py +0 -0
  52. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/tables.py +0 -0
  53. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/test.py +0 -0
  54. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/tests/test_wallet.py +0 -0
  55. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/types.py +0 -0
  56. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/ui.py +0 -0
  57. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/utils.py +0 -0
  58. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/core/wallet.py +0 -0
  59. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/__init__.py +0 -0
  60. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/gnosis/__init__.py +0 -0
  61. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/gnosis/cow/__init__.py +0 -0
  62. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/gnosis/cow/quotes.py +0 -0
  63. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/gnosis/cow/swap.py +0 -0
  64. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/gnosis/cow/types.py +0 -0
  65. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/gnosis/cow_utils.py +0 -0
  66. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/gnosis/plugin.py +0 -0
  67. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/gnosis/safe.py +0 -0
  68. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/gnosis/tests/test_cow.py +0 -0
  69. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/gnosis/tests/test_safe.py +0 -0
  70. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/__init__.py +0 -0
  71. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/constants.py +0 -0
  72. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/contracts/abis/activity_checker.json +0 -0
  73. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/contracts/abis/mech.json +0 -0
  74. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/contracts/abis/mech_marketplace.json +0 -0
  75. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/contracts/abis/mech_marketplace_v1.json +0 -0
  76. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/contracts/abis/mech_new.json +0 -0
  77. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/contracts/abis/service_manager.json +0 -0
  78. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/contracts/abis/service_registry.json +0 -0
  79. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/contracts/abis/service_registry_token_utility.json +0 -0
  80. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/contracts/abis/staking.json +0 -0
  81. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/contracts/abis/staking_token.json +0 -0
  82. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/contracts/activity_checker.py +0 -0
  83. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/contracts/base.py +0 -0
  84. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/contracts/mech.py +0 -0
  85. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/contracts/mech_marketplace.py +0 -0
  86. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/contracts/mech_marketplace_v1.py +0 -0
  87. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/contracts/service.py +0 -0
  88. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/contracts/staking.py +0 -0
  89. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/events.py +0 -0
  90. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/mech_reference.py +0 -0
  91. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/models.py +0 -0
  92. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/scripts/test_full_mech_flow.py +0 -0
  93. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/scripts/test_simple_lifecycle.py +0 -0
  94. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/service_manager/__init__.py +0 -0
  95. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/service_manager/base.py +0 -0
  96. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/service_manager/drain.py +0 -0
  97. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/service_manager/lifecycle.py +0 -0
  98. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/service_manager/mech.py +0 -0
  99. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/service_manager/staking.py +0 -0
  100. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/conftest.py +0 -0
  101. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_importer.py +0 -0
  102. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_importer_error_handling.py +0 -0
  103. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_mech_contracts.py +0 -0
  104. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_olas_contracts.py +0 -0
  105. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_olas_integration.py +0 -0
  106. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_olas_models.py +0 -0
  107. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_olas_view.py +0 -0
  108. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_olas_view_actions.py +0 -0
  109. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_olas_view_modals.py +0 -0
  110. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_plugin.py +0 -0
  111. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_service_lifecycle.py +0 -0
  112. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_service_manager.py +0 -0
  113. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_service_manager_errors.py +0 -0
  114. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_service_manager_flows.py +0 -0
  115. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_service_manager_mech.py +0 -0
  116. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_service_manager_rewards.py +0 -0
  117. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_service_manager_validation.py +0 -0
  118. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_service_staking.py +0 -0
  119. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_staking_integration.py +0 -0
  120. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tests/test_staking_validation.py +0 -0
  121. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tui/__init__.py +0 -0
  122. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/plugins/olas/tui/olas_view.py +0 -0
  123. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tools/__init__.py +0 -0
  124. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tools/check_profile.py +0 -0
  125. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tools/list_contracts.py +0 -0
  126. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tools/release.py +0 -0
  127. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tools/reset_env.py +0 -0
  128. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tools/reset_tenderly.py +0 -0
  129. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tools/restore_backup.py +0 -0
  130. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tools/test_chainlist.py +0 -0
  131. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tools/wallet_check.py +0 -0
  132. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tui/__init__.py +0 -0
  133. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tui/app.py +0 -0
  134. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tui/modals/__init__.py +0 -0
  135. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tui/modals/base.py +0 -0
  136. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tui/rpc.py +0 -0
  137. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tui/screens/__init__.py +0 -0
  138. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tui/screens/wallets.py +0 -0
  139. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tui/tests/test_app.py +0 -0
  140. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tui/tests/test_rpc.py +0 -0
  141. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tui/tests/test_wallets_refactor.py +0 -0
  142. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tui/tests/test_widgets.py +0 -0
  143. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tui/widgets/__init__.py +0 -0
  144. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tui/widgets/base.py +0 -0
  145. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/tui/workers.py +0 -0
  146. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/dependencies.py +0 -0
  147. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/models.py +0 -0
  148. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/routers/accounts.py +0 -0
  149. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/routers/olas/__init__.py +0 -0
  150. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/routers/olas/admin.py +0 -0
  151. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/routers/olas/funding.py +0 -0
  152. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/routers/olas/general.py +0 -0
  153. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/routers/olas/services.py +0 -0
  154. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/routers/olas/staking.py +0 -0
  155. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/routers/state.py +0 -0
  156. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/routers/swap.py +0 -0
  157. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/routers/transactions.py +0 -0
  158. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/server.py +0 -0
  159. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/static/app.js +0 -0
  160. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/static/index.html +0 -0
  161. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/static/style.css +0 -0
  162. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/tests/test_web_endpoints.py +0 -0
  163. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/tests/test_web_olas.py +0 -0
  164. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/tests/test_web_swap.py +0 -0
  165. {iwa-0.0.23 → iwa-0.0.25}/src/iwa/web/tests/test_web_swap_coverage.py +0 -0
  166. {iwa-0.0.23 → iwa-0.0.25}/src/iwa.egg-info/SOURCES.txt +0 -0
  167. {iwa-0.0.23 → iwa-0.0.25}/src/iwa.egg-info/dependency_links.txt +0 -0
  168. {iwa-0.0.23 → iwa-0.0.25}/src/iwa.egg-info/entry_points.txt +0 -0
  169. {iwa-0.0.23 → iwa-0.0.25}/src/iwa.egg-info/requires.txt +0 -0
  170. {iwa-0.0.23 → iwa-0.0.25}/src/iwa.egg-info/top_level.txt +0 -0
  171. {iwa-0.0.23 → iwa-0.0.25}/src/tests/legacy_cow.py +0 -0
  172. {iwa-0.0.23 → iwa-0.0.25}/src/tests/legacy_safe.py +0 -0
  173. {iwa-0.0.23 → iwa-0.0.25}/src/tests/legacy_transaction_retry_logic.py +0 -0
  174. {iwa-0.0.23 → iwa-0.0.25}/src/tests/legacy_tui.py +0 -0
  175. {iwa-0.0.23 → iwa-0.0.25}/src/tests/legacy_wallets_screen.py +0 -0
  176. {iwa-0.0.23 → iwa-0.0.25}/src/tests/legacy_web.py +0 -0
  177. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_account_service.py +0 -0
  178. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_balance_service.py +0 -0
  179. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_chain.py +0 -0
  180. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_chain_interface.py +0 -0
  181. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_chain_interface_coverage.py +0 -0
  182. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_cli.py +0 -0
  183. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_contract.py +0 -0
  184. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_db.py +0 -0
  185. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_drain_coverage.py +0 -0
  186. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_erc20.py +0 -0
  187. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_gnosis_plugin.py +0 -0
  188. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_keys.py +0 -0
  189. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_legacy_wallet.py +0 -0
  190. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_main.py +0 -0
  191. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_migration.py +0 -0
  192. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_mnemonic.py +0 -0
  193. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_modals.py +0 -0
  194. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_models.py +0 -0
  195. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_monitor.py +0 -0
  196. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_multisend.py +0 -0
  197. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_plugin_service.py +0 -0
  198. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_pricing.py +0 -0
  199. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_rate_limiter.py +0 -0
  200. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_reset_tenderly.py +0 -0
  201. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_rpc_efficiency.py +0 -0
  202. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_rpc_rotation.py +0 -0
  203. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_rpc_view.py +0 -0
  204. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_safe_coverage.py +0 -0
  205. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_safe_service.py +0 -0
  206. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_service_manager_integration.py +0 -0
  207. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_service_manager_structure.py +0 -0
  208. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_service_transaction.py +0 -0
  209. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_staking_router.py +0 -0
  210. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_staking_simple.py +0 -0
  211. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_tables.py +0 -0
  212. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_transaction_service.py +0 -0
  213. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_transfer_multisend.py +0 -0
  214. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_transfer_native.py +0 -0
  215. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_transfer_security.py +0 -0
  216. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_transfer_structure.py +0 -0
  217. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_transfer_swap_unit.py +0 -0
  218. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_ui_coverage.py +0 -0
  219. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_utils.py +0 -0
  220. {iwa-0.0.23 → iwa-0.0.25}/src/tests/test_workers.py +0 -0
  221. {iwa-0.0.23 → iwa-0.0.25}/src/tools/create_and_stake_service.py +0 -0
  222. {iwa-0.0.23 → iwa-0.0.25}/src/tools/verify_drain.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iwa
3
- Version: 0.0.23
3
+ Version: 0.0.25
4
4
  Summary: A secure, modular, and plugin-based framework for crypto agents and ops
5
5
  Requires-Python: <4.0,>=3.12
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "iwa"
3
- version = "0.0.23"
3
+ version = "0.0.25"
4
4
  description = "A secure, modular, and plugin-based framework for crypto agents and ops"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12,<4.0"
@@ -71,7 +71,7 @@ where = ["src"]
71
71
 
72
72
  [tool.ruff]
73
73
  line-length = 100
74
- target-version = "0.0.23"
74
+ target-version = "0.0.25"
75
75
  fix = true
76
76
 
77
77
  [tool.ruff.lint]
@@ -7,6 +7,7 @@ Supports two formats:
7
7
  """
8
8
 
9
9
  import json
10
+ import re
10
11
  from dataclasses import dataclass, field
11
12
  from pathlib import Path
12
13
  from typing import List, Optional, Tuple
@@ -273,7 +274,6 @@ class OlasServiceImporter:
273
274
  key = self._parse_keystore_file(operator_file, role="owner")
274
275
  if key:
275
276
  keys.append(key)
276
- self._verify_key_signature(key)
277
277
 
278
278
  # Also check keys.json (array of keystores)
279
279
  keys_file = folder / "keys.json"
@@ -793,8 +793,6 @@ class OlasServiceImporter:
793
793
  Tags follow the pattern: {service_name}_{role}
794
794
  Example: trader_alpha_agent, trader_alpha_operator
795
795
  """
796
- import re
797
-
798
796
  # Use service name as prefix, or 'imported' as fallback
799
797
  prefix = service_name or "imported"
800
798
 
@@ -835,7 +833,6 @@ class OlasServiceImporter:
835
833
  signers.append(key.address)
836
834
 
837
835
  # Generate tag
838
- import re
839
836
 
840
837
  prefix = service.service_name or "imported"
841
838
  prefix = re.sub(r"[^a-z0-9]+", "_", prefix.lower()).strip("_")
@@ -898,7 +895,7 @@ class OlasServiceImporter:
898
895
  olas_service.agent_address = agent_key.address
899
896
 
900
897
  olas_config.add_service(olas_service)
901
- self.config.save()
898
+ self.config.save_config()
902
899
  logger.info(f"Imported service {key}")
903
900
  return True, "ok"
904
901
 
@@ -924,7 +921,6 @@ class OlasServiceImporter:
924
921
  except ValueError as e:
925
922
  # Password incorrect
926
923
  logger.warning(f"Decryption failed (ValueError) for {key.address}: {e}")
927
- pass
928
924
  except Exception as e:
929
925
  logger.warning(f"Error decrypting key {key.address}: {type(e).__name__} - {e}")
930
926
 
@@ -269,9 +269,9 @@ class OlasPlugin(Plugin):
269
269
  # Scan directory
270
270
  console.print(f"\n[bold]Scanning[/bold] {path}...")
271
271
 
272
- # Ask for password in dry-run to allow signature verification of encrypted keys
273
- if dry_run and not password:
274
- password = self._prompt_dry_run_password()
272
+ # Ask for password before scan to allow signature verification of encrypted keys
273
+ if not password:
274
+ password = self._prompt_password_for_verification()
275
275
 
276
276
  importer = OlasServiceImporter(password=password)
277
277
  discovered = importer.scan_directory(Path(path))
@@ -306,8 +306,8 @@ class OlasPlugin(Plugin):
306
306
  results = self._import_and_print_results(console, importer, discovered, password)
307
307
  self._print_import_summary(console, *results)
308
308
 
309
- def _prompt_dry_run_password(self) -> Optional[str]:
310
- """Prompt for password during dry-run."""
309
+ def _prompt_password_for_verification(self) -> Optional[str]:
310
+ """Prompt for password to verify encrypted keys during scan."""
311
311
  pwd = typer.prompt(
312
312
  "Enter wallet password to verify encrypted keys (optional, press Enter to skip)",
313
313
  hide_input=True,
@@ -146,8 +146,8 @@ def test_import_services_cli_abort(plugin, runner):
146
146
  DiscoveredService(service_id=1, service_name="Test", chain_name="gnosis")
147
147
  ]
148
148
 
149
- # Simulate 'n' to confirmation prompt
150
- result = runner.invoke(app, ["/tmp/test"], input="n\n")
149
+ # input: first Enter to skip password prompt, then 'n' to abort confirmation
150
+ result = runner.invoke(app, ["/tmp/test"], input="\nn\n")
151
151
  assert result.exit_code == 0
152
152
  assert "Aborted" in result.output
153
153
  mock_importer.import_service.assert_not_called()
@@ -162,7 +162,8 @@ def test_import_services_cli_no_services(plugin, runner):
162
162
  mock_importer = mock_importer_cls.return_value
163
163
  mock_importer.scan_directory.return_value = []
164
164
 
165
- result = runner.invoke(app, ["/tmp/test"])
165
+ # input: Enter to skip password prompt
166
+ result = runner.invoke(app, ["/tmp/test"], input="\n")
166
167
  assert result.exit_code == 0
167
168
  assert "No Olas services found" in result.output
168
169
 
@@ -208,8 +209,9 @@ def test_import_services_cli_password_prompt(plugin, runner):
208
209
  mock_importer.scan_directory.return_value = [service]
209
210
  mock_importer.import_service.return_value = ImportResult(success=True, message="OK")
210
211
 
211
- # input="y\nsecret\n" -> 'y' for confirm import, 'secret' for password prompt
212
- result = runner.invoke(app, ["/tmp/test"], input="y\nsecret\n")
212
+ # input: 'secret' for password before scan, 'y' for confirm import
213
+ # Note: password is now prompted BEFORE scan for signature verification
214
+ result = runner.invoke(app, ["/tmp/test"], input="secret\ny\n")
213
215
  assert result.exit_code == 0
214
216
  assert "password" in result.output.lower()
215
217
  mock_importer.import_service.assert_called_with(service, "secret")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iwa
3
- Version: 0.0.23
3
+ Version: 0.0.25
4
4
  Summary: A secure, modular, and plugin-based framework for crypto agents and ops
5
5
  Requires-Python: <4.0,>=3.12
6
6
  Description-Content-Type: text/markdown
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes