ms-markets 2.2.2.dev10__tar.gz → 2.2.3__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.dev10 → ms_markets-2.2.3}/CHANGELOG.md +40 -0
  2. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/PKG-INFO +4 -4
  3. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/README.md +2 -2
  4. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/fast_api/v1/command_center_bulk_actions.md +31 -0
  5. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/fast_api/v1/index.md +1 -1
  6. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/getting-started.md +1 -1
  7. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/platform/metatable_migrations.md +1 -1
  8. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/pyproject.toml +2 -2
  9. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/http/__init__.py +12 -0
  10. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/http/bulk_actions.py +16 -0
  11. ms_markets-2.2.3/src/msm/api/http/table_impact.py +78 -0
  12. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/__init__.py +2 -0
  13. ms_markets-2.2.3/src/msm/services/table_impact.py +123 -0
  14. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_bulk_actions.py +112 -8
  15. ms_markets-2.2.3/tests/msm/services/test_table_impact.py +196 -0
  16. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/test_package_metadata.py +2 -2
  17. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/.agents/skills/ms_markets/accounts/account_workflow/SKILL.md +0 -0
  18. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/.agents/skills/ms_markets/accounts/valuation_resolver/SKILL.md +0 -0
  19. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/.agents/skills/ms_markets/assets/asset_indexed_data_nodes/SKILL.md +0 -0
  20. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/.agents/skills/ms_markets/assets/asset_model_extension/SKILL.md +0 -0
  21. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/.agents/skills/ms_markets/indices/index_workflow/SKILL.md +0 -0
  22. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/.agents/skills/ms_markets/platform/bootstrap_registration/SKILL.md +0 -0
  23. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/.agents/skills/ms_markets/platform/metatable_migrations/SKILL.md +0 -0
  24. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/.agents/skills/ms_markets/portfolios/portfolio_workflow/SKILL.md +0 -0
  25. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/.agents/skills/ms_markets/portfolios/portfolio_workflow/references/position_accounting.md +0 -0
  26. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/.agents/skills/ms_markets/pricing/fixed_income_curve_building/SKILL.md +0 -0
  27. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/.agents/skills/ms_markets/pricing/general_pricing/SKILL.md +0 -0
  28. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/.gitignore +0 -0
  29. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/LICENSE +0 -0
  30. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0005-pricing-package-refactor.md +0 -0
  31. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0006-asset-package-boundary.md +0 -0
  32. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0008-metatable-table-and-api-model-split.md +0 -0
  33. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0019-msm-portfolios-package-boundary.md +0 -0
  34. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0022-alembic-metatable-migration-alignment.md +0 -0
  35. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0023-deterministic-alembic-naming.md +0 -0
  36. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0024-namespace-scoped-alembic-version-locations.md +0 -0
  37. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0025-direct-metatable-runtime-binding.md +0 -0
  38. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0026-explicit-pricing-market-data-sets.md +0 -0
  39. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0027-account-target-position-portfolio-exposure.md +0 -0
  40. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0028-core-calendar-reference-data.md +0 -0
  41. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0029-account-holdings-virtual-fund-allocation-policy.md +0 -0
  42. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0030-explicit-portfolio-price-source-dependency.md +0 -0
  43. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0031-generic-portfolio-valuation-source.md +0 -0
  44. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0032-portfolio-group-many-to-many.md +0 -0
  45. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0033-pricing-valuation-position-boundary.md +0 -0
  46. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0034-command-center-asset-monitor-helpers.md +0 -0
  47. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0035-pricing-curve-identity-and-market-data-curve-bindings.md +0 -0
  48. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0036-prepared-pricing-valuation-context.md +0 -0
  49. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0037-index-formula-and-custom-calculation-framework.md +0 -0
  50. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0038-index-user-api-and-fastapi-exploration.md +0 -0
  51. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0039-sdk-8-hard-cut-and-1-0-package-contract.md +0 -0
  52. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0040-portfolio-temporal-ownership.md +0 -0
  53. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0041-installable-provider-http-toolkit.md +0 -0
  54. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0042-position-cash-flow-portfolio-accounting.md +0 -0
  55. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0043-sdk-9-metatables-client-hard-cut.md +0 -0
  56. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0044-namespaced-migration-provider-package.md +0 -0
  57. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/0045-squashed-initial-schema-and-namespaced-packages.md +0 -0
  58. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/README.md +0 -0
  59. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/fast_api/v1/0001-calendar-crud-route.md +0 -0
  60. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/fast_api/v1/0002-command-center-adapter-discovery.md +0 -0
  61. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/fast_api/v1/0003-fixed-income-pricer-api.md +0 -0
  62. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/ADR/fast_api/v1/0004-delete-impact-contract.md +0 -0
  63. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/changelog.md +0 -0
  64. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/concepts.md +0 -0
  65. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/fast_api/v1/accounts.md +0 -0
  66. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/fast_api/v1/assets.md +0 -0
  67. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/fast_api/v1/calendars.md +0 -0
  68. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/fast_api/v1/fixed_income_pricer.md +0 -0
  69. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/fast_api/v1/indexes.md +0 -0
  70. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/fast_api/v1/portfolio.md +0 -0
  71. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/fast_api/v1/portfolio_groups.md +0 -0
  72. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/fast_api/v1/portfolio_signal_metadata.md +0 -0
  73. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/fast_api/v1/pricing_curves.md +0 -0
  74. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/fast_api/v1/pricing_market_data.md +0 -0
  75. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/fast_api/v1/provider_adapter_toolkit.md +0 -0
  76. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/fast_api/v1/resource_contracts.md +0 -0
  77. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/fast_api/v1/settings.md +0 -0
  78. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/fast_api/v1/virtualfund.md +0 -0
  79. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/img/main-sequence-markets/main_sequence_markets_alternate_lockup_black_bg.png +0 -0
  80. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/img/main-sequence-markets/main_sequence_markets_alternate_lockup_transparent.png +0 -0
  81. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/img/main-sequence-markets/main_sequence_markets_icon_emblem_black_bg.png +0 -0
  82. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/img/main-sequence-markets/main_sequence_markets_icon_emblem_transparent.png +0 -0
  83. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/img/main-sequence-markets/main_sequence_markets_market_mark_only_black_bg.png +0 -0
  84. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/img/main-sequence-markets/main_sequence_markets_market_mark_only_transparent.png +0 -0
  85. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/img/main-sequence-markets/main_sequence_markets_primary_wordmark_black_bg.png +0 -0
  86. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/img/main-sequence-markets/main_sequence_markets_primary_wordmark_transparent.png +0 -0
  87. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/index.md +0 -0
  88. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/accounts/index.md +0 -0
  89. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/accounts/virtual_funds.md +0 -0
  90. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/assets/asset_indexed_data_nodes.md +0 -0
  91. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/assets/bonds.md +0 -0
  92. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/assets/currency.md +0 -0
  93. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/assets/index.md +0 -0
  94. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/calendars/index.md +0 -0
  95. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/client/index.md +0 -0
  96. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/derivatives/futures.md +0 -0
  97. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/derivatives/index.md +0 -0
  98. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/execution/index.md +0 -0
  99. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/index.md +0 -0
  100. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/indices/formula_indexes.md +0 -0
  101. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/indices/index.md +0 -0
  102. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/migrations/index.md +0 -0
  103. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/models/index.md +0 -0
  104. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/platform/index.md +0 -0
  105. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/platform/meta_table_registration.md +0 -0
  106. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/repositories/index.md +0 -0
  107. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm/services/index.md +0 -0
  108. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm_portfolios/index.md +0 -0
  109. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm_portfolios/portfolios/accounting.md +0 -0
  110. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm_portfolios/portfolios/index.md +0 -0
  111. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm_pricing/analytics.md +0 -0
  112. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm_pricing/curves.md +0 -0
  113. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm_pricing/fixings.md +0 -0
  114. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm_pricing/index.md +0 -0
  115. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm_pricing/instruments.md +0 -0
  116. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm_pricing/market_data_sets.md +0 -0
  117. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm_pricing/runtime_resolution.md +0 -0
  118. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm_pricing/scenarios/curves.md +0 -0
  119. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm_pricing/scenarios/index.md +0 -0
  120. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/knowledge/msm_pricing/scenarios/valuation.md +0 -0
  121. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/planning/implementation_tasks/benchmark_curve_resolution_plan.md +0 -0
  122. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/planning/implementation_tasks/bond_helper_curve_reconstruction_upstream_plan.md +0 -0
  123. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/planning/implementation_tasks/cross_currency_helper_curve_reconstruction_upstream_plan.md +0 -0
  124. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/planning/implementation_tasks/generic_curve_reconstruction_upstream_plan.md +0 -0
  125. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/planning/implementation_tasks/generic_valuation_scenario_workflow_plan.md +0 -0
  126. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/planning/implementation_tasks/index_formula_and_custom_calculation_plan.md +0 -0
  127. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/planning/implementation_tasks/python_3_13_mainsequence_5_upgrade_plan.md +0 -0
  128. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/planning/implementation_tasks/reusable_valuation_portfolio_scenario_analytics_plan.md +0 -0
  129. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/reference/index.md +0 -0
  130. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/reference/indices.md +0 -0
  131. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/releasing.md +0 -0
  132. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/stylesheets/custom.css +0 -0
  133. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/tutorial/01-assets.md +0 -0
  134. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/tutorial/02-calendars.md +0 -0
  135. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/tutorial/03-accounts.md +0 -0
  136. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/tutorial/04-portfolios.md +0 -0
  137. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/tutorial/05-pricing.md +0 -0
  138. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/tutorial/06-index-formulas.md +0 -0
  139. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/docs/tutorial/index.md +0 -0
  140. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/__init__.py +0 -0
  141. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/__init__.py +0 -0
  142. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/accounts/__init__.py +0 -0
  143. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/accounts/account_portfolio_full_workflow.py +0 -0
  144. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/accounts/account_virtual_fund_allocation_example.py +0 -0
  145. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/accounts/utils/__init__.py +0 -0
  146. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/accounts/utils/reference_data.py +0 -0
  147. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/assets/__init__.py +0 -0
  148. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/assets/asset_category_workflow.py +0 -0
  149. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/assets/asset_crud_workflow.py +0 -0
  150. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/assets/asset_type_constants.py +0 -0
  151. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/assets/bond_workflow.py +0 -0
  152. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/assets/currency_spot_workflow.py +0 -0
  153. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/assets/derivatives/__init__.py +0 -0
  154. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/assets/derivatives/crypto_future_without_figi.py +0 -0
  155. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/assets/derivatives/index_future_from_openfigi.py +0 -0
  156. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/assets/us_treasury_bond_workflow.py +0 -0
  157. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/assets/utils/__init__.py +0 -0
  158. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/assets/utils/reference_data.py +0 -0
  159. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/calendars/__init__.py +0 -0
  160. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/calendars/calendar_materialization_workflow.py +0 -0
  161. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/http_provider_contracts.py +0 -0
  162. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/indices/__init__.py +0 -0
  163. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/indices/delta_hedged_option_index.py +0 -0
  164. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/indices/extension_owned_index_storage.py +0 -0
  165. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/indices/formula_index.py +0 -0
  166. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/indices/index_values_frequency_migration.py +0 -0
  167. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/indices/plain_index_values.py +0 -0
  168. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/platform/__init__.py +0 -0
  169. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/platform/bootstrap.py +0 -0
  170. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/platform/custom_asset_details_extension.py +0 -0
  171. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/platform/inspect_markets_metatable_models.py +0 -0
  172. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/platform/metatable_migration_lifecycle.py +0 -0
  173. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/workflows/__init__.py +0 -0
  174. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm/workflows/asset_category_workflow.py +0 -0
  175. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_portfolios/portfolio_cashflows_and_fx_valuation_example.py +0 -0
  176. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_portfolios/portfolio_custom_cashflow_model_example.py +0 -0
  177. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_portfolios/portfolio_custom_valuation_column_example.py +0 -0
  178. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_portfolios/portfolio_equal_weights_config.py +0 -0
  179. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_portfolios/portfolio_equal_weights_dynamic_migration.py +0 -0
  180. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_portfolios/portfolio_equal_weights_example.py +0 -0
  181. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_portfolios/portfolio_equal_weights_prepare_schema.py +0 -0
  182. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_portfolios/portfolio_equal_weights_run.py +0 -0
  183. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_portfolios/portfolio_groups_example.py +0 -0
  184. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_portfolios/portfolio_midnight_timestamp_repair.py +0 -0
  185. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_portfolios/portfolio_perpetual_funding_example.py +0 -0
  186. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_portfolios/portfolio_read_services.py +0 -0
  187. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_portfolios/portfolio_trailing_adv_participation_example.py +0 -0
  188. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_portfolios/portfolio_trailing_adv_participation_preview.py +0 -0
  189. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_pricing/__init__.py +0 -0
  190. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_pricing/bond_pricing_example/README.md +0 -0
  191. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_pricing/bond_pricing_example/__init__.py +0 -0
  192. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_pricing/bond_pricing_example/main.py +0 -0
  193. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_pricing/bond_terms.py +0 -0
  194. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_pricing/curve_reconstruction.py +0 -0
  195. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_pricing/curve_scenario.py +0 -0
  196. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_pricing/fixed_income_spread_analytics.py +0 -0
  197. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_pricing/import_pricing_runtime.py +0 -0
  198. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_pricing/instrument_identity_boundary.py +0 -0
  199. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_pricing/pricing_registry_rows.py +0 -0
  200. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_pricing/pricing_valuation_context.py +0 -0
  201. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_pricing/resolved_curve_scenario.py +0 -0
  202. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_pricing/utils/__init__.py +0 -0
  203. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_pricing/utils/mock_market_data.py +0 -0
  204. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_pricing/valuation_inputs.py +0 -0
  205. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/examples/msm_pricing/valuation_scenario_workflow.py +0 -0
  206. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/mkdocs.yml +0 -0
  207. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/__init__.py +0 -0
  208. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/analytics/__init__.py +0 -0
  209. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/analytics/indices/__init__.py +0 -0
  210. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/analytics/indices/contracts.py +0 -0
  211. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/analytics/indices/engine.py +0 -0
  212. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/analytics/indices/spreads.py +0 -0
  213. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/__init__.py +0 -0
  214. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/accounts.py +0 -0
  215. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/assets.py +0 -0
  216. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/base.py +0 -0
  217. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/calendars/__init__.py +0 -0
  218. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/calendars/_validation.py +0 -0
  219. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/calendars/core.py +0 -0
  220. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/calendars/dates.py +0 -0
  221. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/calendars/events.py +0 -0
  222. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/calendars/sessions.py +0 -0
  223. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/derivatives.py +0 -0
  224. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/execution.py +0 -0
  225. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/formula_indices.py +0 -0
  226. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/http/_base.py +0 -0
  227. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/http/collections.py +0 -0
  228. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/http/discovery.py +0 -0
  229. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/http/errors.py +0 -0
  230. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/http/operations.py +0 -0
  231. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/http/tabular.py +0 -0
  232. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/indices.py +0 -0
  233. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/issuers.py +0 -0
  234. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/portfolios.py +0 -0
  235. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/api/virtual_funds.py +0 -0
  236. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/base.py +0 -0
  237. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/bootstrap.py +0 -0
  238. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/constants.py +0 -0
  239. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/__init__.py +0 -0
  240. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/accounts/__init__.py +0 -0
  241. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/accounts/constants.py +0 -0
  242. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/accounts/storage.py +0 -0
  243. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/accounts/virtual_funds/__init__.py +0 -0
  244. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/accounts/virtual_funds/storage.py +0 -0
  245. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/assets/__init__.py +0 -0
  246. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/assets/asset_indexed.py +0 -0
  247. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/assets/snapshots.py +0 -0
  248. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/assets/storage.py +0 -0
  249. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/execution/__init__.py +0 -0
  250. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/execution/storage.py +0 -0
  251. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/indices/__init__.py +0 -0
  252. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/indices/formula.py +0 -0
  253. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/indices/storage.py +0 -0
  254. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/indices/timestamped.py +0 -0
  255. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/indices/values.py +0 -0
  256. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/utils/__init__.py +0 -0
  257. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/utils/namespaces.py +0 -0
  258. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/utils/output_metadata.py +0 -0
  259. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/utils/stamped.py +0 -0
  260. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/utils/storage_schema.py +0 -0
  261. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/data_nodes/utils/time.py +0 -0
  262. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/migrations/__init__.py +0 -0
  263. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/__init__.py +0 -0
  264. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/accounts/__init__.py +0 -0
  265. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/accounts/allocation_models.py +0 -0
  266. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/accounts/core.py +0 -0
  267. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/accounts/groups.py +0 -0
  268. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/accounts/virtual_funds.py +0 -0
  269. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/assets/__init__.py +0 -0
  270. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/assets/bonds.py +0 -0
  271. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/assets/categories.py +0 -0
  272. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/assets/core.py +0 -0
  273. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/assets/currency_spot.py +0 -0
  274. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/assets/provider_details.py +0 -0
  275. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/assets/types.py +0 -0
  276. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/calendars/__init__.py +0 -0
  277. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/calendars/core.py +0 -0
  278. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/calendars/dates.py +0 -0
  279. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/calendars/events.py +0 -0
  280. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/calendars/sessions.py +0 -0
  281. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/derivatives.py +0 -0
  282. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/execution.py +0 -0
  283. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/index_dataset_availability.py +0 -0
  284. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/index_formulas.py +0 -0
  285. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/indices.py +0 -0
  286. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/issuers.py +0 -0
  287. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/portfolios/__init__.py +0 -0
  288. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/portfolios/core.py +0 -0
  289. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/portfolios/groups.py +0 -0
  290. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/portfolios/signals.py +0 -0
  291. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/models/registration.py +0 -0
  292. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/py.typed +0 -0
  293. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/repositories/__init__.py +0 -0
  294. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/repositories/account_allocation_models.py +0 -0
  295. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/repositories/account_groups.py +0 -0
  296. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/repositories/accounts.py +0 -0
  297. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/repositories/asset_categories.py +0 -0
  298. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/repositories/assets.py +0 -0
  299. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/repositories/base.py +0 -0
  300. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/repositories/calendars/__init__.py +0 -0
  301. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/repositories/calendars/core.py +0 -0
  302. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/repositories/calendars/dates.py +0 -0
  303. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/repositories/calendars/events.py +0 -0
  304. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/repositories/calendars/sessions.py +0 -0
  305. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/repositories/crud.py +0 -0
  306. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/repositories/execution.py +0 -0
  307. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/repositories/indices.py +0 -0
  308. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/repositories/portfolios.py +0 -0
  309. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/repositories/provider_details.py +0 -0
  310. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/repositories/virtual_funds.py +0 -0
  311. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/accounts/__init__.py +0 -0
  312. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/accounts/account_virtual_allocations.py +0 -0
  313. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/accounts/core.py +0 -0
  314. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/accounts/virtual_fund_holdings.py +0 -0
  315. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/accounts/virtual_funds.py +0 -0
  316. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/accounts/virtual_funds_public_api.py +0 -0
  317. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/asset_categories.py +0 -0
  318. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/asset_master_lists.py +0 -0
  319. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/assets/__init__.py +0 -0
  320. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/assets/open_figi_lists/market_sector.json +0 -0
  321. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/assets/open_figi_lists/security_type.json +0 -0
  322. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/assets/open_figi_lists/security_type_2.json +0 -0
  323. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/assets/openfigi.py +0 -0
  324. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/assets/reference_details.py +0 -0
  325. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/calendars/__init__.py +0 -0
  326. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/calendars/materialization.py +0 -0
  327. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/calendars/pandas_market.py +0 -0
  328. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/calendars/records.py +0 -0
  329. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/calendars/validation.py +0 -0
  330. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/execution.py +0 -0
  331. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/holdings.py +0 -0
  332. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/indices/__init__.py +0 -0
  333. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/indices/actors.py +0 -0
  334. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/indices/availability.py +0 -0
  335. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/indices/catalog.py +0 -0
  336. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/indices/contracts.py +0 -0
  337. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/indices/delete_impact.py +0 -0
  338. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/indices/relationships.py +0 -0
  339. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/portfolios.py +0 -0
  340. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/provider_details.py +0 -0
  341. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/public_api_settings.py +0 -0
  342. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/reference_data.py +0 -0
  343. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/related_meta_tables.py +0 -0
  344. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/services/target_positions.py +0 -0
  345. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm/settings.py +0 -0
  346. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_cli/__init__.py +0 -0
  347. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_cli/main.py +0 -0
  348. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_migrations/__init__.py +0 -0
  349. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_migrations/env.py +0 -0
  350. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_migrations/registry.py +0 -0
  351. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_migrations/script.py.mako +0 -0
  352. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_migrations/versions/__init__.py +0 -0
  353. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_migrations/versions/mainsequence_examples/__init__.py +0 -0
  354. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_migrations/versions/mainsequence_markets/0018_initial_schema.py +0 -0
  355. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_migrations/versions/mainsequence_markets/__init__.py +0 -0
  356. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/__init__.py +0 -0
  357. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/accounting/__init__.py +0 -0
  358. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/accounting/configuration.py +0 -0
  359. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/accounting/contracts.py +0 -0
  360. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/accounting/lifecycle.py +0 -0
  361. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/accounting/projections.py +0 -0
  362. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/accounting/reducer.py +0 -0
  363. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/accounting/valuation.py +0 -0
  364. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/api/__init__.py +0 -0
  365. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/api/market_metadata.py +0 -0
  366. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/api/portfolios.py +0 -0
  367. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/asset_scope.py +0 -0
  368. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/bootstrap.py +0 -0
  369. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/configuration.py +0 -0
  370. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/contrib/__init__.py +0 -0
  371. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/contrib/prices/__init__.py +0 -0
  372. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/contrib/prices/data_nodes.py +0 -0
  373. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/contrib/prices/utils.py +0 -0
  374. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/contrib/signals/__init__.py +0 -0
  375. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/contrib/signals/external_weights.py +0 -0
  376. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/contrib/signals/fixed_weights.py +0 -0
  377. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/contrib/signals/intraday_trend.py +0 -0
  378. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/contrib/signals/market_cap.py +0 -0
  379. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/contrib/signals/portfolio_replicator.py +0 -0
  380. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/contrib/signals/regression_utils.py +0 -0
  381. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/data_nodes/__init__.py +0 -0
  382. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/data_nodes/base.py +0 -0
  383. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/data_nodes/constants.py +0 -0
  384. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/data_nodes/metadata.py +0 -0
  385. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/data_nodes/portfolio_identity.py +0 -0
  386. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/data_nodes/portfolios/__init__.py +0 -0
  387. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/data_nodes/portfolios/accounting.py +0 -0
  388. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/data_nodes/portfolios/analytics.py +0 -0
  389. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/data_nodes/portfolios/calendar_events.py +0 -0
  390. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/data_nodes/portfolios/rebalance.py +0 -0
  391. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/data_nodes/portfolios/storage.py +0 -0
  392. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/data_nodes/portfolios/temporal.py +0 -0
  393. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/data_nodes/portfolios/weights.py +0 -0
  394. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/data_nodes/prices/__init__.py +0 -0
  395. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/data_nodes/prices/storage.py +0 -0
  396. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/data_nodes/signals/__init__.py +0 -0
  397. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/data_nodes/signals/storage.py +0 -0
  398. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/data_nodes/signals/weights.py +0 -0
  399. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/enums.py +0 -0
  400. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/models/__init__.py +0 -0
  401. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/models/portfolios/__init__.py +0 -0
  402. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/models/portfolios/metadata.py +0 -0
  403. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/models/rebalancing.py +0 -0
  404. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/models/signals.py +0 -0
  405. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/rebalance_strategy/__init__.py +0 -0
  406. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/rebalance_strategy/accounting.py +0 -0
  407. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/rebalance_strategy/base.py +0 -0
  408. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/rebalance_strategy/calendar_event.py +0 -0
  409. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/rebalance_strategy/immediate_signal.py +0 -0
  410. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/rebalance_strategy/liquidity_constrained.py +0 -0
  411. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/rebalance_strategy/time_weighted.py +0 -0
  412. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/rebalance_strategy/trailing_average_daily_volume.py +0 -0
  413. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/rebalance_strategy/volume_participation.py +0 -0
  414. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/repositories/__init__.py +0 -0
  415. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/repositories/market_metadata.py +0 -0
  416. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/services/__init__.py +0 -0
  417. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/services/calendars.py +0 -0
  418. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/services/market_metadata.py +0 -0
  419. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/services/portfolio_reads.py +0 -0
  420. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/services/portfolio_timestamp_repair.py +0 -0
  421. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/services/public_api.py +0 -0
  422. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_portfolios/utils.py +0 -0
  423. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/README.md +0 -0
  424. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/__init__.py +0 -0
  425. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/analytics/__init__.py +0 -0
  426. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/analytics/spreads/__init__.py +0 -0
  427. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/analytics/spreads/base.py +0 -0
  428. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/analytics/spreads/fixed_income.py +0 -0
  429. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/api/__init__.py +0 -0
  430. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/api/asset_pricing_operations.py +0 -0
  431. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/api/curve_building_details.py +0 -0
  432. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/api/curves.py +0 -0
  433. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/api/index_convention_details.py +0 -0
  434. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/api/instruments.py +0 -0
  435. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/api/market_data_bindings.py +0 -0
  436. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/api/pricing_details.py +0 -0
  437. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/bootstrap.py +0 -0
  438. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/config.py +0 -0
  439. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/data_interface/__init__.py +0 -0
  440. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/data_interface/data_interface.py +0 -0
  441. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/data_nodes/__init__.py +0 -0
  442. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/data_nodes/curve_codec.py +0 -0
  443. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/data_nodes/curves/__init__.py +0 -0
  444. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/data_nodes/curves/key_nodes.py +0 -0
  445. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/data_nodes/curves/storage.py +0 -0
  446. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/data_nodes/index_fixings/__init__.py +0 -0
  447. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/data_nodes/index_fixings/storage.py +0 -0
  448. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/data_nodes/pricing_details/__init__.py +0 -0
  449. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/data_nodes/pricing_details/storage.py +0 -0
  450. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/instruments/__init__.py +0 -0
  451. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/instruments/base_instrument.py +0 -0
  452. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/instruments/bond.py +0 -0
  453. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/instruments/bond_terms.py +0 -0
  454. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/instruments/callability.py +0 -0
  455. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/instruments/interest_rate_swap.py +0 -0
  456. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/instruments/json_codec.py +0 -0
  457. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/instruments/ql_fields.py +0 -0
  458. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/meta_tables.py +0 -0
  459. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/models/__init__.py +0 -0
  460. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/models/curve_building_details.py +0 -0
  461. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/models/curves.py +0 -0
  462. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/models/index_convention_details.py +0 -0
  463. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/models/market_data_bindings.py +0 -0
  464. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/models/pricing_details.py +0 -0
  465. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/__init__.py +0 -0
  466. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/bond_analytics.py +0 -0
  467. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/bond_pricer.py +0 -0
  468. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/coupon_schedules.py +0 -0
  469. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/curve_overlays.py +0 -0
  470. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/curves/__init__.py +0 -0
  471. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/curves/adapters.py +0 -0
  472. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/curves/bond_helper_key_nodes.py +0 -0
  473. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/curves/bond_helpers.py +0 -0
  474. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/curves/cross_currency_helpers.py +0 -0
  475. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/curves/cross_currency_key_nodes.py +0 -0
  476. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/curves/fixed_income_key_nodes.py +0 -0
  477. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/curves/helper_key_nodes.py +0 -0
  478. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/curves/helper_resolution.py +0 -0
  479. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/curves/helpers.py +0 -0
  480. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/curves/observations.py +0 -0
  481. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/curves/quote_units.py +0 -0
  482. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/curves/reconstruction.py +0 -0
  483. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/indices.py +0 -0
  484. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/indices_builders.py +0 -0
  485. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/resolvers.py +0 -0
  486. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/pricing_engine/swap_pricer.py +0 -0
  487. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/scenarios/__init__.py +0 -0
  488. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/scenarios/curves/__init__.py +0 -0
  489. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/scenarios/curves/engine.py +0 -0
  490. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/scenarios/curves/key_node_bumps.py +0 -0
  491. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/scenarios/curves/models.py +0 -0
  492. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/scenarios/valuation/__init__.py +0 -0
  493. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/scenarios/valuation/engine.py +0 -0
  494. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/scenarios/valuation/impacts.py +0 -0
  495. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/scenarios/valuation/line_pricing.py +0 -0
  496. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/scenarios/valuation/models.py +0 -0
  497. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/settings.py +0 -0
  498. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/utils.py +0 -0
  499. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/src/msm_pricing/valuation.py +0 -0
  500. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/__init__.py +0 -0
  501. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/conftest.py +0 -0
  502. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/PINNED_FROM.txt +0 -0
  503. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/README.md +0 -0
  504. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-discovery-v1.inline-health-endpoint.json +0 -0
  505. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-discovery-v1.retired-response-mappings.json +0 -0
  506. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-discovery-v1.unknown-operation-field.json +0 -0
  507. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-public-config-v1.direct-source-mismatch.json +0 -0
  508. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-query-v1.retired-response-mapping-id.json +0 -0
  509. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-query-v1.unknown-field.json +0 -0
  510. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-secure-config-v1.unknown-field.json +0 -0
  511. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/app-component-authoring-v1.invalid-binding-port.json +0 -0
  512. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/app-component-authoring-v1.invalid-mock-version.json +0 -0
  513. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-discovery-v1.duplicate-selection-mode.json +0 -0
  514. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-discovery-v1.unsafe-endpoint.json +0 -0
  515. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-execution-v1.empty-explicit.json +0 -0
  516. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-execution-v1.presentation-filter.json +0 -0
  517. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-preflight-v1.invalid-blockers.json +0 -0
  518. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-preflight-v1.missing-allowed.json +0 -0
  519. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-collection-v1.negative-total.json +0 -0
  520. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-collection-v1.select-without-options.json +0 -0
  521. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-discovery-v1.incomplete-generic-column.json +0 -0
  522. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-discovery-v1.unknown-field.json +0 -0
  523. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-discovery-v1.unsafe-identity.json +0 -0
  524. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.invalid-target-uid.json +0 -0
  525. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.missing-token.json +0 -0
  526. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.unknown-credential-error.json +0 -0
  527. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.unrestricted-user-credential.json +0 -0
  528. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.wrong-version.json +0 -0
  529. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/table-widget-authoring-v1.community-formula.json +0 -0
  530. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/table-widget-authoring-v1.invalid-selection.json +0 -0
  531. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/table-widget-authoring-v1.unknown-widget.json +0 -0
  532. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-frame-v1.invalid-table-visuals.json +0 -0
  533. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-frame-v1.long-with-value-fields.json +0 -0
  534. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-frame-v1.missing-rows.json +0 -0
  535. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-frame-v1.unknown-field-type.json +0 -0
  536. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-transform-authoring-v1.incomplete-pivot.json +0 -0
  537. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-transform-authoring-v1.latest-without-keys.json +0 -0
  538. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/workspace-document-v1.missing-id.json +0 -0
  539. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/workspace-document-v1.numeric-id.json +0 -0
  540. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-discovery-v1.orders.json +0 -0
  541. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-public-config-v1.backend.json +0 -0
  542. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-public-config-v1.direct.json +0 -0
  543. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-query-v1.operation.json +0 -0
  544. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-secure-config-v1.values.json +0 -0
  545. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/app-component-authoring-v1.manual.json +0 -0
  546. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/app-component-authoring-v1.mock-json.json +0 -0
  547. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-discovery-v1.archive.json +0 -0
  548. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-discovery-v1.empty.json +0 -0
  549. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-execution-v1.all-matching.json +0 -0
  550. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-execution-v1.explicit.json +0 -0
  551. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-preflight-v1.allowed.json +0 -0
  552. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-preflight-v1.blocked.json +0 -0
  553. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/resource-collection-v1.minimal.json +0 -0
  554. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/resource-collection-v1.with-controls.json +0 -0
  555. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/resource-discovery-v1.records.json +0 -0
  556. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.fastapi-credential-error.json +0 -0
  557. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.fastapi-credential-request.json +0 -0
  558. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.fastapi-credential-response.json +0 -0
  559. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.fastapi-runtime-starting.json +0 -0
  560. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.initialize.json +0 -0
  561. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.ready.json +0 -0
  562. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/table-widget-authoring-v1.pro-table.json +0 -0
  563. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/table-widget-authoring-v1.table.json +0 -0
  564. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-frame-v1.minimal.json +0 -0
  565. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-frame-v1.table-visuals.json +0 -0
  566. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-frame-v1.time-series.json +0 -0
  567. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-transform-authoring-v1.filter.json +0 -0
  568. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-transform-authoring-v1.pivot-latest.json +0 -0
  569. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/workspace-document-v1.minimal.json +0 -0
  570. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/workspace-document-v1.nested.json +0 -0
  571. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/manifest.json +0 -0
  572. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/schemas/adapter-from-api-discovery-v1.schema.json +0 -0
  573. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/schemas/adapter-from-api-public-config-v1.schema.json +0 -0
  574. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/schemas/adapter-from-api-query-v1.schema.json +0 -0
  575. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/schemas/adapter-from-api-secure-config-v1.schema.json +0 -0
  576. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/schemas/app-component-authoring-v1.schema.json +0 -0
  577. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/schemas/bulk-action-discovery-v1.schema.json +0 -0
  578. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/schemas/bulk-action-execution-v1.schema.json +0 -0
  579. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/schemas/bulk-action-preflight-v1.schema.json +0 -0
  580. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/schemas/resource-collection-v1.schema.json +0 -0
  581. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/schemas/resource-discovery-v1.schema.json +0 -0
  582. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/schemas/static-site-iframe-v1.schema.json +0 -0
  583. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/schemas/table-widget-authoring-v1.schema.json +0 -0
  584. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/schemas/tabular-frame-v1.schema.json +0 -0
  585. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/schemas/tabular-transform-authoring-v1.schema.json +0 -0
  586. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/contracts/command-center-sdk-v0.1.13/schemas/workspace-document-v1.schema.json +0 -0
  587. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/__init__.py +0 -0
  588. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/api/__init__.py +0 -0
  589. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/api/calendars/__init__.py +0 -0
  590. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/api/calendars/test_rows.py +0 -0
  591. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/api/test_assets.py +0 -0
  592. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/api/test_bonds.py +0 -0
  593. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/api/test_derivatives.py +0 -0
  594. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/api/test_http.py +0 -0
  595. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/api/test_indices.py +0 -0
  596. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/api/test_issuers.py +0 -0
  597. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/api/test_portfolio_groups.py +0 -0
  598. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/api/test_rows.py +0 -0
  599. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/assets/__init__.py +0 -0
  600. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/assets/test_asset_snapshots.py +0 -0
  601. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/assets/test_openfigi.py +0 -0
  602. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/bootstrap/__init__.py +0 -0
  603. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/bootstrap/test_bootstrap.py +0 -0
  604. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/data_nodes/__init__.py +0 -0
  605. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/data_nodes/test_asset_indexed_data_nodes.py +0 -0
  606. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/data_nodes/test_contracts.py +0 -0
  607. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/data_nodes/test_datetime_normalization.py +0 -0
  608. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/data_nodes/test_index_stamped_data_nodes.py +0 -0
  609. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/data_nodes/test_package_structure.py +0 -0
  610. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/data_nodes/test_provisioning_boundary.py +0 -0
  611. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/data_nodes/test_target_positions_contracts.py +0 -0
  612. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/__init__.py +0 -0
  613. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/__init__.py +0 -0
  614. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_accounts.py +0 -0
  615. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_asset_categories.py +0 -0
  616. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_assets.py +0 -0
  617. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_bulk_action_contracts.py +0 -0
  618. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_calendars.py +0 -0
  619. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_command_center_adapter.py +0 -0
  620. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_common.py +0 -0
  621. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_deployment_entrypoint.py +0 -0
  622. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_dev_cors.py +0 -0
  623. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_indices.py +0 -0
  624. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_openapi.py +0 -0
  625. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_portfolio_groups.py +0 -0
  626. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_portfolio_signals.py +0 -0
  627. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_portfolios.py +0 -0
  628. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_pricing_assets.py +0 -0
  629. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_pricing_curves.py +0 -0
  630. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_pricing_market_data.py +0 -0
  631. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_runtime_bootstrap.py +0 -0
  632. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_settings.py +0 -0
  633. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/fastapi/v1/test_virtual_funds.py +0 -0
  634. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/imports/__init__.py +0 -0
  635. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/imports/test_import.py +0 -0
  636. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/indices/test_data_nodes.py +0 -0
  637. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/indices/test_engine.py +0 -0
  638. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/indices/test_examples.py +0 -0
  639. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/indices/test_formula_index_contract.py +0 -0
  640. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/indices/test_index_availability.py +0 -0
  641. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/indices/test_index_delete_impact.py +0 -0
  642. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/indices/test_index_lifecycle_services.py +0 -0
  643. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/indices/test_index_values.py +0 -0
  644. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/indices/test_models_and_migration.py +0 -0
  645. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/indices/test_public_api.py +0 -0
  646. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/indices/test_related_meta_tables.py +0 -0
  647. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/indices/test_resolution_and_repository.py +0 -0
  648. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/indices/test_spread_compatibility.py +0 -0
  649. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/maintenance/test_migrations.py +0 -0
  650. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/models/__init__.py +0 -0
  651. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/models/calendars/__init__.py +0 -0
  652. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/models/calendars/test_tables.py +0 -0
  653. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/models/test_metatable_models.py +0 -0
  654. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/repositories/__init__.py +0 -0
  655. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/repositories/test_repositories.py +0 -0
  656. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/services/assets/test_reference_details.py +0 -0
  657. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/services/calendars/__init__.py +0 -0
  658. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/services/calendars/test_materialization.py +0 -0
  659. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/services/test_account_virtual_allocations.py +0 -0
  660. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/services/test_latest_asset_references.py +0 -0
  661. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/test_cli.py +0 -0
  662. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/test_constants.py +0 -0
  663. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm/test_schema_names.py +0 -0
  664. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_portfolios/accounting/test_accounting.py +0 -0
  665. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_portfolios/api/test_rows.py +0 -0
  666. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_portfolios/configuration/test_prices_configuration.py +0 -0
  667. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_portfolios/data_nodes/test_daily_price_interpolation.py +0 -0
  668. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_portfolios/data_nodes/test_datetime_normalization.py +0 -0
  669. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_portfolios/data_nodes/test_portfolio_contracts.py +0 -0
  670. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_portfolios/data_nodes/test_storage_first_surface.py +0 -0
  671. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_portfolios/data_nodes/test_virtual_fund_holdings_contracts.py +0 -0
  672. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_portfolios/examples/test_equal_weight_portfolio_schema.py +0 -0
  673. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_portfolios/examples/test_trailing_adv_participation_preview.py +0 -0
  674. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_portfolios/imports/test_bootstrap.py +0 -0
  675. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_portfolios/imports/test_boundaries.py +0 -0
  676. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_portfolios/models/test_model_graph.py +0 -0
  677. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_portfolios/services/test_calendars.py +0 -0
  678. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_portfolios/services/test_portfolio_reads.py +0 -0
  679. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_portfolios/services/test_portfolio_timestamp_repair.py +0 -0
  680. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/__init__.py +0 -0
  681. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/analytics/spreads/test_base.py +0 -0
  682. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/analytics/spreads/test_fixed_income.py +0 -0
  683. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/api/__init__.py +0 -0
  684. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/api/test_asset_pricing_operations.py +0 -0
  685. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/api/test_curve_building_details.py +0 -0
  686. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/api/test_curves.py +0 -0
  687. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/api/test_index_convention_details.py +0 -0
  688. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/api/test_instruments.py +0 -0
  689. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/api/test_market_data_bindings.py +0 -0
  690. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/api/test_pricing_details.py +0 -0
  691. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/data_interface/test_data_interface.py +0 -0
  692. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/data_nodes/test_curves.py +0 -0
  693. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/data_nodes/test_index_fixings.py +0 -0
  694. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/examples/test_mock_market_data.py +0 -0
  695. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/instruments/__init__.py +0 -0
  696. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/instruments/test_base_instrument.py +0 -0
  697. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/instruments/test_benchmark_curve_resolution.py +0 -0
  698. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/instruments/test_bond_terms.py +0 -0
  699. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/instruments/test_floating_bond_roundtrip.py +0 -0
  700. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/instruments/test_index_uid_references.py +0 -0
  701. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/models/__init__.py +0 -0
  702. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/models/test_pricing_details.py +0 -0
  703. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/pricing_engine/curves/test_bond_helper_reconstruction.py +0 -0
  704. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/pricing_engine/curves/test_bond_helpers.py +0 -0
  705. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/pricing_engine/curves/test_cross_currency_helpers.py +0 -0
  706. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/pricing_engine/curves/test_reconstruction.py +0 -0
  707. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/pricing_engine/test_curve_overlays.py +0 -0
  708. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/pricing_engine/test_resolvers.py +0 -0
  709. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/scenarios/curves/test_curve_scenarios.py +0 -0
  710. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/scenarios/curves/test_key_node_bumps.py +0 -0
  711. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/scenarios/curves/test_resolved_curve_scenarios.py +0 -0
  712. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/scenarios/valuation/test_line_pricing.py +0 -0
  713. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/scenarios/valuation/test_workflow.py +0 -0
  714. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/test_bond_pricing_example.py +0 -0
  715. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/test_bootstrap.py +0 -0
  716. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/test_config.py +0 -0
  717. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/test_meta_tables.py +0 -0
  718. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/test_package_boundaries.py +0 -0
  719. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/msm_pricing/test_valuation.py +0 -0
  720. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/packaging/__init__.py +0 -0
  721. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/packaging/test_dev_release_version.py +0 -0
  722. {ms_markets-2.2.2.dev10 → ms_markets-2.2.3}/tests/packaging/test_distribution_sources.py +0 -0
@@ -7,6 +7,46 @@ and this project follows versioned releases.
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.2.3] - 2026-10-03
11
+
12
+ ### Added
13
+
14
+ - The portfolio, portfolio-group and asset-category bulk-delete preflights
15
+ report what the delete reaches through foreign keys. They return the
16
+ MetaTables `delete_rows` impact as `impact` and describe each cascade,
17
+ `SET NULL` or `SET DEFAULT` action in `warnings`. MetaTables' blockers (the
18
+ caller cannot write the table, the table does not accept writes, or its
19
+ DataSource is read-only) are added to `blockers` and also stop the bulk
20
+ delete with `409`; cascades never block. If MetaTables cannot compute the
21
+ impact, a warning says so and the delete is not blocked.
22
+ `BulkDeletePreflightResponse` and the `TableImpact` models are exported from
23
+ `msm.api.http`, and `delete_rows_impact` from `msm.services`.
24
+
25
+ ### Changed
26
+
27
+ - Requires `mainsequence-metatable>=0.1.18,<0.2`; the lock and exported
28
+ `requirements.txt` select `mainsequence-metatable` 0.1.18. MetaTables 0.1.18
29
+ removes the cascade write narrowing released in 0.1.17: write on a table
30
+ depends only on its own grants, so a foreign key on a referencing table no
31
+ longer locks the referenced table's Writers out. Its impact pre-flight
32
+ reports cascades as information, never as blockers.
33
+ - Refreshed the MetaTables agent skills to 0.1.18.
34
+
35
+ ## [2.2.2] - 2026-10-03
36
+
37
+ ### Changed
38
+
39
+ - Requires `mainsequence-metatable>=0.1.17,<0.2`; the lock and exported
40
+ `requirements.txt` select `mainsequence-metatable` 0.1.17. Earlier releases
41
+ refuse to finalize tables with cascading foreign keys
42
+ (`cascading_foreign_key_unsupported`), so the ms-markets provider could not
43
+ finish `migrations upgrade`. MetaTables 0.1.17 allows them: writing a table
44
+ requires write access on every table its cascades modify. The ms-markets
45
+ cascades are unchanged.
46
+ - Refreshed the MetaTables agent skills to 0.1.17. They document explicit
47
+ `__storage_layout__` names, cascading foreign keys and the `get_impact`
48
+ pre-flight.
49
+
10
50
  ### Fixed
11
51
 
12
52
  - `PortfolioEventLedgerTS` declares an explicit `__storage_layout__` whose
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: ms-markets
3
- Version: 2.2.2.dev10
3
+ Version: 2.2.3
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
@@ -227,7 +227,7 @@ Requires-Python: <3.14,>=3.13
227
227
  Requires-Dist: alembic>=1.18.4
228
228
  Requires-Dist: cachetools
229
229
  Requires-Dist: fastapi>=0.136.3
230
- Requires-Dist: mainsequence-metatable<0.2,>=0.1.14
230
+ Requires-Dist: mainsequence-metatable<0.2,>=0.1.18
231
231
  Requires-Dist: mainsequence<10,>=9.0.5
232
232
  Requires-Dist: numpy
233
233
  Requires-Dist: pandas
@@ -385,7 +385,7 @@ Recommended entry points:
385
385
  ## Quick Start
386
386
 
387
387
  `ms-markets` 2.x requires Python 3.13, Main Sequence SDK `>=9.0.5,<10`, and
388
- the MetaTables client `mainsequence-metatable>=0.1.14,<0.2`, which is imported
388
+ the MetaTables client `mainsequence-metatable>=0.1.18,<0.2`, which is imported
389
389
  as `metatables`. SDK 8 and earlier are not supported; install a 1.x
390
390
  `ms-markets` release when maintaining an SDK 8 project. See
391
391
  [ADR 0043](https://mainsequence-projects.github.io/MainSequenceMarkets/ADR/0043-sdk-9-metatables-client-hard-cut/)
@@ -503,7 +503,7 @@ The core stack starts with:
503
503
 
504
504
  - `mainsequence>=9.0.5,<10` for identity, login, Git source context,
505
505
  CodeRepository, jobs, and agents
506
- - `mainsequence-metatable>=0.1.14,<0.2` (import `metatables`) for MetaTables,
506
+ - `mainsequence-metatable>=0.1.18,<0.2` (import `metatables`) for MetaTables,
507
507
  time-index table updaters, governed compiled SQL, and application-owned
508
508
  Alembic migrations
509
509
  - `SQLAlchemy` for market-domain ORM models
@@ -108,7 +108,7 @@ Recommended entry points:
108
108
  ## Quick Start
109
109
 
110
110
  `ms-markets` 2.x requires Python 3.13, Main Sequence SDK `>=9.0.5,<10`, and
111
- the MetaTables client `mainsequence-metatable>=0.1.14,<0.2`, which is imported
111
+ the MetaTables client `mainsequence-metatable>=0.1.18,<0.2`, which is imported
112
112
  as `metatables`. SDK 8 and earlier are not supported; install a 1.x
113
113
  `ms-markets` release when maintaining an SDK 8 project. See
114
114
  [ADR 0043](https://mainsequence-projects.github.io/MainSequenceMarkets/ADR/0043-sdk-9-metatables-client-hard-cut/)
@@ -226,7 +226,7 @@ The core stack starts with:
226
226
 
227
227
  - `mainsequence>=9.0.5,<10` for identity, login, Git source context,
228
228
  CodeRepository, jobs, and agents
229
- - `mainsequence-metatable>=0.1.14,<0.2` (import `metatables`) for MetaTables,
229
+ - `mainsequence-metatable>=0.1.18,<0.2` (import `metatables`) for MetaTables,
230
230
  time-index table updaters, governed compiled SQL, and application-owned
231
231
  Alembic migrations
232
232
  - `SQLAlchemy` for market-domain ORM models
@@ -46,6 +46,37 @@ 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 whether the caller may write each one. Edges
55
+ are classified as `cascade_delete`, `cascade_update`, `set_null`,
56
+ `set_default`, `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, prefixed
62
+ with the table: the caller cannot write the table, the table does not accept
63
+ writes, or its DataSource is read-only. The preflight then answers
64
+ `allowed: false` and execution answers `409` before the database refuses the
65
+ delete. Cascades never block: write on a table depends only on its own grants,
66
+ because a foreign key's action belongs to the referencing table.
67
+
68
+ Deleting portfolios or portfolio groups cascades to their
69
+ `PortfolioGroupMembership` rows; deleting asset categories cascades to their
70
+ `AssetCategoryMembership` rows. If MetaTables cannot compute the impact,
71
+ `impact` is `null` and a warning says so. The preflight is not blocked, because
72
+ the database still applies and enforces every foreign-key action.
73
+
74
+ On the local SQLite runtime, MetaTables documents one limitation: its authorizer
75
+ also checks the reads and writes of foreign-key actions, so a delete that
76
+ cascades fails unless the caller can access every referencing table. The
77
+ preflight cannot detect this. PostgreSQL runs these actions as the referencing
78
+ table's owner.
79
+
49
80
  Execution repeats preflight immediately before invoking domain deletion. A
50
81
  blocked selection returns HTTP `409` and does not call the delete service. The
51
82
  underlying delete operation still performs its own conflict checks, protecting
@@ -164,7 +164,7 @@ push alone as deployment success.
164
164
 
165
165
  Runtime dependencies must be resolvable from the backend build environment.
166
166
  The published `ms-markets` 2.x package therefore declares
167
- `mainsequence>=9.0.5,<10` and `mainsequence-metatable>=0.1.14,<0.2` without
167
+ `mainsequence>=9.0.5,<10` and `mainsequence-metatable>=0.1.18,<0.2` without
168
168
  exact patch pins. The lower bounds enforce the SDK 9 and MetaTables client
169
169
  extraction hard cut, while the project lock and exported runtime requirements
170
170
  select the exact releases validated for this repository. Do not replace the
@@ -1,7 +1,7 @@
1
1
  # Getting Started
2
2
 
3
3
  `ms-markets` 2.x requires Python 3.13, Main Sequence SDK `>=9.0.5,<10`, and
4
- the MetaTables client `mainsequence-metatable>=0.1.14,<0.2` (imported as
4
+ the MetaTables client `mainsequence-metatable>=0.1.18,<0.2` (imported as
5
5
  `metatables`). It cannot run against an SDK 8 or earlier contract and does not
6
6
  provide compatibility aliases or a mixed-version mode. Install a 1.x
7
7
  `ms-markets` release when maintaining an SDK 8 project.
@@ -110,7 +110,7 @@ history is the Alembic revision graph plus the provider's version table.
110
110
 
111
111
  ## Client Requirement
112
112
 
113
- The implementation requires `mainsequence-metatable>=0.1.14,<0.2` with
113
+ The implementation requires `mainsequence-metatable>=0.1.18,<0.2` with
114
114
  `mainsequence>=9.0.5,<10`. The client exposes `AlembicMetaTableMigration`,
115
115
  `AlembicVersionMetaTable`, application-owned Alembic execution, and the command
116
116
  shape where
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "ms-markets"
7
- version = "2.2.2.dev10"
7
+ version = "2.2.3"
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"
@@ -37,7 +37,7 @@ dependencies = [
37
37
  "cachetools",
38
38
  "fastapi>=0.136.3",
39
39
  "mainsequence>=9.0.5,<10",
40
- "mainsequence-metatable>=0.1.14,<0.2",
40
+ "mainsequence-metatable>=0.1.18,<0.2",
41
41
  "numpy",
42
42
  "pandas",
43
43
  "pip>=26.1.1",
@@ -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 "
146
+ "whether the caller may write each table. Each cascade is also summarized "
147
+ "in warnings. Null when 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="Whether the caller may write this table; 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_impact_blockers_stop_bulk_delete(monkeypatch) -> None:
369
+ blocker = "PortfolioGroup: You cannot write this table."
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}