ipor-fusion 4.0.0.dev139__tar.gz → 4.0.0.dev144__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 (299) hide show
  1. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/AGENTS.md +10 -5
  2. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/MIGRATION_4.md +13 -10
  3. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/PKG-INFO +1 -1
  4. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/pyproject.toml +1 -1
  5. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/readers/oracle_mapping.py +2 -2
  6. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_docs_typing.py +5 -1
  7. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/.claude-plugin/marketplace.json +0 -0
  8. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/.claude-plugin/plugin.json +0 -0
  9. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/.env.example +0 -0
  10. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/.gemini/settings.json +0 -0
  11. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/.git-blame-ignore-revs +0 -0
  12. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/.github/workflows/cd.yml +0 -0
  13. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/.github/workflows/ci.yml +0 -0
  14. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/.github/workflows/commit-lint.yml +0 -0
  15. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/.github/workflows/notify-slack.yml +0 -0
  16. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/.github/workflows/python-build.yml +0 -0
  17. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/.github/workflows/python-publish.yml +0 -0
  18. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/.github/workflows/release.yml +0 -0
  19. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/.github/workflows/report-slack.yml +0 -0
  20. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/.gitignore +0 -0
  21. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/.mcp.json +0 -0
  22. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/.pre-commit-config.yaml +0 -0
  23. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/.python-version +0 -0
  24. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/CHANGELOG.md +0 -0
  25. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/CLAUDE.md +0 -0
  26. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/CODEOWNERS +0 -0
  27. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/LICENSE +0 -0
  28. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/README.md +0 -0
  29. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/build.sh +0 -0
  30. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/examples/CONTRIBUTING.md +0 -0
  31. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/examples/README.md +0 -0
  32. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/examples/advanced_euler_v2_credit_market_base.py +0 -0
  33. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/examples/advanced_euler_v2_looping_arbitrum.py +0 -0
  34. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/examples/composed_hypercore_flow_arbitrum_hyperevm.py +0 -0
  35. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/examples/crosschain_ccip_usdc_arbitrum_hyperevm.py +0 -0
  36. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/examples/external_state_margin_leg_base.py +0 -0
  37. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/examples/simple_aave_v3_supply_base.py +0 -0
  38. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/pytest.ini +0 -0
  39. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/scripts/commit-check.sh +0 -0
  40. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/scripts/crosschain_readiness.py +0 -0
  41. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/skills/ipor-deploy-vault/SKILL.md +0 -0
  42. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/__init__.py +0 -0
  43. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/about.py +0 -0
  44. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/cache.py +0 -0
  45. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/chains.py +0 -0
  46. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/cli/__init__.py +0 -0
  47. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/cli/changelog_cmd.py +0 -0
  48. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/cli/config_cmd.py +0 -0
  49. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/cli/config_store.py +0 -0
  50. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/cli/main.py +0 -0
  51. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/cli/market_cmd.py +0 -0
  52. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/cli/options.py +0 -0
  53. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/cli/oracle_mapping_view.py +0 -0
  54. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/cli/vault_cmd.py +0 -0
  55. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/cli/vault_health.py +0 -0
  56. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/cli/vault_info_view.py +0 -0
  57. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/cli/vault_markets_view.py +0 -0
  58. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/cli/vault_rendering.py +0 -0
  59. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/config/__init__.py +0 -0
  60. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/config/roles.py +0 -0
  61. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/core/__init__.py +0 -0
  62. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/core/access.py +0 -0
  63. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/core/address.py +0 -0
  64. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/core/context.py +0 -0
  65. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/core/contract.py +0 -0
  66. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/core/erc20.py +0 -0
  67. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/core/external_state_executor.py +0 -0
  68. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/core/fee_manager.py +0 -0
  69. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/core/fuse.py +0 -0
  70. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/core/fuse_action.py +0 -0
  71. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/core/fusion_factory.py +0 -0
  72. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/core/logs.py +0 -0
  73. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/core/multicall.py +0 -0
  74. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/core/oracle.py +0 -0
  75. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/core/plasma_vault.py +0 -0
  76. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/core/rewards_manager.py +0 -0
  77. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/core/simulation.py +0 -0
  78. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/core/withdraw_manager.py +0 -0
  79. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/__init__.py +0 -0
  80. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/ccip/__init__.py +0 -0
  81. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/ccip/chainlink.py +0 -0
  82. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/ccip/codec.py +0 -0
  83. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/ccip/contracts.py +0 -0
  84. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/ccip/events.py +0 -0
  85. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/ccip/indexer.py +0 -0
  86. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/ccip/lane.py +0 -0
  87. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/ccip/quote.py +0 -0
  88. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/ccip/transport.py +0 -0
  89. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/contracts.py +0 -0
  90. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/discovery.py +0 -0
  91. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/errors.py +0 -0
  92. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/fuses/__init__.py +0 -0
  93. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/fuses/base.py +0 -0
  94. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/fuses/ccip.py +0 -0
  95. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/fuses/stargate.py +0 -0
  96. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/lane.py +0 -0
  97. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/logs.py +0 -0
  98. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/messages.py +0 -0
  99. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/simulation.py +0 -0
  100. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/stargate/__init__.py +0 -0
  101. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/stargate/contracts.py +0 -0
  102. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/stargate/lane.py +0 -0
  103. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/stargate/layerzero.py +0 -0
  104. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/stargate/transport.py +0 -0
  105. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/crosschain/transport.py +0 -0
  106. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/dependency_graph.py +0 -0
  107. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/entry_cli.py +0 -0
  108. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/entry_mcp.py +0 -0
  109. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/errors.py +0 -0
  110. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/explorer.py +0 -0
  111. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/field_docs.py +0 -0
  112. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/fuses/__init__.py +0 -0
  113. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/fuses/aave_v3.py +0 -0
  114. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/fuses/async_action.py +0 -0
  115. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/fuses/base.py +0 -0
  116. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/fuses/compound_v3.py +0 -0
  117. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/fuses/erc4626.py +0 -0
  118. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/fuses/euler_v2.py +0 -0
  119. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/fuses/events.py +0 -0
  120. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/fuses/external_state.py +0 -0
  121. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/fuses/external_state_events.py +0 -0
  122. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/fuses/fluid_instadapp.py +0 -0
  123. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/fuses/gearbox_v3.py +0 -0
  124. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/fuses/hypercore.py +0 -0
  125. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/fuses/hypercore_events.py +0 -0
  126. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/fuses/merkl.py +0 -0
  127. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/fuses/morpho.py +0 -0
  128. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/fuses/ramses_v2.py +0 -0
  129. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/fuses/uniswap_v3.py +0 -0
  130. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/fuses/universal.py +0 -0
  131. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/guide/__init__.py +0 -0
  132. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/guide/architecture.md +0 -0
  133. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/guide/glossary.md +0 -0
  134. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/guide/invariants.md +0 -0
  135. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/guide/quickstart.md +0 -0
  136. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/market_ids.py +0 -0
  137. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/market_info.py +0 -0
  138. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/mcp/__init__.py +0 -0
  139. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/mcp/guide.py +0 -0
  140. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/mcp/models.py +0 -0
  141. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/mcp/server.py +0 -0
  142. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/morpho_api.py +0 -0
  143. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/py.typed +0 -0
  144. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/readers/__init__.py +0 -0
  145. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/readers/aave_v3.py +0 -0
  146. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/readers/aave_v4.py +0 -0
  147. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/readers/compound_v3.py +0 -0
  148. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/readers/hypercore.py +0 -0
  149. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/readers/hypercore_outcome.py +0 -0
  150. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/readers/lending_health.py +0 -0
  151. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/readers/morpho.py +0 -0
  152. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/readers/oracle_mapping_nodes.py +0 -0
  153. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/readers/oracle_mapping_reader.py +0 -0
  154. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/readers/position_manager.py +0 -0
  155. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/readers/ramses_v2.py +0 -0
  156. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/readers/uniswap_v3.py +0 -0
  157. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/readers/unpriceable.py +0 -0
  158. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/substrates.py +0 -0
  159. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/types.py +0 -0
  160. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/validation.py +0 -0
  161. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/vault_data.py +0 -0
  162. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/vault_erc20.py +0 -0
  163. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/vault_info.py +0 -0
  164. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/vault_managers.py +0 -0
  165. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/vault_positions.py +0 -0
  166. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/src/ipor_fusion/vault_reads.py +0 -0
  167. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/UniswapV3UniversalRouter.py +0 -0
  168. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/_crosschain.py +0 -0
  169. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/_crosschain_lifecycle.py +0 -0
  170. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/_crosschain_recovery.py +0 -0
  171. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/_euler_v2.py +0 -0
  172. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/_foundry.py +0 -0
  173. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/_guide.py +0 -0
  174. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/_hypercore_model.py +0 -0
  175. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/_hypercore_shadow.py +0 -0
  176. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/_multicall.py +0 -0
  177. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/_simulate.py +0 -0
  178. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/_validation.py +0 -0
  179. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/addresses.py +0 -0
  180. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/conftest.py +0 -0
  181. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/constants.py +0 -0
  182. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/fixtures/hypercore_hip3_flow.json +0 -0
  183. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/fixtures/hypercore_market55.json +0 -0
  184. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/fixtures/vault_info_golden/clean.json +0 -0
  185. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/fixtures/vault_info_golden/clean.txt +0 -0
  186. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/fixtures/vault_info_golden/rich.json +0 -0
  187. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/fixtures/vault_info_golden/rich.txt +0 -0
  188. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_about.py +0 -0
  189. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_access_manager.py +0 -0
  190. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_cache.py +0 -0
  191. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_chains.py +0 -0
  192. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_cli_changelog.py +0 -0
  193. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_cli_commands.py +0 -0
  194. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_cli_config_store.py +0 -0
  195. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_cli_helpers.py +0 -0
  196. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_cli_hypercore.py +0 -0
  197. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_cli_lending_health.py +0 -0
  198. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_cli_market_morpho_blue.py +0 -0
  199. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_cli_oracle_mapping.py +0 -0
  200. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_cli_pending_requests_scan.py +0 -0
  201. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_cli_role_accounts.py +0 -0
  202. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_cli_vault_info_golden.py +0 -0
  203. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_cli_vault_predates_getters.py +0 -0
  204. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_cli_vault_validate.py +0 -0
  205. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_contract_call.py +0 -0
  206. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_contract_encoder.py +0 -0
  207. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_crosschain_ccip_events.py +0 -0
  208. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_crosschain_ccip_indexer.py +0 -0
  209. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_crosschain_ccip_quote.py +0 -0
  210. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_crosschain_chainlink.py +0 -0
  211. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_crosschain_contracts.py +0 -0
  212. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_crosschain_encoding.py +0 -0
  213. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_crosschain_errors.py +0 -0
  214. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_crosschain_lane.py +0 -0
  215. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_crosschain_layering.py +0 -0
  216. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_crosschain_readiness.py +0 -0
  217. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_crosschain_readiness_report.py +0 -0
  218. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_crosschain_transport.py +0 -0
  219. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_erc20.py +0 -0
  220. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_error_hierarchy.py +0 -0
  221. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_examples_composed_hypercore.py +0 -0
  222. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_examples_crosschain.py +0 -0
  223. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_examples_euler_looping_arbitrum.py +0 -0
  224. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_examples_vaults.py +0 -0
  225. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_explorer.py +0 -0
  226. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_external_state_events.py +0 -0
  227. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_external_state_executor.py +0 -0
  228. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_fee_manager.py +0 -0
  229. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_fuse_encoding.py +0 -0
  230. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_fusion_instance.py +0 -0
  231. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_guide.py +0 -0
  232. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_hypercore_deployment.py +0 -0
  233. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_hypercore_events.py +0 -0
  234. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_hypercore_flow.py +0 -0
  235. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_hypercore_live.py +0 -0
  236. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_hypercore_outcome.py +0 -0
  237. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_hypercore_readers.py +0 -0
  238. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_hypercore_simulation.py +0 -0
  239. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_logs.py +0 -0
  240. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_mcp_hypercore.py +0 -0
  241. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_mcp_models.py +0 -0
  242. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_mcp_server.py +0 -0
  243. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_mcp_vault_validate.py +0 -0
  244. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_multicall.py +0 -0
  245. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_oracle.py +0 -0
  246. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_oracle_mapping.py +0 -0
  247. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_plasma_vault.py +0 -0
  248. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_public_api.py +0 -0
  249. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_public_type_reachability.py +0 -0
  250. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_reader_encoding.py +0 -0
  251. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_readiness_selection.py +0 -0
  252. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_revert_decoding.py +0 -0
  253. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_rewards_manager.py +0 -0
  254. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_roles.py +0 -0
  255. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_sdk_layering.py +0 -0
  256. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_borrow_aave_v3_mainnet.py +0 -0
  257. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_claim_merkl_wrapper_base.py +0 -0
  258. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_claim_morpho_rewards.py +0 -0
  259. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_crosschain_canary.py +0 -0
  260. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_crosschain_hypercore.py +0 -0
  261. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_crosschain_hyperevm.py +0 -0
  262. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_crosschain_lifecycle.py +0 -0
  263. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_euler_v2_batch_base.py +0 -0
  264. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_euler_v2_credit_market_base.py +0 -0
  265. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_euler_v2_swap_deploy_base.py +0 -0
  266. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_euler_v2_swap_reconfigure_base.py +0 -0
  267. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_euler_v2_swap_registry_base.py +0 -0
  268. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_examples_arbitrum.py +0 -0
  269. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_examples_base.py +0 -0
  270. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_examples_crosschain.py +0 -0
  271. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_external_state_executor_base.py +0 -0
  272. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_fusion_factory_clone_base.py +0 -0
  273. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_looping_aave_v3_base.py +0 -0
  274. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_looping_morpho_blue_base.py +0 -0
  275. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_morpho_blue.py +0 -0
  276. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_pilot_v3.py +0 -0
  277. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_pilot_v4_uniswap.py +0 -0
  278. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_pilot_v5_ramses.py +0 -0
  279. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_pilot_v5_scheduled.py +0 -0
  280. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_plasma_vault_setters_base.py +0 -0
  281. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_readers_integration.py +0 -0
  282. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_release_funds.py +0 -0
  283. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_swap_on_base.py +0 -0
  284. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_simulate_vault_from_scratch_base.py +0 -0
  285. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_solidity_compiler.py +0 -0
  286. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_solidity_mirrors.py +0 -0
  287. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_substrates.py +0 -0
  288. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_types_and_events.py +0 -0
  289. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_unpriceable_tokens.py +0 -0
  290. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_validation.py +0 -0
  291. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_vault_dep_graph.py +0 -0
  292. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_vault_info_onchain_base.py +0 -0
  293. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_vault_info_onchain_base_no_withdraw_manager.py +0 -0
  294. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_vault_simulator_blocks.py +0 -0
  295. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_web3_context.py +0 -0
  296. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/test_withdraw_manager.py +0 -0
  297. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/typed_client/consumer.py +0 -0
  298. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/tests/typed_client/rejected.py +0 -0
  299. {ipor_fusion-4.0.0.dev139 → ipor_fusion-4.0.0.dev144}/uv.lock +0 -0
@@ -141,11 +141,16 @@ the lifecycle matrix follows that.
141
141
  it is pinned exactly (`ipor-fusion==3.17.0.dev4`); pip also takes it when
142
142
  no stable release satisfies the specifier (`>=3.17` before 3.17.0). `fusion
143
143
  changelog` has no section for a dev version.
144
- - Release notes render only the commit subject; body prose is dropped. Two
145
- footers survive: `BREAKING CHANGE: <what breaks, what to do instead>` is
146
- required whenever the subject carries `!` (the `!` bumps the version but
147
- renders nothing), and `NOTICE: <what the reader must do>` is for changes that
148
- need action (a migration, a new env var or config key). Omit it otherwise.
144
+ - Release notes (CHANGELOG.md and the GitHub release) render only commit
145
+ subjects. python-semantic-release's default template (10.5.3) shows the
146
+ `BREAKING CHANGE:` / `NOTICE:` footers of only the first commit per section,
147
+ so in practice they do not reach the notes. Still write them: a `!` subject
148
+ requires a `BREAKING CHANGE: <what breaks, what to do instead>` footer (the
149
+ `!` bumps the version), and `NOTICE: <what the reader must do>` marks changes
150
+ that need action (a migration, a new env var or config key); the release
151
+ author uses them to edit the GitHub release notes by hand after a release.
152
+ Anything a consumer must do also belongs in the migration guide or README,
153
+ which ship in the wheel.
149
154
  - No AI attribution trailers or "generated with" lines in commits or PRs.
150
155
  - Branch and open a PR; `main` only moves through PRs and the release workflow.
151
156
  - Dependencies: `>=x,<next-major` ranges in `pyproject.toml`, resolved by
@@ -6,10 +6,11 @@ the details, and each change is described once, in its section.
6
6
 
7
7
  ## Start here
8
8
 
9
- > **A 3.x program fails when a line runs, not when it is imported.**
10
- > `PlasmaVault(ctx, address)`, `ERC20(ctx, token)` or any other `Wrapper(ctx, ...)`
11
- > raises `TypeError` only when that line executes, and so does `call.call()` without
12
- > a context. A service that wraps its reads in a broad `except Exception` degrades
9
+ > **Most 3.x calls fail only when the line runs.** A removed import
10
+ > (`ipor_fusion.fuses.crosschain`, `NavMark`, the 3.x cache functions) fails at
11
+ > import, but `PlasmaVault(ctx, address)`, `ERC20(ctx, token)` or any other
12
+ > `Wrapper(ctx, ...)` raises `TypeError` only when that line executes, and so does
13
+ > `call.call()` without a context. A service that wraps its reads in a broad `except Exception` degrades
13
14
  > silently (empty values, skipped vaults) instead of failing. Before you deploy:
14
15
  >
15
16
  > - search for wrappers built with a context (`(ctx,`, `(self.ctx,`, `(self._ctx,`)
@@ -189,8 +190,7 @@ The vault read is one pinned snapshot, and the chain is always the context's:
189
190
  no longer takes `resolve_symbol`. `metadata=True` names the ERC20 holdings in the
190
191
  result and its findings. `validate_vault_state(state)` is pure: a custom
191
192
  `VaultState` also provides `vault`, `chain_id`, `market_balances`, `erc20` and the
192
- queue's `shares_to_release_assets`. `read_erc20_holdings` is gone: the holdings are
193
- `VaultData.erc20`.
193
+ queue's `shares_to_release_assets`.
194
194
  - `build_vault_info_json(data, *, resolve_name=None)` renders from the snapshot and
195
195
  reads nothing; the chain and its label come from `data.chain_id`. Without
196
196
  `resolve_name` it names no contract (see
@@ -280,7 +280,8 @@ fails at run time:
280
280
  zero-address placeholder. `execute()` without `vault` and `alpha` raises
281
281
  `ValueError`, as does `execute_call` without `from_` or `alpha`.
282
282
  - `fetch_unpriceable_priced_tokens(ctx, *, price_oracle, underlying, balance_fuses,
283
- market_substrates, morpho_positions)` takes everything after `ctx` by keyword.
283
+ market_substrates, morpho_positions)` takes everything after `ctx` by keyword, and
284
+ its `oracle_address` parameter is renamed `price_oracle`.
284
285
  - `get_contract_name(chain_id, address, *, api_key=None, cache=None)` and
285
286
  `get_deployment_tx(chain_id, address, *, api_key=None)` take `api_key` by keyword.
286
287
  - `build_morpho_blue_market_json(*, market_id, chain_id, params, state, rates,
@@ -346,9 +347,11 @@ is the wrong one.
346
347
  - The Morpho API client raises `MorphoApiError` for every answer it cannot use and
347
348
  every transport failure, never `KeyError`, `TypeError` or `ValueError`:
348
349
  - a required market id or address (market and V1 allocation ids, V1 flow-cap ids,
349
- vault/asset/owner/token/oracle/IRM/allocator addresses) that is absent or
350
- invalid; an optional address (curator, guardian, fee recipients, ...) that is
351
- absent or `""` reads as `None`, and raises only when present and invalid;
350
+ vault/asset/owner/token/oracle/IRM addresses) that is absent or invalid; an
351
+ optional address (curator, guardian, fee recipients, ...) that is absent or `""`
352
+ reads as `None`, and raises only when present and invalid; an allocator or
353
+ sentinel entry without an address is skipped, and one with an invalid address
354
+ raises;
352
355
  - any other answer it cannot read (a missing key such as a `loanAsset` without
353
356
  `address`, a value of the wrong type, a body that is not a JSON object);
354
357
  - any `OSError` or `http.client.HTTPException` while fetching (it caught only
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: ipor-fusion
3
- Version: 4.0.0.dev139
3
+ Version: 4.0.0.dev144
4
4
  Summary: The IPOR Fusion SDK for Python
5
5
  Project-URL: homepage, https://ipor.io
6
6
  Project-URL: repository, https://github.com/IPOR-Labs/ipor-fusion.py
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ipor-fusion"
3
- version = "4.0.0.dev139"
3
+ version = "4.0.0.dev144"
4
4
  description = "The IPOR Fusion SDK for Python"
5
5
  authors = [
6
6
  { name = "Adam Mydlarz", email = "amydlarz@gmail.com" },
@@ -433,8 +433,8 @@ def build_oracle_mapping(
433
433
  ) -> OracleMapping:
434
434
  """Build the full oracle mapping for ``vault``.
435
435
 
436
- ``ctx`` must already be pinned to ``effective_block`` (the caller sets
437
- ``ctx.default_block``); the block is echoed in the output. Raises
436
+ ``ctx`` must already be pinned to ``effective_block`` (pass
437
+ ``ctx.at_block(effective_block)``); the block is echoed in the output. Raises
438
438
  `UnsupportedVaultVersionError` for a vault that exposes no price-oracle
439
439
  getter.
440
440
  """
@@ -43,7 +43,11 @@ def _write_samples(directory: Path) -> dict[str, Path]:
43
43
 
44
44
  def test_doc_samples_type_check_as_a_consumer(tmp_path):
45
45
  modules = _write_samples(tmp_path)
46
- assert {"README.md", "src/ipor_fusion/guide/quickstart.md"} <= set(modules)
46
+ assert {
47
+ "README.md",
48
+ "src/ipor_fusion/guide/quickstart.md",
49
+ "skills/ipor-deploy-vault/SKILL.md",
50
+ } <= set(modules)
47
51
  (tmp_path / "pyrightconfig.json").write_text(json.dumps(_CONSUMER_CONFIG))
48
52
  result = subprocess.run( # noqa: S603 - fixed argv, the test's own interpreter
49
53
  [