ms-markets 2.2.2.dev11__tar.gz → 2.2.3.dev12__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 (722) hide show
  1. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/CHANGELOG.md +12 -0
  2. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/PKG-INFO +1 -1
  3. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/command_center_bulk_actions.md +23 -0
  4. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/pyproject.toml +1 -1
  5. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/http/__init__.py +12 -0
  6. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/http/bulk_actions.py +16 -0
  7. ms_markets-2.2.3.dev12/src/msm/api/http/table_impact.py +78 -0
  8. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/__init__.py +2 -0
  9. ms_markets-2.2.3.dev12/src/msm/services/table_impact.py +123 -0
  10. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_bulk_actions.py +112 -8
  11. ms_markets-2.2.3.dev12/tests/msm/services/test_table_impact.py +201 -0
  12. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/accounts/account_workflow/SKILL.md +0 -0
  13. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/accounts/valuation_resolver/SKILL.md +0 -0
  14. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/assets/asset_indexed_data_nodes/SKILL.md +0 -0
  15. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/assets/asset_model_extension/SKILL.md +0 -0
  16. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/indices/index_workflow/SKILL.md +0 -0
  17. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/platform/bootstrap_registration/SKILL.md +0 -0
  18. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/platform/metatable_migrations/SKILL.md +0 -0
  19. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/portfolios/portfolio_workflow/SKILL.md +0 -0
  20. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/portfolios/portfolio_workflow/references/position_accounting.md +0 -0
  21. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/pricing/fixed_income_curve_building/SKILL.md +0 -0
  22. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/pricing/general_pricing/SKILL.md +0 -0
  23. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.gitignore +0 -0
  24. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/LICENSE +0 -0
  25. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/README.md +0 -0
  26. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0005-pricing-package-refactor.md +0 -0
  27. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0006-asset-package-boundary.md +0 -0
  28. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0008-metatable-table-and-api-model-split.md +0 -0
  29. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0019-msm-portfolios-package-boundary.md +0 -0
  30. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0022-alembic-metatable-migration-alignment.md +0 -0
  31. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0023-deterministic-alembic-naming.md +0 -0
  32. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0024-namespace-scoped-alembic-version-locations.md +0 -0
  33. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0025-direct-metatable-runtime-binding.md +0 -0
  34. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0026-explicit-pricing-market-data-sets.md +0 -0
  35. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0027-account-target-position-portfolio-exposure.md +0 -0
  36. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0028-core-calendar-reference-data.md +0 -0
  37. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0029-account-holdings-virtual-fund-allocation-policy.md +0 -0
  38. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0030-explicit-portfolio-price-source-dependency.md +0 -0
  39. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0031-generic-portfolio-valuation-source.md +0 -0
  40. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0032-portfolio-group-many-to-many.md +0 -0
  41. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0033-pricing-valuation-position-boundary.md +0 -0
  42. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0034-command-center-asset-monitor-helpers.md +0 -0
  43. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0035-pricing-curve-identity-and-market-data-curve-bindings.md +0 -0
  44. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0036-prepared-pricing-valuation-context.md +0 -0
  45. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0037-index-formula-and-custom-calculation-framework.md +0 -0
  46. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0038-index-user-api-and-fastapi-exploration.md +0 -0
  47. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0039-sdk-8-hard-cut-and-1-0-package-contract.md +0 -0
  48. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0040-portfolio-temporal-ownership.md +0 -0
  49. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0041-installable-provider-http-toolkit.md +0 -0
  50. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0042-position-cash-flow-portfolio-accounting.md +0 -0
  51. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0043-sdk-9-metatables-client-hard-cut.md +0 -0
  52. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0044-namespaced-migration-provider-package.md +0 -0
  53. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0045-squashed-initial-schema-and-namespaced-packages.md +0 -0
  54. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/README.md +0 -0
  55. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/fast_api/v1/0001-calendar-crud-route.md +0 -0
  56. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/fast_api/v1/0002-command-center-adapter-discovery.md +0 -0
  57. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/fast_api/v1/0003-fixed-income-pricer-api.md +0 -0
  58. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/fast_api/v1/0004-delete-impact-contract.md +0 -0
  59. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/changelog.md +0 -0
  60. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/concepts.md +0 -0
  61. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/accounts.md +0 -0
  62. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/assets.md +0 -0
  63. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/calendars.md +0 -0
  64. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/fixed_income_pricer.md +0 -0
  65. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/index.md +0 -0
  66. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/indexes.md +0 -0
  67. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/portfolio.md +0 -0
  68. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/portfolio_groups.md +0 -0
  69. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/portfolio_signal_metadata.md +0 -0
  70. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/pricing_curves.md +0 -0
  71. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/pricing_market_data.md +0 -0
  72. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/provider_adapter_toolkit.md +0 -0
  73. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/resource_contracts.md +0 -0
  74. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/settings.md +0 -0
  75. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/virtualfund.md +0 -0
  76. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/getting-started.md +0 -0
  77. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/img/main-sequence-markets/main_sequence_markets_alternate_lockup_black_bg.png +0 -0
  78. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/img/main-sequence-markets/main_sequence_markets_alternate_lockup_transparent.png +0 -0
  79. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/img/main-sequence-markets/main_sequence_markets_icon_emblem_black_bg.png +0 -0
  80. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/img/main-sequence-markets/main_sequence_markets_icon_emblem_transparent.png +0 -0
  81. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/img/main-sequence-markets/main_sequence_markets_market_mark_only_black_bg.png +0 -0
  82. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/img/main-sequence-markets/main_sequence_markets_market_mark_only_transparent.png +0 -0
  83. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/img/main-sequence-markets/main_sequence_markets_primary_wordmark_black_bg.png +0 -0
  84. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/img/main-sequence-markets/main_sequence_markets_primary_wordmark_transparent.png +0 -0
  85. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/index.md +0 -0
  86. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/accounts/index.md +0 -0
  87. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/accounts/virtual_funds.md +0 -0
  88. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/assets/asset_indexed_data_nodes.md +0 -0
  89. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/assets/bonds.md +0 -0
  90. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/assets/currency.md +0 -0
  91. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/assets/index.md +0 -0
  92. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/calendars/index.md +0 -0
  93. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/client/index.md +0 -0
  94. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/derivatives/futures.md +0 -0
  95. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/derivatives/index.md +0 -0
  96. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/execution/index.md +0 -0
  97. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/index.md +0 -0
  98. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/indices/formula_indexes.md +0 -0
  99. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/indices/index.md +0 -0
  100. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/migrations/index.md +0 -0
  101. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/models/index.md +0 -0
  102. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/platform/index.md +0 -0
  103. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/platform/meta_table_registration.md +0 -0
  104. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/platform/metatable_migrations.md +0 -0
  105. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/repositories/index.md +0 -0
  106. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/services/index.md +0 -0
  107. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_portfolios/index.md +0 -0
  108. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_portfolios/portfolios/accounting.md +0 -0
  109. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_portfolios/portfolios/index.md +0 -0
  110. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/analytics.md +0 -0
  111. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/curves.md +0 -0
  112. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/fixings.md +0 -0
  113. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/index.md +0 -0
  114. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/instruments.md +0 -0
  115. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/market_data_sets.md +0 -0
  116. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/runtime_resolution.md +0 -0
  117. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/scenarios/curves.md +0 -0
  118. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/scenarios/index.md +0 -0
  119. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/scenarios/valuation.md +0 -0
  120. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/planning/implementation_tasks/benchmark_curve_resolution_plan.md +0 -0
  121. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/planning/implementation_tasks/bond_helper_curve_reconstruction_upstream_plan.md +0 -0
  122. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/planning/implementation_tasks/cross_currency_helper_curve_reconstruction_upstream_plan.md +0 -0
  123. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/planning/implementation_tasks/generic_curve_reconstruction_upstream_plan.md +0 -0
  124. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/planning/implementation_tasks/generic_valuation_scenario_workflow_plan.md +0 -0
  125. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/planning/implementation_tasks/index_formula_and_custom_calculation_plan.md +0 -0
  126. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/planning/implementation_tasks/python_3_13_mainsequence_5_upgrade_plan.md +0 -0
  127. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/planning/implementation_tasks/reusable_valuation_portfolio_scenario_analytics_plan.md +0 -0
  128. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/reference/index.md +0 -0
  129. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/reference/indices.md +0 -0
  130. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/releasing.md +0 -0
  131. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/stylesheets/custom.css +0 -0
  132. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/tutorial/01-assets.md +0 -0
  133. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/tutorial/02-calendars.md +0 -0
  134. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/tutorial/03-accounts.md +0 -0
  135. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/tutorial/04-portfolios.md +0 -0
  136. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/tutorial/05-pricing.md +0 -0
  137. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/tutorial/06-index-formulas.md +0 -0
  138. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/tutorial/index.md +0 -0
  139. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/__init__.py +0 -0
  140. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/__init__.py +0 -0
  141. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/accounts/__init__.py +0 -0
  142. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/accounts/account_portfolio_full_workflow.py +0 -0
  143. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/accounts/account_virtual_fund_allocation_example.py +0 -0
  144. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/accounts/utils/__init__.py +0 -0
  145. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/accounts/utils/reference_data.py +0 -0
  146. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/__init__.py +0 -0
  147. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/asset_category_workflow.py +0 -0
  148. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/asset_crud_workflow.py +0 -0
  149. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/asset_type_constants.py +0 -0
  150. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/bond_workflow.py +0 -0
  151. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/currency_spot_workflow.py +0 -0
  152. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/derivatives/__init__.py +0 -0
  153. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/derivatives/crypto_future_without_figi.py +0 -0
  154. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/derivatives/index_future_from_openfigi.py +0 -0
  155. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/us_treasury_bond_workflow.py +0 -0
  156. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/utils/__init__.py +0 -0
  157. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/utils/reference_data.py +0 -0
  158. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/calendars/__init__.py +0 -0
  159. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/calendars/calendar_materialization_workflow.py +0 -0
  160. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/http_provider_contracts.py +0 -0
  161. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/indices/__init__.py +0 -0
  162. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/indices/delta_hedged_option_index.py +0 -0
  163. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/indices/extension_owned_index_storage.py +0 -0
  164. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/indices/formula_index.py +0 -0
  165. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/indices/index_values_frequency_migration.py +0 -0
  166. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/indices/plain_index_values.py +0 -0
  167. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/platform/__init__.py +0 -0
  168. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/platform/bootstrap.py +0 -0
  169. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/platform/custom_asset_details_extension.py +0 -0
  170. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/platform/inspect_markets_metatable_models.py +0 -0
  171. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/platform/metatable_migration_lifecycle.py +0 -0
  172. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/workflows/__init__.py +0 -0
  173. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/workflows/asset_category_workflow.py +0 -0
  174. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_cashflows_and_fx_valuation_example.py +0 -0
  175. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_custom_cashflow_model_example.py +0 -0
  176. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_custom_valuation_column_example.py +0 -0
  177. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_equal_weights_config.py +0 -0
  178. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_equal_weights_dynamic_migration.py +0 -0
  179. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_equal_weights_example.py +0 -0
  180. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_equal_weights_prepare_schema.py +0 -0
  181. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_equal_weights_run.py +0 -0
  182. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_groups_example.py +0 -0
  183. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_midnight_timestamp_repair.py +0 -0
  184. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_perpetual_funding_example.py +0 -0
  185. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_read_services.py +0 -0
  186. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_trailing_adv_participation_example.py +0 -0
  187. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_trailing_adv_participation_preview.py +0 -0
  188. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/__init__.py +0 -0
  189. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/bond_pricing_example/README.md +0 -0
  190. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/bond_pricing_example/__init__.py +0 -0
  191. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/bond_pricing_example/main.py +0 -0
  192. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/bond_terms.py +0 -0
  193. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/curve_reconstruction.py +0 -0
  194. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/curve_scenario.py +0 -0
  195. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/fixed_income_spread_analytics.py +0 -0
  196. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/import_pricing_runtime.py +0 -0
  197. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/instrument_identity_boundary.py +0 -0
  198. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/pricing_registry_rows.py +0 -0
  199. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/pricing_valuation_context.py +0 -0
  200. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/resolved_curve_scenario.py +0 -0
  201. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/utils/__init__.py +0 -0
  202. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/utils/mock_market_data.py +0 -0
  203. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/valuation_inputs.py +0 -0
  204. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/valuation_scenario_workflow.py +0 -0
  205. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/mkdocs.yml +0 -0
  206. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/__init__.py +0 -0
  207. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/analytics/__init__.py +0 -0
  208. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/analytics/indices/__init__.py +0 -0
  209. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/analytics/indices/contracts.py +0 -0
  210. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/analytics/indices/engine.py +0 -0
  211. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/analytics/indices/spreads.py +0 -0
  212. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/__init__.py +0 -0
  213. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/accounts.py +0 -0
  214. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/assets.py +0 -0
  215. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/base.py +0 -0
  216. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/calendars/__init__.py +0 -0
  217. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/calendars/_validation.py +0 -0
  218. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/calendars/core.py +0 -0
  219. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/calendars/dates.py +0 -0
  220. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/calendars/events.py +0 -0
  221. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/calendars/sessions.py +0 -0
  222. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/derivatives.py +0 -0
  223. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/execution.py +0 -0
  224. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/formula_indices.py +0 -0
  225. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/http/_base.py +0 -0
  226. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/http/collections.py +0 -0
  227. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/http/discovery.py +0 -0
  228. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/http/errors.py +0 -0
  229. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/http/operations.py +0 -0
  230. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/http/tabular.py +0 -0
  231. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/indices.py +0 -0
  232. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/issuers.py +0 -0
  233. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/portfolios.py +0 -0
  234. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/virtual_funds.py +0 -0
  235. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/base.py +0 -0
  236. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/bootstrap.py +0 -0
  237. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/constants.py +0 -0
  238. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/__init__.py +0 -0
  239. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/accounts/__init__.py +0 -0
  240. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/accounts/constants.py +0 -0
  241. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/accounts/storage.py +0 -0
  242. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/accounts/virtual_funds/__init__.py +0 -0
  243. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/accounts/virtual_funds/storage.py +0 -0
  244. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/assets/__init__.py +0 -0
  245. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/assets/asset_indexed.py +0 -0
  246. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/assets/snapshots.py +0 -0
  247. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/assets/storage.py +0 -0
  248. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/execution/__init__.py +0 -0
  249. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/execution/storage.py +0 -0
  250. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/indices/__init__.py +0 -0
  251. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/indices/formula.py +0 -0
  252. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/indices/storage.py +0 -0
  253. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/indices/timestamped.py +0 -0
  254. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/indices/values.py +0 -0
  255. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/utils/__init__.py +0 -0
  256. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/utils/namespaces.py +0 -0
  257. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/utils/output_metadata.py +0 -0
  258. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/utils/stamped.py +0 -0
  259. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/utils/storage_schema.py +0 -0
  260. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/utils/time.py +0 -0
  261. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/migrations/__init__.py +0 -0
  262. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/__init__.py +0 -0
  263. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/accounts/__init__.py +0 -0
  264. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/accounts/allocation_models.py +0 -0
  265. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/accounts/core.py +0 -0
  266. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/accounts/groups.py +0 -0
  267. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/accounts/virtual_funds.py +0 -0
  268. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/assets/__init__.py +0 -0
  269. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/assets/bonds.py +0 -0
  270. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/assets/categories.py +0 -0
  271. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/assets/core.py +0 -0
  272. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/assets/currency_spot.py +0 -0
  273. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/assets/provider_details.py +0 -0
  274. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/assets/types.py +0 -0
  275. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/calendars/__init__.py +0 -0
  276. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/calendars/core.py +0 -0
  277. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/calendars/dates.py +0 -0
  278. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/calendars/events.py +0 -0
  279. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/calendars/sessions.py +0 -0
  280. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/derivatives.py +0 -0
  281. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/execution.py +0 -0
  282. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/index_dataset_availability.py +0 -0
  283. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/index_formulas.py +0 -0
  284. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/indices.py +0 -0
  285. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/issuers.py +0 -0
  286. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/portfolios/__init__.py +0 -0
  287. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/portfolios/core.py +0 -0
  288. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/portfolios/groups.py +0 -0
  289. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/portfolios/signals.py +0 -0
  290. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/registration.py +0 -0
  291. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/py.typed +0 -0
  292. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/__init__.py +0 -0
  293. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/account_allocation_models.py +0 -0
  294. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/account_groups.py +0 -0
  295. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/accounts.py +0 -0
  296. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/asset_categories.py +0 -0
  297. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/assets.py +0 -0
  298. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/base.py +0 -0
  299. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/calendars/__init__.py +0 -0
  300. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/calendars/core.py +0 -0
  301. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/calendars/dates.py +0 -0
  302. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/calendars/events.py +0 -0
  303. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/calendars/sessions.py +0 -0
  304. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/crud.py +0 -0
  305. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/execution.py +0 -0
  306. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/indices.py +0 -0
  307. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/portfolios.py +0 -0
  308. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/provider_details.py +0 -0
  309. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/virtual_funds.py +0 -0
  310. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/accounts/__init__.py +0 -0
  311. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/accounts/account_virtual_allocations.py +0 -0
  312. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/accounts/core.py +0 -0
  313. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/accounts/virtual_fund_holdings.py +0 -0
  314. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/accounts/virtual_funds.py +0 -0
  315. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/accounts/virtual_funds_public_api.py +0 -0
  316. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/asset_categories.py +0 -0
  317. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/asset_master_lists.py +0 -0
  318. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/assets/__init__.py +0 -0
  319. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/assets/open_figi_lists/market_sector.json +0 -0
  320. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/assets/open_figi_lists/security_type.json +0 -0
  321. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/assets/open_figi_lists/security_type_2.json +0 -0
  322. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/assets/openfigi.py +0 -0
  323. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/assets/reference_details.py +0 -0
  324. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/calendars/__init__.py +0 -0
  325. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/calendars/materialization.py +0 -0
  326. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/calendars/pandas_market.py +0 -0
  327. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/calendars/records.py +0 -0
  328. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/calendars/validation.py +0 -0
  329. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/execution.py +0 -0
  330. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/holdings.py +0 -0
  331. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/indices/__init__.py +0 -0
  332. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/indices/actors.py +0 -0
  333. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/indices/availability.py +0 -0
  334. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/indices/catalog.py +0 -0
  335. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/indices/contracts.py +0 -0
  336. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/indices/delete_impact.py +0 -0
  337. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/indices/relationships.py +0 -0
  338. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/portfolios.py +0 -0
  339. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/provider_details.py +0 -0
  340. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/public_api_settings.py +0 -0
  341. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/reference_data.py +0 -0
  342. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/related_meta_tables.py +0 -0
  343. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/target_positions.py +0 -0
  344. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/settings.py +0 -0
  345. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_cli/__init__.py +0 -0
  346. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_cli/main.py +0 -0
  347. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_migrations/__init__.py +0 -0
  348. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_migrations/env.py +0 -0
  349. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_migrations/registry.py +0 -0
  350. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_migrations/script.py.mako +0 -0
  351. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_migrations/versions/__init__.py +0 -0
  352. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_migrations/versions/mainsequence_examples/__init__.py +0 -0
  353. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_migrations/versions/mainsequence_markets/0018_initial_schema.py +0 -0
  354. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_migrations/versions/mainsequence_markets/__init__.py +0 -0
  355. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/__init__.py +0 -0
  356. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/accounting/__init__.py +0 -0
  357. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/accounting/configuration.py +0 -0
  358. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/accounting/contracts.py +0 -0
  359. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/accounting/lifecycle.py +0 -0
  360. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/accounting/projections.py +0 -0
  361. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/accounting/reducer.py +0 -0
  362. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/accounting/valuation.py +0 -0
  363. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/api/__init__.py +0 -0
  364. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/api/market_metadata.py +0 -0
  365. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/api/portfolios.py +0 -0
  366. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/asset_scope.py +0 -0
  367. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/bootstrap.py +0 -0
  368. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/configuration.py +0 -0
  369. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/__init__.py +0 -0
  370. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/prices/__init__.py +0 -0
  371. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/prices/data_nodes.py +0 -0
  372. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/prices/utils.py +0 -0
  373. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/signals/__init__.py +0 -0
  374. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/signals/external_weights.py +0 -0
  375. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/signals/fixed_weights.py +0 -0
  376. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/signals/intraday_trend.py +0 -0
  377. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/signals/market_cap.py +0 -0
  378. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/signals/portfolio_replicator.py +0 -0
  379. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/signals/regression_utils.py +0 -0
  380. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/__init__.py +0 -0
  381. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/base.py +0 -0
  382. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/constants.py +0 -0
  383. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/metadata.py +0 -0
  384. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/portfolio_identity.py +0 -0
  385. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/portfolios/__init__.py +0 -0
  386. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/portfolios/accounting.py +0 -0
  387. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/portfolios/analytics.py +0 -0
  388. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/portfolios/calendar_events.py +0 -0
  389. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/portfolios/rebalance.py +0 -0
  390. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/portfolios/storage.py +0 -0
  391. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/portfolios/temporal.py +0 -0
  392. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/portfolios/weights.py +0 -0
  393. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/prices/__init__.py +0 -0
  394. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/prices/storage.py +0 -0
  395. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/signals/__init__.py +0 -0
  396. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/signals/storage.py +0 -0
  397. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/signals/weights.py +0 -0
  398. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/enums.py +0 -0
  399. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/models/__init__.py +0 -0
  400. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/models/portfolios/__init__.py +0 -0
  401. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/models/portfolios/metadata.py +0 -0
  402. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/models/rebalancing.py +0 -0
  403. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/models/signals.py +0 -0
  404. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/rebalance_strategy/__init__.py +0 -0
  405. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/rebalance_strategy/accounting.py +0 -0
  406. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/rebalance_strategy/base.py +0 -0
  407. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/rebalance_strategy/calendar_event.py +0 -0
  408. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/rebalance_strategy/immediate_signal.py +0 -0
  409. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/rebalance_strategy/liquidity_constrained.py +0 -0
  410. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/rebalance_strategy/time_weighted.py +0 -0
  411. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/rebalance_strategy/trailing_average_daily_volume.py +0 -0
  412. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/rebalance_strategy/volume_participation.py +0 -0
  413. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/repositories/__init__.py +0 -0
  414. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/repositories/market_metadata.py +0 -0
  415. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/services/__init__.py +0 -0
  416. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/services/calendars.py +0 -0
  417. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/services/market_metadata.py +0 -0
  418. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/services/portfolio_reads.py +0 -0
  419. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/services/portfolio_timestamp_repair.py +0 -0
  420. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/services/public_api.py +0 -0
  421. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/utils.py +0 -0
  422. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/README.md +0 -0
  423. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/__init__.py +0 -0
  424. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/analytics/__init__.py +0 -0
  425. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/analytics/spreads/__init__.py +0 -0
  426. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/analytics/spreads/base.py +0 -0
  427. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/analytics/spreads/fixed_income.py +0 -0
  428. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/api/__init__.py +0 -0
  429. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/api/asset_pricing_operations.py +0 -0
  430. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/api/curve_building_details.py +0 -0
  431. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/api/curves.py +0 -0
  432. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/api/index_convention_details.py +0 -0
  433. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/api/instruments.py +0 -0
  434. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/api/market_data_bindings.py +0 -0
  435. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/api/pricing_details.py +0 -0
  436. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/bootstrap.py +0 -0
  437. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/config.py +0 -0
  438. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_interface/__init__.py +0 -0
  439. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_interface/data_interface.py +0 -0
  440. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_nodes/__init__.py +0 -0
  441. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_nodes/curve_codec.py +0 -0
  442. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_nodes/curves/__init__.py +0 -0
  443. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_nodes/curves/key_nodes.py +0 -0
  444. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_nodes/curves/storage.py +0 -0
  445. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_nodes/index_fixings/__init__.py +0 -0
  446. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_nodes/index_fixings/storage.py +0 -0
  447. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_nodes/pricing_details/__init__.py +0 -0
  448. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_nodes/pricing_details/storage.py +0 -0
  449. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/instruments/__init__.py +0 -0
  450. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/instruments/base_instrument.py +0 -0
  451. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/instruments/bond.py +0 -0
  452. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/instruments/bond_terms.py +0 -0
  453. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/instruments/callability.py +0 -0
  454. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/instruments/interest_rate_swap.py +0 -0
  455. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/instruments/json_codec.py +0 -0
  456. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/instruments/ql_fields.py +0 -0
  457. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/meta_tables.py +0 -0
  458. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/models/__init__.py +0 -0
  459. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/models/curve_building_details.py +0 -0
  460. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/models/curves.py +0 -0
  461. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/models/index_convention_details.py +0 -0
  462. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/models/market_data_bindings.py +0 -0
  463. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/models/pricing_details.py +0 -0
  464. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/__init__.py +0 -0
  465. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/bond_analytics.py +0 -0
  466. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/bond_pricer.py +0 -0
  467. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/coupon_schedules.py +0 -0
  468. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curve_overlays.py +0 -0
  469. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/__init__.py +0 -0
  470. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/adapters.py +0 -0
  471. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/bond_helper_key_nodes.py +0 -0
  472. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/bond_helpers.py +0 -0
  473. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/cross_currency_helpers.py +0 -0
  474. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/cross_currency_key_nodes.py +0 -0
  475. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/fixed_income_key_nodes.py +0 -0
  476. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/helper_key_nodes.py +0 -0
  477. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/helper_resolution.py +0 -0
  478. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/helpers.py +0 -0
  479. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/observations.py +0 -0
  480. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/quote_units.py +0 -0
  481. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/reconstruction.py +0 -0
  482. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/indices.py +0 -0
  483. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/indices_builders.py +0 -0
  484. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/resolvers.py +0 -0
  485. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/swap_pricer.py +0 -0
  486. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/__init__.py +0 -0
  487. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/curves/__init__.py +0 -0
  488. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/curves/engine.py +0 -0
  489. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/curves/key_node_bumps.py +0 -0
  490. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/curves/models.py +0 -0
  491. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/valuation/__init__.py +0 -0
  492. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/valuation/engine.py +0 -0
  493. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/valuation/impacts.py +0 -0
  494. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/valuation/line_pricing.py +0 -0
  495. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/valuation/models.py +0 -0
  496. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/settings.py +0 -0
  497. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/utils.py +0 -0
  498. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/valuation.py +0 -0
  499. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/__init__.py +0 -0
  500. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/conftest.py +0 -0
  501. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/PINNED_FROM.txt +0 -0
  502. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/README.md +0 -0
  503. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-discovery-v1.inline-health-endpoint.json +0 -0
  504. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-discovery-v1.retired-response-mappings.json +0 -0
  505. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-discovery-v1.unknown-operation-field.json +0 -0
  506. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-public-config-v1.direct-source-mismatch.json +0 -0
  507. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-query-v1.retired-response-mapping-id.json +0 -0
  508. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-query-v1.unknown-field.json +0 -0
  509. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-secure-config-v1.unknown-field.json +0 -0
  510. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/app-component-authoring-v1.invalid-binding-port.json +0 -0
  511. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/app-component-authoring-v1.invalid-mock-version.json +0 -0
  512. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-discovery-v1.duplicate-selection-mode.json +0 -0
  513. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-discovery-v1.unsafe-endpoint.json +0 -0
  514. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-execution-v1.empty-explicit.json +0 -0
  515. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-execution-v1.presentation-filter.json +0 -0
  516. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-preflight-v1.invalid-blockers.json +0 -0
  517. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-preflight-v1.missing-allowed.json +0 -0
  518. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-collection-v1.negative-total.json +0 -0
  519. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-collection-v1.select-without-options.json +0 -0
  520. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-discovery-v1.incomplete-generic-column.json +0 -0
  521. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-discovery-v1.unknown-field.json +0 -0
  522. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-discovery-v1.unsafe-identity.json +0 -0
  523. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.invalid-target-uid.json +0 -0
  524. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.missing-token.json +0 -0
  525. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.unknown-credential-error.json +0 -0
  526. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.unrestricted-user-credential.json +0 -0
  527. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.wrong-version.json +0 -0
  528. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/table-widget-authoring-v1.community-formula.json +0 -0
  529. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/table-widget-authoring-v1.invalid-selection.json +0 -0
  530. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/table-widget-authoring-v1.unknown-widget.json +0 -0
  531. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-frame-v1.invalid-table-visuals.json +0 -0
  532. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-frame-v1.long-with-value-fields.json +0 -0
  533. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-frame-v1.missing-rows.json +0 -0
  534. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-frame-v1.unknown-field-type.json +0 -0
  535. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-transform-authoring-v1.incomplete-pivot.json +0 -0
  536. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-transform-authoring-v1.latest-without-keys.json +0 -0
  537. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/workspace-document-v1.missing-id.json +0 -0
  538. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/workspace-document-v1.numeric-id.json +0 -0
  539. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-discovery-v1.orders.json +0 -0
  540. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-public-config-v1.backend.json +0 -0
  541. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-public-config-v1.direct.json +0 -0
  542. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-query-v1.operation.json +0 -0
  543. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-secure-config-v1.values.json +0 -0
  544. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/app-component-authoring-v1.manual.json +0 -0
  545. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/app-component-authoring-v1.mock-json.json +0 -0
  546. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-discovery-v1.archive.json +0 -0
  547. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-discovery-v1.empty.json +0 -0
  548. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-execution-v1.all-matching.json +0 -0
  549. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-execution-v1.explicit.json +0 -0
  550. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-preflight-v1.allowed.json +0 -0
  551. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-preflight-v1.blocked.json +0 -0
  552. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/resource-collection-v1.minimal.json +0 -0
  553. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/resource-collection-v1.with-controls.json +0 -0
  554. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/resource-discovery-v1.records.json +0 -0
  555. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.fastapi-credential-error.json +0 -0
  556. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.fastapi-credential-request.json +0 -0
  557. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.fastapi-credential-response.json +0 -0
  558. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.fastapi-runtime-starting.json +0 -0
  559. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.initialize.json +0 -0
  560. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.ready.json +0 -0
  561. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/table-widget-authoring-v1.pro-table.json +0 -0
  562. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/table-widget-authoring-v1.table.json +0 -0
  563. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-frame-v1.minimal.json +0 -0
  564. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-frame-v1.table-visuals.json +0 -0
  565. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-frame-v1.time-series.json +0 -0
  566. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-transform-authoring-v1.filter.json +0 -0
  567. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-transform-authoring-v1.pivot-latest.json +0 -0
  568. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/workspace-document-v1.minimal.json +0 -0
  569. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/workspace-document-v1.nested.json +0 -0
  570. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/manifest.json +0 -0
  571. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/adapter-from-api-discovery-v1.schema.json +0 -0
  572. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/adapter-from-api-public-config-v1.schema.json +0 -0
  573. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/adapter-from-api-query-v1.schema.json +0 -0
  574. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/adapter-from-api-secure-config-v1.schema.json +0 -0
  575. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/app-component-authoring-v1.schema.json +0 -0
  576. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/bulk-action-discovery-v1.schema.json +0 -0
  577. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/bulk-action-execution-v1.schema.json +0 -0
  578. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/bulk-action-preflight-v1.schema.json +0 -0
  579. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/resource-collection-v1.schema.json +0 -0
  580. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/resource-discovery-v1.schema.json +0 -0
  581. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/static-site-iframe-v1.schema.json +0 -0
  582. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/table-widget-authoring-v1.schema.json +0 -0
  583. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/tabular-frame-v1.schema.json +0 -0
  584. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/tabular-transform-authoring-v1.schema.json +0 -0
  585. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/workspace-document-v1.schema.json +0 -0
  586. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/__init__.py +0 -0
  587. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/__init__.py +0 -0
  588. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/calendars/__init__.py +0 -0
  589. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/calendars/test_rows.py +0 -0
  590. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/test_assets.py +0 -0
  591. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/test_bonds.py +0 -0
  592. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/test_derivatives.py +0 -0
  593. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/test_http.py +0 -0
  594. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/test_indices.py +0 -0
  595. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/test_issuers.py +0 -0
  596. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/test_portfolio_groups.py +0 -0
  597. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/test_rows.py +0 -0
  598. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/assets/__init__.py +0 -0
  599. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/assets/test_asset_snapshots.py +0 -0
  600. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/assets/test_openfigi.py +0 -0
  601. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/bootstrap/__init__.py +0 -0
  602. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/bootstrap/test_bootstrap.py +0 -0
  603. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/data_nodes/__init__.py +0 -0
  604. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/data_nodes/test_asset_indexed_data_nodes.py +0 -0
  605. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/data_nodes/test_contracts.py +0 -0
  606. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/data_nodes/test_datetime_normalization.py +0 -0
  607. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/data_nodes/test_index_stamped_data_nodes.py +0 -0
  608. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/data_nodes/test_package_structure.py +0 -0
  609. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/data_nodes/test_provisioning_boundary.py +0 -0
  610. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/data_nodes/test_target_positions_contracts.py +0 -0
  611. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/__init__.py +0 -0
  612. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/__init__.py +0 -0
  613. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_accounts.py +0 -0
  614. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_asset_categories.py +0 -0
  615. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_assets.py +0 -0
  616. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_bulk_action_contracts.py +0 -0
  617. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_calendars.py +0 -0
  618. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_command_center_adapter.py +0 -0
  619. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_common.py +0 -0
  620. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_deployment_entrypoint.py +0 -0
  621. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_dev_cors.py +0 -0
  622. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_indices.py +0 -0
  623. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_openapi.py +0 -0
  624. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_portfolio_groups.py +0 -0
  625. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_portfolio_signals.py +0 -0
  626. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_portfolios.py +0 -0
  627. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_pricing_assets.py +0 -0
  628. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_pricing_curves.py +0 -0
  629. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_pricing_market_data.py +0 -0
  630. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_runtime_bootstrap.py +0 -0
  631. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_settings.py +0 -0
  632. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_virtual_funds.py +0 -0
  633. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/imports/__init__.py +0 -0
  634. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/imports/test_import.py +0 -0
  635. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_data_nodes.py +0 -0
  636. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_engine.py +0 -0
  637. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_examples.py +0 -0
  638. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_formula_index_contract.py +0 -0
  639. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_index_availability.py +0 -0
  640. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_index_delete_impact.py +0 -0
  641. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_index_lifecycle_services.py +0 -0
  642. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_index_values.py +0 -0
  643. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_models_and_migration.py +0 -0
  644. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_public_api.py +0 -0
  645. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_related_meta_tables.py +0 -0
  646. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_resolution_and_repository.py +0 -0
  647. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_spread_compatibility.py +0 -0
  648. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/maintenance/test_migrations.py +0 -0
  649. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/models/__init__.py +0 -0
  650. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/models/calendars/__init__.py +0 -0
  651. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/models/calendars/test_tables.py +0 -0
  652. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/models/test_metatable_models.py +0 -0
  653. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/repositories/__init__.py +0 -0
  654. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/repositories/test_repositories.py +0 -0
  655. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/services/assets/test_reference_details.py +0 -0
  656. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/services/calendars/__init__.py +0 -0
  657. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/services/calendars/test_materialization.py +0 -0
  658. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/services/test_account_virtual_allocations.py +0 -0
  659. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/services/test_latest_asset_references.py +0 -0
  660. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/test_cli.py +0 -0
  661. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/test_constants.py +0 -0
  662. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/test_package_metadata.py +0 -0
  663. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/test_schema_names.py +0 -0
  664. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/accounting/test_accounting.py +0 -0
  665. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/api/test_rows.py +0 -0
  666. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/configuration/test_prices_configuration.py +0 -0
  667. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/data_nodes/test_daily_price_interpolation.py +0 -0
  668. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/data_nodes/test_datetime_normalization.py +0 -0
  669. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/data_nodes/test_portfolio_contracts.py +0 -0
  670. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/data_nodes/test_storage_first_surface.py +0 -0
  671. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/data_nodes/test_virtual_fund_holdings_contracts.py +0 -0
  672. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/examples/test_equal_weight_portfolio_schema.py +0 -0
  673. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/examples/test_trailing_adv_participation_preview.py +0 -0
  674. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/imports/test_bootstrap.py +0 -0
  675. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/imports/test_boundaries.py +0 -0
  676. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/models/test_model_graph.py +0 -0
  677. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/services/test_calendars.py +0 -0
  678. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/services/test_portfolio_reads.py +0 -0
  679. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/services/test_portfolio_timestamp_repair.py +0 -0
  680. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/__init__.py +0 -0
  681. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/analytics/spreads/test_base.py +0 -0
  682. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/analytics/spreads/test_fixed_income.py +0 -0
  683. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/api/__init__.py +0 -0
  684. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/api/test_asset_pricing_operations.py +0 -0
  685. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/api/test_curve_building_details.py +0 -0
  686. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/api/test_curves.py +0 -0
  687. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/api/test_index_convention_details.py +0 -0
  688. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/api/test_instruments.py +0 -0
  689. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/api/test_market_data_bindings.py +0 -0
  690. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/api/test_pricing_details.py +0 -0
  691. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/data_interface/test_data_interface.py +0 -0
  692. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/data_nodes/test_curves.py +0 -0
  693. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/data_nodes/test_index_fixings.py +0 -0
  694. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/examples/test_mock_market_data.py +0 -0
  695. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/instruments/__init__.py +0 -0
  696. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/instruments/test_base_instrument.py +0 -0
  697. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/instruments/test_benchmark_curve_resolution.py +0 -0
  698. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/instruments/test_bond_terms.py +0 -0
  699. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/instruments/test_floating_bond_roundtrip.py +0 -0
  700. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/instruments/test_index_uid_references.py +0 -0
  701. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/models/__init__.py +0 -0
  702. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/models/test_pricing_details.py +0 -0
  703. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/pricing_engine/curves/test_bond_helper_reconstruction.py +0 -0
  704. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/pricing_engine/curves/test_bond_helpers.py +0 -0
  705. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/pricing_engine/curves/test_cross_currency_helpers.py +0 -0
  706. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/pricing_engine/curves/test_reconstruction.py +0 -0
  707. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/pricing_engine/test_curve_overlays.py +0 -0
  708. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/pricing_engine/test_resolvers.py +0 -0
  709. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/scenarios/curves/test_curve_scenarios.py +0 -0
  710. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/scenarios/curves/test_key_node_bumps.py +0 -0
  711. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/scenarios/curves/test_resolved_curve_scenarios.py +0 -0
  712. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/scenarios/valuation/test_line_pricing.py +0 -0
  713. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/scenarios/valuation/test_workflow.py +0 -0
  714. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/test_bond_pricing_example.py +0 -0
  715. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/test_bootstrap.py +0 -0
  716. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/test_config.py +0 -0
  717. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/test_meta_tables.py +0 -0
  718. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/test_package_boundaries.py +0 -0
  719. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/test_valuation.py +0 -0
  720. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/packaging/__init__.py +0 -0
  721. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/packaging/test_dev_release_version.py +0 -0
  722. {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/packaging/test_distribution_sources.py +0 -0
@@ -7,6 +7,18 @@ and this project follows versioned releases.
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Added
11
+
12
+ - The portfolio, portfolio-group and asset-category bulk-delete preflights
13
+ report what the delete reaches through foreign keys. They return the
14
+ MetaTables `delete_rows` impact as `impact`, describe each cascade,
15
+ `SET NULL` or `SET DEFAULT` action in `warnings`, and add MetaTables'
16
+ blockers (for example a cascade into a table the caller cannot write), which
17
+ also stop the bulk delete with `409`. If MetaTables cannot compute the
18
+ impact, a warning says so and the delete is not blocked.
19
+ `BulkDeletePreflightResponse` and the `TableImpact` models are exported from
20
+ `msm.api.http`, and `delete_rows_impact` from `msm.services`.
21
+
10
22
  ## [2.2.2] - 2026-10-03
11
23
 
12
24
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: ms-markets
3
- Version: 2.2.2.dev11
3
+ Version: 2.2.3.dev12
4
4
  Summary: Financial markets ORM, engines, and application management extensions for Main Sequence.
5
5
  Project-URL: Changelog, https://github.com/mainsequence-projects/MainSequenceMarkets/blob/main/CHANGELOG.md
6
6
  Project-URL: Source, https://github.com/mainsequence-projects/MainSequenceMarkets
@@ -46,6 +46,29 @@ selected UID and reports `allowed`, `matched_count`, `blockers`, and `warnings`
46
46
  without mutating data. Portfolio preflight also evaluates protected
47
47
  VirtualFund and target-position references.
48
48
 
49
+ Each bulk-delete preflight also reports what deleting rows from the resource's
50
+ table reaches through foreign keys. It asks MetaTables
51
+ (`MetaTable.get_impact(action="delete_rows")`) and adds:
52
+
53
+ - `impact`: the MetaTables impact graph. Nodes are the tables the delete
54
+ reaches, with their effects and the caller's effective write. Edges are
55
+ classified as `cascade_delete`, `cascade_update`, `set_null`, `set_default`,
56
+ `restrict` or `reads`. MetaTables' blockers are included.
57
+ - `warnings`: one sentence for each foreign-key action the delete triggers, for
58
+ example "PortfolioGroupMembership rows that reference deleted PortfolioGroup
59
+ rows are deleted too (ON DELETE CASCADE)." Command Center shows warnings
60
+ without custom rendering.
61
+ - `blockers`: MetaTables' reasons the caller may not run the delete, such as a
62
+ cascade into a table the caller cannot write, prefixed with that table. The
63
+ preflight then answers `allowed: false` and execution answers `409` before
64
+ the database refuses the delete.
65
+
66
+ Deleting portfolios or portfolio groups cascades to their
67
+ `PortfolioGroupMembership` rows; deleting asset categories cascades to their
68
+ `AssetCategoryMembership` rows. If MetaTables cannot compute the impact,
69
+ `impact` is `null` and a warning says so. The preflight is not blocked, because
70
+ the database still applies and enforces every foreign-key action.
71
+
49
72
  Execution repeats preflight immediately before invoking domain deletion. A
50
73
  blocked selection returns HTTP `409` and does not call the delete service. The
51
74
  underlying delete operation still performs its own conflict checks, protecting
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "ms-markets"
7
- version = "2.2.2.dev11"
7
+ version = "2.2.3.dev12"
8
8
  description = "Financial markets ORM, engines, and application management extensions for Main Sequence."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13,<3.14"
@@ -13,6 +13,7 @@ from .bulk_actions import (
13
13
  BulkActionPreflightResponse,
14
14
  BulkActionResourceId,
15
15
  BulkActionSelection,
16
+ BulkDeletePreflightResponse,
16
17
  blocked_preflight_detail,
17
18
  build_bulk_delete_action,
18
19
  explicit_uuid_selection,
@@ -78,6 +79,12 @@ from .tabular import (
78
79
  build_tabular_field,
79
80
  build_tabular_frame,
80
81
  )
82
+ from .table_impact import (
83
+ TableImpact,
84
+ TableImpactBlocker,
85
+ TableImpactEdge,
86
+ TableImpactNode,
87
+ )
81
88
 
82
89
  __all__ = [
83
90
  "BULK_ACTION_EXECUTION_CONTRACT",
@@ -98,6 +105,7 @@ __all__ = [
98
105
  "BulkActionPreflightResponse",
99
106
  "BulkActionResourceId",
100
107
  "BulkActionSelection",
108
+ "BulkDeletePreflightResponse",
101
109
  "ErrorCode",
102
110
  "ErrorResponse",
103
111
  "InMemoryOperationStore",
@@ -123,6 +131,10 @@ __all__ = [
123
131
  "ResourceSearchControl",
124
132
  "ResourceSelectFilter",
125
133
  "ResourceTextFilter",
134
+ "TableImpact",
135
+ "TableImpactBlocker",
136
+ "TableImpactEdge",
137
+ "TableImpactNode",
126
138
  "TabularFrameFieldResponse",
127
139
  "TabularFrameMetaResponse",
128
140
  "TabularFrameResponse",
@@ -8,6 +8,7 @@ from uuid import UUID
8
8
  from pydantic import Field, StrictFloat, StrictInt, field_validator, model_validator
9
9
 
10
10
  from ._base import HttpContractModel
11
+ from .table_impact import TableImpact
11
12
 
12
13
  BULK_ACTION_EXECUTION_CONTRACT = "command-center.bulk_action_execution@v1"
13
14
  BULK_ACTION_PREFLIGHT_CONTRACT = "command-center.bulk_action_preflight@v1"
@@ -134,6 +135,20 @@ class BulkActionPreflightResponse(HttpContractModel):
134
135
  warnings: list[str] | None = None
135
136
 
136
137
 
138
+ class BulkDeletePreflightResponse(BulkActionPreflightResponse):
139
+ """Bulk-delete preflight that also reports what deleting the selection reaches."""
140
+
141
+ impact: TableImpact | None = Field(
142
+ default=None,
143
+ description=(
144
+ "MetaTables delete_rows impact for the table the selected rows are deleted "
145
+ "from: the tables its foreign-key actions reach, the effect on each and the "
146
+ "caller's effective write. Each cascade is also summarized in warnings. "
147
+ "Null when nothing matched or MetaTables could not compute it."
148
+ ),
149
+ )
150
+
151
+
137
152
  def build_bulk_delete_action(
138
153
  *,
139
154
  action_id: str,
@@ -203,6 +218,7 @@ __all__ = [
203
218
  "BulkActionPreflightResponse",
204
219
  "BulkActionResourceId",
205
220
  "BulkActionSelection",
221
+ "BulkDeletePreflightResponse",
206
222
  "blocked_preflight_detail",
207
223
  "build_bulk_delete_action",
208
224
  "explicit_uuid_selection",
@@ -0,0 +1,78 @@
1
+ """MetaTables table-impact contract: what a row action reaches through foreign keys."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from pydantic import Field
6
+
7
+ from ._base import HttpContractModel
8
+
9
+
10
+ class _TableImpactModel(HttpContractModel):
11
+ # MetaTables owns this shape; drop fields that newer MetaTables releases add.
12
+ model_config = HttpContractModel.model_config | {"extra": "ignore"}
13
+
14
+
15
+ class TableImpactNode(_TableImpactModel):
16
+ """A table, unregistered relation, update or hidden table the action reaches."""
17
+
18
+ id: str
19
+ type: str = Field(description="meta_table, relation, update or hidden.")
20
+ uid: str | None = None
21
+ identifier: str | None = None
22
+ namespace: str | None = None
23
+ table_kind: str | None = None
24
+ physical_schema: str | None = None
25
+ physical_table_name: str | None = None
26
+ output_table_uid: str | None = None
27
+ effects: list[str] = Field(
28
+ default_factory=list,
29
+ description="What the action does here: drop, delete, update or input_changed.",
30
+ )
31
+ can_write: bool | None = Field(
32
+ default=None,
33
+ description="The caller's effective write after cascade narrowing; null for updates.",
34
+ )
35
+
36
+
37
+ class TableImpactEdge(_TableImpactModel):
38
+ """Points from the dependent (referencing table or reading update) to what it depends on."""
39
+
40
+ source: str
41
+ target: str
42
+ kind: str = Field(description="foreign_key, alembic_version or reads.")
43
+ effect: str = Field(
44
+ description=(
45
+ "cascade_delete, cascade_update, set_null, set_default, restrict "
46
+ "(fails while referencing rows exist), drop or reads."
47
+ )
48
+ )
49
+ name: str | None = None
50
+ on_delete: str | None = None
51
+ on_update: str | None = None
52
+
53
+
54
+ class TableImpactBlocker(_TableImpactModel):
55
+ """A reason MetaTables gives for refusing the action, and the node it concerns."""
56
+
57
+ code: str
58
+ message: str
59
+ node: str | None = None
60
+
61
+
62
+ class TableImpact(_TableImpactModel):
63
+ """MetaTables' answer to what an action on a table reaches and whether it may run."""
64
+
65
+ root_uid: str
66
+ action: str = Field(description="delete_rows, update_keys or drop_table.")
67
+ allowed: bool
68
+ nodes: list[TableImpactNode]
69
+ edges: list[TableImpactEdge]
70
+ blockers: list[TableImpactBlocker]
71
+
72
+
73
+ __all__ = [
74
+ "TableImpact",
75
+ "TableImpactBlocker",
76
+ "TableImpactEdge",
77
+ "TableImpactNode",
78
+ ]
@@ -41,6 +41,7 @@ _EXPORTS = {
41
41
  "create_portfolio": ".portfolios",
42
42
  "create_portfolio_group": ".portfolios",
43
43
  "create_virtual_fund": ".accounts",
44
+ "DeleteRowsImpact": ".table_impact",
44
45
  "delete_account": ".accounts",
45
46
  "delete_account_group": ".reference_data",
46
47
  "delete_account_target_allocation": ".accounts",
@@ -50,6 +51,7 @@ _EXPORTS = {
50
51
  "delete_asset_category": ".asset_categories",
51
52
  "delete_asset_category_record": ".asset_master_lists",
52
53
  "delete_index_record": ".asset_master_lists",
54
+ "delete_rows_impact": ".table_impact",
53
55
  "delete_calendar": ".reference_data",
54
56
  "delete_calendar_date_record": ".calendars",
55
57
  "delete_calendar_event_record": ".calendars",
@@ -0,0 +1,123 @@
1
+ """MetaTables delete impact, rendered as bulk-delete preflight warnings and blockers."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from dataclasses import dataclass, field
6
+ from typing import Any
7
+
8
+ from mainsequence.logconf import logger as _mainsequence_logger
9
+
10
+ from msm.api.http import TableImpact, TableImpactEdge, TableImpactNode
11
+
12
+ logger = _mainsequence_logger.bind(sub_application="markets", component="table_impact")
13
+
14
+ IMPACT_UNAVAILABLE_WARNING = (
15
+ "MetaTables could not report which tables this delete reaches through foreign keys. "
16
+ "The database still applies every foreign-key action when the rows are deleted."
17
+ )
18
+
19
+ # What a foreign-key action does to the referencing rows, by MetaTables edge effect.
20
+ _REFERENCING_ROW_OUTCOMES = {
21
+ "cascade_delete": "are deleted too",
22
+ "cascade_update": "are updated too",
23
+ "set_null": "have that reference set to NULL",
24
+ "set_default": "have that reference reset to its default",
25
+ }
26
+ # The edge effect each ON DELETE action produces; any other effect follows ON UPDATE.
27
+ _ON_DELETE_EFFECTS = {
28
+ "cascade": "cascade_delete",
29
+ "set null": "set_null",
30
+ "set default": "set_default",
31
+ }
32
+
33
+
34
+ @dataclass(frozen=True)
35
+ class DeleteRowsImpact:
36
+ """MetaTables' delete impact with the preflight warnings and blockers it implies."""
37
+
38
+ impact: TableImpact | None
39
+ warnings: list[str] = field(default_factory=list)
40
+ blockers: list[str] = field(default_factory=list)
41
+
42
+
43
+ def delete_rows_impact(model: type[Any]) -> DeleteRowsImpact:
44
+ """Ask MetaTables what deleting rows from ``model``'s table reaches.
45
+
46
+ Each foreign-key action the delete triggers (cascades, SET NULL, SET DEFAULT)
47
+ becomes a warning, and each reason MetaTables gives for refusing the delete
48
+ becomes a blocker. The impact is advisory: the database enforces the same rules
49
+ when the rows are deleted, so an unavailable impact only adds a warning.
50
+ """
51
+
52
+ meta_table = model.get_meta_table()
53
+ if meta_table is None:
54
+ logger.warning("MetaTables delete impact skipped: model is not bound", model=model.__name__)
55
+ return DeleteRowsImpact(impact=None, warnings=[IMPACT_UNAVAILABLE_WARNING])
56
+ try:
57
+ impact = TableImpact.model_validate(
58
+ meta_table.get_impact(action="delete_rows").model_dump(mode="json")
59
+ )
60
+ except Exception:
61
+ logger.exception("MetaTables delete impact failed", model=model.__name__)
62
+ return DeleteRowsImpact(impact=None, warnings=[IMPACT_UNAVAILABLE_WARNING])
63
+
64
+ nodes = {node.id: node for node in impact.nodes}
65
+ warnings = [
66
+ _foreign_key_warning(edge, nodes)
67
+ for edge in impact.edges
68
+ if edge.kind == "foreign_key" and edge.effect in _REFERENCING_ROW_OUTCOMES
69
+ ]
70
+ blockers = [
71
+ f"{_label(nodes.get(blocker.node), sentence_start=True)}: {blocker.message}"
72
+ if blocker.node
73
+ else blocker.message
74
+ for blocker in impact.blockers
75
+ ]
76
+ return DeleteRowsImpact(
77
+ impact=impact,
78
+ warnings=list(dict.fromkeys(warnings)),
79
+ blockers=blockers,
80
+ )
81
+
82
+
83
+ def _foreign_key_warning(edge: TableImpactEdge, nodes: dict[str, TableImpactNode]) -> str:
84
+ # Edges point from the referencing table (source) to the table it references.
85
+ source = nodes.get(edge.source)
86
+ target = nodes.get(edge.target)
87
+ deleted = (
88
+ target is not None
89
+ and "delete" in target.effects
90
+ and _ON_DELETE_EFFECTS.get((edge.on_delete or "").lower()) == edge.effect
91
+ )
92
+ action = edge.on_delete if deleted else edge.on_update
93
+ clause = f" (ON {'DELETE' if deleted else 'UPDATE'} {action.upper()})" if action else ""
94
+ return (
95
+ f"{_rows(source, sentence_start=True)} that reference "
96
+ f"{'deleted' if deleted else 'changed'} {_rows(target)} "
97
+ f"{_REFERENCING_ROW_OUTCOMES[edge.effect]}{clause}."
98
+ )
99
+
100
+
101
+ def _rows(node: TableImpactNode | None, *, sentence_start: bool = False) -> str:
102
+ if node is None or node.type == "hidden":
103
+ return f"{'R' if sentence_start else 'r'}ows in a table you cannot view"
104
+ return f"{_label(node)} rows"
105
+
106
+
107
+ def _label(node: TableImpactNode | None, *, sentence_start: bool = False) -> str:
108
+ # Hidden tables are opaque: MetaTables reports that they are affected, not which.
109
+ if node is None or node.type == "hidden":
110
+ return f"{'A' if sentence_start else 'a'} table you cannot view"
111
+ if node.identifier:
112
+ return node.identifier
113
+ if node.physical_table_name:
114
+ schema = f"{node.physical_schema}." if node.physical_schema else ""
115
+ return f"{schema}{node.physical_table_name}"
116
+ return node.id
117
+
118
+
119
+ __all__ = [
120
+ "IMPACT_UNAVAILABLE_WARNING",
121
+ "DeleteRowsImpact",
122
+ "delete_rows_impact",
123
+ ]
@@ -8,6 +8,8 @@ from fastapi.testclient import TestClient
8
8
 
9
9
  from apps.v1.main import app
10
10
  from apps.v1.services import asset_categories, portfolio_groups, portfolios
11
+ from msm.api.http import TableImpact
12
+ from msm.services.table_impact import DeleteRowsImpact
11
13
 
12
14
 
13
15
  @pytest.mark.parametrize(
@@ -102,6 +104,7 @@ def test_bulk_action_preflight_preserves_blockers(
102
104
  "matched_count": 1,
103
105
  "blockers": ["Protected reference exists."],
104
106
  "warnings": [],
107
+ "impact": None,
105
108
  "domain_context": {"resource_uid": str(resource_uid)},
106
109
  }
107
110
 
@@ -180,8 +183,7 @@ def test_bulk_action_operations_are_exposed_by_command_center_adapter() -> None:
180
183
  response = TestClient(app).get("/.well-known/command-center/connection-contract")
181
184
  assert response.status_code == 200
182
185
  operations = {
183
- operation["operationId"]: operation
184
- for operation in response.json()["availableOperations"]
186
+ operation["operationId"]: operation for operation in response.json()["availableOperations"]
185
187
  }
186
188
 
187
189
  for operation_id in (
@@ -215,6 +217,9 @@ def test_asset_category_preflight_is_owned_by_apps_v1(monkeypatch) -> None:
215
217
  "_get_asset_category_frontend_detail",
216
218
  lambda context, uid: {"uid": uid} if uid == existing_uid else None,
217
219
  )
220
+ monkeypatch.setattr(
221
+ asset_categories, "_asset_category_delete_impact", lambda: DeleteRowsImpact(impact=None)
222
+ )
218
223
 
219
224
  result = asset_categories.preflight_bulk_delete_asset_categories(
220
225
  uids=[existing_uid, missing_uid, existing_uid]
@@ -226,6 +231,7 @@ def test_asset_category_preflight_is_owned_by_apps_v1(monkeypatch) -> None:
226
231
  "matched_count": 1,
227
232
  "blockers": [f"Asset category {missing_uid} was not found."],
228
233
  "warnings": [],
234
+ "impact": None,
229
235
  }
230
236
 
231
237
 
@@ -242,17 +248,19 @@ def test_portfolio_group_preflight_is_owned_by_apps_v1(monkeypatch) -> None:
242
248
  "_get_portfolio_group_by_uid",
243
249
  lambda context, uid: {"results": [{"uid": uid}]},
244
250
  )
245
-
246
- result = portfolio_groups.preflight_bulk_delete_portfolio_groups(
247
- uids=[first_uid, second_uid]
251
+ monkeypatch.setattr(
252
+ portfolio_groups, "_portfolio_group_delete_impact", lambda: DeleteRowsImpact(impact=None)
248
253
  )
249
254
 
255
+ result = portfolio_groups.preflight_bulk_delete_portfolio_groups(uids=[first_uid, second_uid])
256
+
250
257
  assert result.model_dump() == {
251
258
  "allowed": True,
252
259
  "detail": "2 portfolio groups are ready for deletion.",
253
260
  "matched_count": 2,
254
261
  "blockers": [],
255
262
  "warnings": [],
263
+ "impact": None,
256
264
  }
257
265
 
258
266
 
@@ -268,6 +276,9 @@ def test_portfolio_preflight_is_owned_by_apps_v1(monkeypatch) -> None:
268
276
  "_portfolio_delete_preflight_item",
269
277
  lambda context, uid: (True, ["VirtualFundTable references this portfolio."]),
270
278
  )
279
+ monkeypatch.setattr(
280
+ portfolios, "_portfolio_delete_impact", lambda: DeleteRowsImpact(impact=None)
281
+ )
271
282
 
272
283
  result = portfolios.preflight_bulk_delete_portfolios(uids=[portfolio_uid])
273
284
 
@@ -275,8 +286,101 @@ def test_portfolio_preflight_is_owned_by_apps_v1(monkeypatch) -> None:
275
286
  "allowed": False,
276
287
  "detail": "The portfolio selection cannot be deleted as submitted.",
277
288
  "matched_count": 1,
278
- "blockers": [
279
- f"Portfolio {portfolio_uid}: VirtualFundTable references this portfolio."
280
- ],
289
+ "blockers": [f"Portfolio {portfolio_uid}: VirtualFundTable references this portfolio."],
281
290
  "warnings": [],
291
+ "impact": None,
282
292
  }
293
+
294
+
295
+ def _stub_portfolio_group_preflight(monkeypatch, impact: DeleteRowsImpact) -> None:
296
+ monkeypatch.setattr(
297
+ portfolio_groups,
298
+ "_get_runtime",
299
+ lambda: SimpleNamespace(context=object()),
300
+ )
301
+ monkeypatch.setattr(
302
+ portfolio_groups,
303
+ "_get_portfolio_group_by_uid",
304
+ lambda context, uid: {"results": [{"uid": uid}]},
305
+ )
306
+ monkeypatch.setattr(portfolio_groups, "_portfolio_group_delete_impact", lambda: impact)
307
+
308
+
309
+ def test_portfolio_group_preflight_reports_cascades(monkeypatch) -> None:
310
+ group_uid = str(uuid.uuid4())
311
+ membership_uid = str(uuid.uuid4())
312
+ warning = (
313
+ "PortfolioGroupMembership rows that reference deleted PortfolioGroup rows "
314
+ "are deleted too (ON DELETE CASCADE)."
315
+ )
316
+ impact = TableImpact(
317
+ root_uid=group_uid,
318
+ action="delete_rows",
319
+ allowed=True,
320
+ nodes=[
321
+ {
322
+ "id": group_uid,
323
+ "type": "meta_table",
324
+ "identifier": "PortfolioGroup",
325
+ "effects": ["delete"],
326
+ "can_write": True,
327
+ },
328
+ {
329
+ "id": membership_uid,
330
+ "type": "meta_table",
331
+ "identifier": "PortfolioGroupMembership",
332
+ "effects": ["delete"],
333
+ "can_write": True,
334
+ },
335
+ ],
336
+ edges=[
337
+ {
338
+ "source": membership_uid,
339
+ "target": group_uid,
340
+ "kind": "foreign_key",
341
+ "effect": "cascade_delete",
342
+ "on_delete": "cascade",
343
+ "on_update": "no action",
344
+ },
345
+ ],
346
+ blockers=[],
347
+ )
348
+ _stub_portfolio_group_preflight(
349
+ monkeypatch, DeleteRowsImpact(impact=impact, warnings=[warning])
350
+ )
351
+
352
+ response = TestClient(app).post(
353
+ "/api/v1/portfolio-group/bulk-delete/preflight/",
354
+ json={"selection": {"mode": "explicit", "uids": [group_uid]}, "options": {}},
355
+ )
356
+
357
+ assert response.status_code == 200
358
+ assert response.json() == {
359
+ "allowed": True,
360
+ "detail": "1 portfolio group is ready for deletion.",
361
+ "matched_count": 1,
362
+ "blockers": [],
363
+ "warnings": [warning],
364
+ "impact": impact.model_dump(mode="json"),
365
+ }
366
+
367
+
368
+ def test_cascade_blockers_stop_bulk_delete(monkeypatch) -> None:
369
+ blocker = "PortfolioGroupMembership: A cascade reaches a table you cannot write."
370
+ _stub_portfolio_group_preflight(monkeypatch, DeleteRowsImpact(impact=None, blockers=[blocker]))
371
+
372
+ def unexpected_delete(*args, **kwargs):
373
+ raise AssertionError("Deletion must not run after a blocked preflight.")
374
+
375
+ monkeypatch.setattr(
376
+ "apps.v1.routers.portfolio_groups.bulk_delete_portfolio_groups",
377
+ unexpected_delete,
378
+ )
379
+
380
+ response = TestClient(app).post(
381
+ "/api/v1/portfolio-group/bulk-delete/",
382
+ json={"selection": {"mode": "explicit", "uids": [str(uuid.uuid4())]}, "options": {}},
383
+ )
384
+
385
+ assert response.status_code == 409
386
+ assert response.json() == {"detail": blocker}