ms-markets 2.2.2.dev11__tar.gz → 2.2.3.dev12__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/CHANGELOG.md +12 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/PKG-INFO +1 -1
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/command_center_bulk_actions.md +23 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/pyproject.toml +1 -1
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/http/__init__.py +12 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/http/bulk_actions.py +16 -0
- ms_markets-2.2.3.dev12/src/msm/api/http/table_impact.py +78 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/__init__.py +2 -0
- ms_markets-2.2.3.dev12/src/msm/services/table_impact.py +123 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_bulk_actions.py +112 -8
- ms_markets-2.2.3.dev12/tests/msm/services/test_table_impact.py +201 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/accounts/account_workflow/SKILL.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/accounts/valuation_resolver/SKILL.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/assets/asset_indexed_data_nodes/SKILL.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/assets/asset_model_extension/SKILL.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/indices/index_workflow/SKILL.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/platform/bootstrap_registration/SKILL.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/platform/metatable_migrations/SKILL.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/portfolios/portfolio_workflow/SKILL.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/portfolios/portfolio_workflow/references/position_accounting.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/pricing/fixed_income_curve_building/SKILL.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.agents/skills/ms_markets/pricing/general_pricing/SKILL.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/.gitignore +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/LICENSE +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/README.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0005-pricing-package-refactor.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0006-asset-package-boundary.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0008-metatable-table-and-api-model-split.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0019-msm-portfolios-package-boundary.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0022-alembic-metatable-migration-alignment.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0023-deterministic-alembic-naming.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0024-namespace-scoped-alembic-version-locations.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0025-direct-metatable-runtime-binding.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0026-explicit-pricing-market-data-sets.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0027-account-target-position-portfolio-exposure.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0028-core-calendar-reference-data.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0029-account-holdings-virtual-fund-allocation-policy.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0030-explicit-portfolio-price-source-dependency.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0031-generic-portfolio-valuation-source.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0032-portfolio-group-many-to-many.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0033-pricing-valuation-position-boundary.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0034-command-center-asset-monitor-helpers.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0035-pricing-curve-identity-and-market-data-curve-bindings.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0036-prepared-pricing-valuation-context.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0037-index-formula-and-custom-calculation-framework.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0038-index-user-api-and-fastapi-exploration.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0039-sdk-8-hard-cut-and-1-0-package-contract.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0040-portfolio-temporal-ownership.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0041-installable-provider-http-toolkit.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0042-position-cash-flow-portfolio-accounting.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0043-sdk-9-metatables-client-hard-cut.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0044-namespaced-migration-provider-package.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/0045-squashed-initial-schema-and-namespaced-packages.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/README.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/fast_api/v1/0001-calendar-crud-route.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/fast_api/v1/0002-command-center-adapter-discovery.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/fast_api/v1/0003-fixed-income-pricer-api.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/ADR/fast_api/v1/0004-delete-impact-contract.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/changelog.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/concepts.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/accounts.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/assets.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/calendars.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/fixed_income_pricer.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/indexes.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/portfolio.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/portfolio_groups.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/portfolio_signal_metadata.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/pricing_curves.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/pricing_market_data.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/provider_adapter_toolkit.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/resource_contracts.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/settings.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/virtualfund.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/getting-started.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/img/main-sequence-markets/main_sequence_markets_alternate_lockup_black_bg.png +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/img/main-sequence-markets/main_sequence_markets_alternate_lockup_transparent.png +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/img/main-sequence-markets/main_sequence_markets_icon_emblem_black_bg.png +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/img/main-sequence-markets/main_sequence_markets_icon_emblem_transparent.png +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/img/main-sequence-markets/main_sequence_markets_market_mark_only_black_bg.png +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/img/main-sequence-markets/main_sequence_markets_market_mark_only_transparent.png +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/img/main-sequence-markets/main_sequence_markets_primary_wordmark_black_bg.png +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/img/main-sequence-markets/main_sequence_markets_primary_wordmark_transparent.png +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/accounts/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/accounts/virtual_funds.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/assets/asset_indexed_data_nodes.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/assets/bonds.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/assets/currency.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/assets/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/calendars/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/client/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/derivatives/futures.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/derivatives/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/execution/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/indices/formula_indexes.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/indices/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/migrations/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/models/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/platform/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/platform/meta_table_registration.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/platform/metatable_migrations.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/repositories/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm/services/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_portfolios/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_portfolios/portfolios/accounting.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_portfolios/portfolios/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/analytics.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/curves.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/fixings.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/instruments.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/market_data_sets.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/runtime_resolution.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/scenarios/curves.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/scenarios/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/knowledge/msm_pricing/scenarios/valuation.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/planning/implementation_tasks/benchmark_curve_resolution_plan.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/planning/implementation_tasks/bond_helper_curve_reconstruction_upstream_plan.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/planning/implementation_tasks/cross_currency_helper_curve_reconstruction_upstream_plan.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/planning/implementation_tasks/generic_curve_reconstruction_upstream_plan.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/planning/implementation_tasks/generic_valuation_scenario_workflow_plan.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/planning/implementation_tasks/index_formula_and_custom_calculation_plan.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/planning/implementation_tasks/python_3_13_mainsequence_5_upgrade_plan.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/planning/implementation_tasks/reusable_valuation_portfolio_scenario_analytics_plan.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/reference/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/reference/indices.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/releasing.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/stylesheets/custom.css +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/tutorial/01-assets.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/tutorial/02-calendars.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/tutorial/03-accounts.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/tutorial/04-portfolios.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/tutorial/05-pricing.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/tutorial/06-index-formulas.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/tutorial/index.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/accounts/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/accounts/account_portfolio_full_workflow.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/accounts/account_virtual_fund_allocation_example.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/accounts/utils/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/accounts/utils/reference_data.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/asset_category_workflow.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/asset_crud_workflow.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/asset_type_constants.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/bond_workflow.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/currency_spot_workflow.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/derivatives/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/derivatives/crypto_future_without_figi.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/derivatives/index_future_from_openfigi.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/us_treasury_bond_workflow.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/utils/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/assets/utils/reference_data.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/calendars/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/calendars/calendar_materialization_workflow.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/http_provider_contracts.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/indices/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/indices/delta_hedged_option_index.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/indices/extension_owned_index_storage.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/indices/formula_index.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/indices/index_values_frequency_migration.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/indices/plain_index_values.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/platform/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/platform/bootstrap.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/platform/custom_asset_details_extension.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/platform/inspect_markets_metatable_models.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/platform/metatable_migration_lifecycle.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/workflows/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm/workflows/asset_category_workflow.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_cashflows_and_fx_valuation_example.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_custom_cashflow_model_example.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_custom_valuation_column_example.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_equal_weights_config.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_equal_weights_dynamic_migration.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_equal_weights_example.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_equal_weights_prepare_schema.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_equal_weights_run.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_groups_example.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_midnight_timestamp_repair.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_perpetual_funding_example.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_read_services.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_trailing_adv_participation_example.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_portfolios/portfolio_trailing_adv_participation_preview.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/bond_pricing_example/README.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/bond_pricing_example/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/bond_pricing_example/main.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/bond_terms.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/curve_reconstruction.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/curve_scenario.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/fixed_income_spread_analytics.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/import_pricing_runtime.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/instrument_identity_boundary.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/pricing_registry_rows.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/pricing_valuation_context.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/resolved_curve_scenario.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/utils/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/utils/mock_market_data.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/valuation_inputs.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/examples/msm_pricing/valuation_scenario_workflow.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/mkdocs.yml +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/analytics/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/analytics/indices/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/analytics/indices/contracts.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/analytics/indices/engine.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/analytics/indices/spreads.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/accounts.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/assets.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/base.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/calendars/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/calendars/_validation.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/calendars/core.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/calendars/dates.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/calendars/events.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/calendars/sessions.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/derivatives.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/execution.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/formula_indices.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/http/_base.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/http/collections.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/http/discovery.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/http/errors.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/http/operations.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/http/tabular.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/indices.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/issuers.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/portfolios.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/api/virtual_funds.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/base.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/bootstrap.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/constants.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/accounts/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/accounts/constants.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/accounts/storage.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/accounts/virtual_funds/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/accounts/virtual_funds/storage.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/assets/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/assets/asset_indexed.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/assets/snapshots.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/assets/storage.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/execution/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/execution/storage.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/indices/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/indices/formula.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/indices/storage.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/indices/timestamped.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/indices/values.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/utils/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/utils/namespaces.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/utils/output_metadata.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/utils/stamped.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/utils/storage_schema.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/data_nodes/utils/time.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/migrations/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/accounts/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/accounts/allocation_models.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/accounts/core.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/accounts/groups.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/accounts/virtual_funds.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/assets/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/assets/bonds.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/assets/categories.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/assets/core.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/assets/currency_spot.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/assets/provider_details.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/assets/types.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/calendars/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/calendars/core.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/calendars/dates.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/calendars/events.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/calendars/sessions.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/derivatives.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/execution.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/index_dataset_availability.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/index_formulas.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/indices.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/issuers.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/portfolios/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/portfolios/core.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/portfolios/groups.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/portfolios/signals.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/models/registration.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/py.typed +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/account_allocation_models.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/account_groups.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/accounts.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/asset_categories.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/assets.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/base.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/calendars/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/calendars/core.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/calendars/dates.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/calendars/events.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/calendars/sessions.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/crud.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/execution.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/indices.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/portfolios.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/provider_details.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/repositories/virtual_funds.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/accounts/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/accounts/account_virtual_allocations.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/accounts/core.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/accounts/virtual_fund_holdings.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/accounts/virtual_funds.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/accounts/virtual_funds_public_api.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/asset_categories.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/asset_master_lists.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/assets/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/assets/open_figi_lists/market_sector.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/assets/open_figi_lists/security_type.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/assets/open_figi_lists/security_type_2.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/assets/openfigi.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/assets/reference_details.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/calendars/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/calendars/materialization.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/calendars/pandas_market.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/calendars/records.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/calendars/validation.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/execution.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/holdings.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/indices/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/indices/actors.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/indices/availability.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/indices/catalog.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/indices/contracts.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/indices/delete_impact.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/indices/relationships.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/portfolios.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/provider_details.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/public_api_settings.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/reference_data.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/related_meta_tables.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/services/target_positions.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm/settings.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_cli/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_cli/main.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_migrations/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_migrations/env.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_migrations/registry.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_migrations/script.py.mako +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_migrations/versions/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_migrations/versions/mainsequence_examples/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_migrations/versions/mainsequence_markets/0018_initial_schema.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_migrations/versions/mainsequence_markets/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/accounting/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/accounting/configuration.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/accounting/contracts.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/accounting/lifecycle.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/accounting/projections.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/accounting/reducer.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/accounting/valuation.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/api/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/api/market_metadata.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/api/portfolios.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/asset_scope.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/bootstrap.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/configuration.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/prices/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/prices/data_nodes.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/prices/utils.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/signals/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/signals/external_weights.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/signals/fixed_weights.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/signals/intraday_trend.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/signals/market_cap.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/signals/portfolio_replicator.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/contrib/signals/regression_utils.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/base.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/constants.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/metadata.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/portfolio_identity.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/portfolios/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/portfolios/accounting.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/portfolios/analytics.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/portfolios/calendar_events.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/portfolios/rebalance.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/portfolios/storage.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/portfolios/temporal.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/portfolios/weights.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/prices/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/prices/storage.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/signals/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/signals/storage.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/data_nodes/signals/weights.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/enums.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/models/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/models/portfolios/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/models/portfolios/metadata.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/models/rebalancing.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/models/signals.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/rebalance_strategy/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/rebalance_strategy/accounting.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/rebalance_strategy/base.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/rebalance_strategy/calendar_event.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/rebalance_strategy/immediate_signal.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/rebalance_strategy/liquidity_constrained.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/rebalance_strategy/time_weighted.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/rebalance_strategy/trailing_average_daily_volume.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/rebalance_strategy/volume_participation.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/repositories/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/repositories/market_metadata.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/services/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/services/calendars.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/services/market_metadata.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/services/portfolio_reads.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/services/portfolio_timestamp_repair.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/services/public_api.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_portfolios/utils.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/README.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/analytics/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/analytics/spreads/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/analytics/spreads/base.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/analytics/spreads/fixed_income.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/api/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/api/asset_pricing_operations.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/api/curve_building_details.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/api/curves.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/api/index_convention_details.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/api/instruments.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/api/market_data_bindings.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/api/pricing_details.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/bootstrap.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/config.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_interface/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_interface/data_interface.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_nodes/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_nodes/curve_codec.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_nodes/curves/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_nodes/curves/key_nodes.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_nodes/curves/storage.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_nodes/index_fixings/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_nodes/index_fixings/storage.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_nodes/pricing_details/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/data_nodes/pricing_details/storage.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/instruments/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/instruments/base_instrument.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/instruments/bond.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/instruments/bond_terms.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/instruments/callability.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/instruments/interest_rate_swap.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/instruments/json_codec.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/instruments/ql_fields.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/meta_tables.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/models/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/models/curve_building_details.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/models/curves.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/models/index_convention_details.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/models/market_data_bindings.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/models/pricing_details.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/bond_analytics.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/bond_pricer.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/coupon_schedules.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curve_overlays.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/adapters.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/bond_helper_key_nodes.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/bond_helpers.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/cross_currency_helpers.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/cross_currency_key_nodes.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/fixed_income_key_nodes.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/helper_key_nodes.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/helper_resolution.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/helpers.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/observations.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/quote_units.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/curves/reconstruction.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/indices.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/indices_builders.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/resolvers.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/pricing_engine/swap_pricer.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/curves/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/curves/engine.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/curves/key_node_bumps.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/curves/models.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/valuation/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/valuation/engine.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/valuation/impacts.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/valuation/line_pricing.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/scenarios/valuation/models.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/settings.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/utils.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/src/msm_pricing/valuation.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/conftest.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/PINNED_FROM.txt +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/README.md +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-discovery-v1.inline-health-endpoint.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-discovery-v1.retired-response-mappings.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-discovery-v1.unknown-operation-field.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-public-config-v1.direct-source-mismatch.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-query-v1.retired-response-mapping-id.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-query-v1.unknown-field.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-secure-config-v1.unknown-field.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/app-component-authoring-v1.invalid-binding-port.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/app-component-authoring-v1.invalid-mock-version.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-discovery-v1.duplicate-selection-mode.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-discovery-v1.unsafe-endpoint.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-execution-v1.empty-explicit.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-execution-v1.presentation-filter.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-preflight-v1.invalid-blockers.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-preflight-v1.missing-allowed.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-collection-v1.negative-total.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-collection-v1.select-without-options.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-discovery-v1.incomplete-generic-column.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-discovery-v1.unknown-field.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-discovery-v1.unsafe-identity.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.invalid-target-uid.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.missing-token.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.unknown-credential-error.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.unrestricted-user-credential.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.wrong-version.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/table-widget-authoring-v1.community-formula.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/table-widget-authoring-v1.invalid-selection.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/table-widget-authoring-v1.unknown-widget.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-frame-v1.invalid-table-visuals.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-frame-v1.long-with-value-fields.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-frame-v1.missing-rows.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-frame-v1.unknown-field-type.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-transform-authoring-v1.incomplete-pivot.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-transform-authoring-v1.latest-without-keys.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/workspace-document-v1.missing-id.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/workspace-document-v1.numeric-id.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-discovery-v1.orders.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-public-config-v1.backend.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-public-config-v1.direct.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-query-v1.operation.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-secure-config-v1.values.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/app-component-authoring-v1.manual.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/app-component-authoring-v1.mock-json.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-discovery-v1.archive.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-discovery-v1.empty.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-execution-v1.all-matching.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-execution-v1.explicit.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-preflight-v1.allowed.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-preflight-v1.blocked.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/resource-collection-v1.minimal.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/resource-collection-v1.with-controls.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/resource-discovery-v1.records.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.fastapi-credential-error.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.fastapi-credential-request.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.fastapi-credential-response.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.fastapi-runtime-starting.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.initialize.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.ready.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/table-widget-authoring-v1.pro-table.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/table-widget-authoring-v1.table.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-frame-v1.minimal.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-frame-v1.table-visuals.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-frame-v1.time-series.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-transform-authoring-v1.filter.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-transform-authoring-v1.pivot-latest.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/workspace-document-v1.minimal.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/workspace-document-v1.nested.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/manifest.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/adapter-from-api-discovery-v1.schema.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/adapter-from-api-public-config-v1.schema.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/adapter-from-api-query-v1.schema.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/adapter-from-api-secure-config-v1.schema.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/app-component-authoring-v1.schema.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/bulk-action-discovery-v1.schema.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/bulk-action-execution-v1.schema.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/bulk-action-preflight-v1.schema.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/resource-collection-v1.schema.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/resource-discovery-v1.schema.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/static-site-iframe-v1.schema.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/table-widget-authoring-v1.schema.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/tabular-frame-v1.schema.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/tabular-transform-authoring-v1.schema.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/contracts/command-center-sdk-v0.1.13/schemas/workspace-document-v1.schema.json +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/calendars/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/calendars/test_rows.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/test_assets.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/test_bonds.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/test_derivatives.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/test_http.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/test_indices.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/test_issuers.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/test_portfolio_groups.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/api/test_rows.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/assets/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/assets/test_asset_snapshots.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/assets/test_openfigi.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/bootstrap/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/bootstrap/test_bootstrap.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/data_nodes/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/data_nodes/test_asset_indexed_data_nodes.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/data_nodes/test_contracts.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/data_nodes/test_datetime_normalization.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/data_nodes/test_index_stamped_data_nodes.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/data_nodes/test_package_structure.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/data_nodes/test_provisioning_boundary.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/data_nodes/test_target_positions_contracts.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_accounts.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_asset_categories.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_assets.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_bulk_action_contracts.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_calendars.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_command_center_adapter.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_common.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_deployment_entrypoint.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_dev_cors.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_indices.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_openapi.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_portfolio_groups.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_portfolio_signals.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_portfolios.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_pricing_assets.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_pricing_curves.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_pricing_market_data.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_runtime_bootstrap.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_settings.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/fastapi/v1/test_virtual_funds.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/imports/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/imports/test_import.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_data_nodes.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_engine.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_examples.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_formula_index_contract.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_index_availability.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_index_delete_impact.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_index_lifecycle_services.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_index_values.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_models_and_migration.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_public_api.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_related_meta_tables.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_resolution_and_repository.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/indices/test_spread_compatibility.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/maintenance/test_migrations.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/models/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/models/calendars/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/models/calendars/test_tables.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/models/test_metatable_models.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/repositories/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/repositories/test_repositories.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/services/assets/test_reference_details.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/services/calendars/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/services/calendars/test_materialization.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/services/test_account_virtual_allocations.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/services/test_latest_asset_references.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/test_cli.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/test_constants.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/test_package_metadata.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm/test_schema_names.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/accounting/test_accounting.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/api/test_rows.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/configuration/test_prices_configuration.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/data_nodes/test_daily_price_interpolation.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/data_nodes/test_datetime_normalization.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/data_nodes/test_portfolio_contracts.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/data_nodes/test_storage_first_surface.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/data_nodes/test_virtual_fund_holdings_contracts.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/examples/test_equal_weight_portfolio_schema.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/examples/test_trailing_adv_participation_preview.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/imports/test_bootstrap.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/imports/test_boundaries.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/models/test_model_graph.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/services/test_calendars.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/services/test_portfolio_reads.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_portfolios/services/test_portfolio_timestamp_repair.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/analytics/spreads/test_base.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/analytics/spreads/test_fixed_income.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/api/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/api/test_asset_pricing_operations.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/api/test_curve_building_details.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/api/test_curves.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/api/test_index_convention_details.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/api/test_instruments.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/api/test_market_data_bindings.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/api/test_pricing_details.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/data_interface/test_data_interface.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/data_nodes/test_curves.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/data_nodes/test_index_fixings.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/examples/test_mock_market_data.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/instruments/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/instruments/test_base_instrument.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/instruments/test_benchmark_curve_resolution.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/instruments/test_bond_terms.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/instruments/test_floating_bond_roundtrip.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/instruments/test_index_uid_references.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/models/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/models/test_pricing_details.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/pricing_engine/curves/test_bond_helper_reconstruction.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/pricing_engine/curves/test_bond_helpers.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/pricing_engine/curves/test_cross_currency_helpers.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/pricing_engine/curves/test_reconstruction.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/pricing_engine/test_curve_overlays.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/pricing_engine/test_resolvers.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/scenarios/curves/test_curve_scenarios.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/scenarios/curves/test_key_node_bumps.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/scenarios/curves/test_resolved_curve_scenarios.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/scenarios/valuation/test_line_pricing.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/scenarios/valuation/test_workflow.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/test_bond_pricing_example.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/test_bootstrap.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/test_config.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/test_meta_tables.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/test_package_boundaries.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/msm_pricing/test_valuation.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/packaging/__init__.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/packaging/test_dev_release_version.py +0 -0
- {ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/tests/packaging/test_distribution_sources.py +0 -0
|
@@ -7,6 +7,18 @@ and this project follows versioned releases.
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- The portfolio, portfolio-group and asset-category bulk-delete preflights
|
|
13
|
+
report what the delete reaches through foreign keys. They return the
|
|
14
|
+
MetaTables `delete_rows` impact as `impact`, describe each cascade,
|
|
15
|
+
`SET NULL` or `SET DEFAULT` action in `warnings`, and add MetaTables'
|
|
16
|
+
blockers (for example a cascade into a table the caller cannot write), which
|
|
17
|
+
also stop the bulk delete with `409`. If MetaTables cannot compute the
|
|
18
|
+
impact, a warning says so and the delete is not blocked.
|
|
19
|
+
`BulkDeletePreflightResponse` and the `TableImpact` models are exported from
|
|
20
|
+
`msm.api.http`, and `delete_rows_impact` from `msm.services`.
|
|
21
|
+
|
|
10
22
|
## [2.2.2] - 2026-10-03
|
|
11
23
|
|
|
12
24
|
### Changed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: ms-markets
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.3.dev12
|
|
4
4
|
Summary: Financial markets ORM, engines, and application management extensions for Main Sequence.
|
|
5
5
|
Project-URL: Changelog, https://github.com/mainsequence-projects/MainSequenceMarkets/blob/main/CHANGELOG.md
|
|
6
6
|
Project-URL: Source, https://github.com/mainsequence-projects/MainSequenceMarkets
|
{ms_markets-2.2.2.dev11 → ms_markets-2.2.3.dev12}/docs/fast_api/v1/command_center_bulk_actions.md
RENAMED
|
@@ -46,6 +46,29 @@ selected UID and reports `allowed`, `matched_count`, `blockers`, and `warnings`
|
|
|
46
46
|
without mutating data. Portfolio preflight also evaluates protected
|
|
47
47
|
VirtualFund and target-position references.
|
|
48
48
|
|
|
49
|
+
Each bulk-delete preflight also reports what deleting rows from the resource's
|
|
50
|
+
table reaches through foreign keys. It asks MetaTables
|
|
51
|
+
(`MetaTable.get_impact(action="delete_rows")`) and adds:
|
|
52
|
+
|
|
53
|
+
- `impact`: the MetaTables impact graph. Nodes are the tables the delete
|
|
54
|
+
reaches, with their effects and the caller's effective write. Edges are
|
|
55
|
+
classified as `cascade_delete`, `cascade_update`, `set_null`, `set_default`,
|
|
56
|
+
`restrict` or `reads`. MetaTables' blockers are included.
|
|
57
|
+
- `warnings`: one sentence for each foreign-key action the delete triggers, for
|
|
58
|
+
example "PortfolioGroupMembership rows that reference deleted PortfolioGroup
|
|
59
|
+
rows are deleted too (ON DELETE CASCADE)." Command Center shows warnings
|
|
60
|
+
without custom rendering.
|
|
61
|
+
- `blockers`: MetaTables' reasons the caller may not run the delete, such as a
|
|
62
|
+
cascade into a table the caller cannot write, prefixed with that table. The
|
|
63
|
+
preflight then answers `allowed: false` and execution answers `409` before
|
|
64
|
+
the database refuses the delete.
|
|
65
|
+
|
|
66
|
+
Deleting portfolios or portfolio groups cascades to their
|
|
67
|
+
`PortfolioGroupMembership` rows; deleting asset categories cascades to their
|
|
68
|
+
`AssetCategoryMembership` rows. If MetaTables cannot compute the impact,
|
|
69
|
+
`impact` is `null` and a warning says so. The preflight is not blocked, because
|
|
70
|
+
the database still applies and enforces every foreign-key action.
|
|
71
|
+
|
|
49
72
|
Execution repeats preflight immediately before invoking domain deletion. A
|
|
50
73
|
blocked selection returns HTTP `409` and does not call the delete service. The
|
|
51
74
|
underlying delete operation still performs its own conflict checks, protecting
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ms-markets"
|
|
7
|
-
version = "2.2.
|
|
7
|
+
version = "2.2.3.dev12"
|
|
8
8
|
description = "Financial markets ORM, engines, and application management extensions for Main Sequence."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.13,<3.14"
|
|
@@ -13,6 +13,7 @@ from .bulk_actions import (
|
|
|
13
13
|
BulkActionPreflightResponse,
|
|
14
14
|
BulkActionResourceId,
|
|
15
15
|
BulkActionSelection,
|
|
16
|
+
BulkDeletePreflightResponse,
|
|
16
17
|
blocked_preflight_detail,
|
|
17
18
|
build_bulk_delete_action,
|
|
18
19
|
explicit_uuid_selection,
|
|
@@ -78,6 +79,12 @@ from .tabular import (
|
|
|
78
79
|
build_tabular_field,
|
|
79
80
|
build_tabular_frame,
|
|
80
81
|
)
|
|
82
|
+
from .table_impact import (
|
|
83
|
+
TableImpact,
|
|
84
|
+
TableImpactBlocker,
|
|
85
|
+
TableImpactEdge,
|
|
86
|
+
TableImpactNode,
|
|
87
|
+
)
|
|
81
88
|
|
|
82
89
|
__all__ = [
|
|
83
90
|
"BULK_ACTION_EXECUTION_CONTRACT",
|
|
@@ -98,6 +105,7 @@ __all__ = [
|
|
|
98
105
|
"BulkActionPreflightResponse",
|
|
99
106
|
"BulkActionResourceId",
|
|
100
107
|
"BulkActionSelection",
|
|
108
|
+
"BulkDeletePreflightResponse",
|
|
101
109
|
"ErrorCode",
|
|
102
110
|
"ErrorResponse",
|
|
103
111
|
"InMemoryOperationStore",
|
|
@@ -123,6 +131,10 @@ __all__ = [
|
|
|
123
131
|
"ResourceSearchControl",
|
|
124
132
|
"ResourceSelectFilter",
|
|
125
133
|
"ResourceTextFilter",
|
|
134
|
+
"TableImpact",
|
|
135
|
+
"TableImpactBlocker",
|
|
136
|
+
"TableImpactEdge",
|
|
137
|
+
"TableImpactNode",
|
|
126
138
|
"TabularFrameFieldResponse",
|
|
127
139
|
"TabularFrameMetaResponse",
|
|
128
140
|
"TabularFrameResponse",
|
|
@@ -8,6 +8,7 @@ from uuid import UUID
|
|
|
8
8
|
from pydantic import Field, StrictFloat, StrictInt, field_validator, model_validator
|
|
9
9
|
|
|
10
10
|
from ._base import HttpContractModel
|
|
11
|
+
from .table_impact import TableImpact
|
|
11
12
|
|
|
12
13
|
BULK_ACTION_EXECUTION_CONTRACT = "command-center.bulk_action_execution@v1"
|
|
13
14
|
BULK_ACTION_PREFLIGHT_CONTRACT = "command-center.bulk_action_preflight@v1"
|
|
@@ -134,6 +135,20 @@ class BulkActionPreflightResponse(HttpContractModel):
|
|
|
134
135
|
warnings: list[str] | None = None
|
|
135
136
|
|
|
136
137
|
|
|
138
|
+
class BulkDeletePreflightResponse(BulkActionPreflightResponse):
|
|
139
|
+
"""Bulk-delete preflight that also reports what deleting the selection reaches."""
|
|
140
|
+
|
|
141
|
+
impact: TableImpact | None = Field(
|
|
142
|
+
default=None,
|
|
143
|
+
description=(
|
|
144
|
+
"MetaTables delete_rows impact for the table the selected rows are deleted "
|
|
145
|
+
"from: the tables its foreign-key actions reach, the effect on each and the "
|
|
146
|
+
"caller's effective write. Each cascade is also summarized in warnings. "
|
|
147
|
+
"Null when nothing matched or MetaTables could not compute it."
|
|
148
|
+
),
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
|
|
137
152
|
def build_bulk_delete_action(
|
|
138
153
|
*,
|
|
139
154
|
action_id: str,
|
|
@@ -203,6 +218,7 @@ __all__ = [
|
|
|
203
218
|
"BulkActionPreflightResponse",
|
|
204
219
|
"BulkActionResourceId",
|
|
205
220
|
"BulkActionSelection",
|
|
221
|
+
"BulkDeletePreflightResponse",
|
|
206
222
|
"blocked_preflight_detail",
|
|
207
223
|
"build_bulk_delete_action",
|
|
208
224
|
"explicit_uuid_selection",
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"""MetaTables table-impact contract: what a row action reaches through foreign keys."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from pydantic import Field
|
|
6
|
+
|
|
7
|
+
from ._base import HttpContractModel
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class _TableImpactModel(HttpContractModel):
|
|
11
|
+
# MetaTables owns this shape; drop fields that newer MetaTables releases add.
|
|
12
|
+
model_config = HttpContractModel.model_config | {"extra": "ignore"}
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class TableImpactNode(_TableImpactModel):
|
|
16
|
+
"""A table, unregistered relation, update or hidden table the action reaches."""
|
|
17
|
+
|
|
18
|
+
id: str
|
|
19
|
+
type: str = Field(description="meta_table, relation, update or hidden.")
|
|
20
|
+
uid: str | None = None
|
|
21
|
+
identifier: str | None = None
|
|
22
|
+
namespace: str | None = None
|
|
23
|
+
table_kind: str | None = None
|
|
24
|
+
physical_schema: str | None = None
|
|
25
|
+
physical_table_name: str | None = None
|
|
26
|
+
output_table_uid: str | None = None
|
|
27
|
+
effects: list[str] = Field(
|
|
28
|
+
default_factory=list,
|
|
29
|
+
description="What the action does here: drop, delete, update or input_changed.",
|
|
30
|
+
)
|
|
31
|
+
can_write: bool | None = Field(
|
|
32
|
+
default=None,
|
|
33
|
+
description="The caller's effective write after cascade narrowing; null for updates.",
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class TableImpactEdge(_TableImpactModel):
|
|
38
|
+
"""Points from the dependent (referencing table or reading update) to what it depends on."""
|
|
39
|
+
|
|
40
|
+
source: str
|
|
41
|
+
target: str
|
|
42
|
+
kind: str = Field(description="foreign_key, alembic_version or reads.")
|
|
43
|
+
effect: str = Field(
|
|
44
|
+
description=(
|
|
45
|
+
"cascade_delete, cascade_update, set_null, set_default, restrict "
|
|
46
|
+
"(fails while referencing rows exist), drop or reads."
|
|
47
|
+
)
|
|
48
|
+
)
|
|
49
|
+
name: str | None = None
|
|
50
|
+
on_delete: str | None = None
|
|
51
|
+
on_update: str | None = None
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class TableImpactBlocker(_TableImpactModel):
|
|
55
|
+
"""A reason MetaTables gives for refusing the action, and the node it concerns."""
|
|
56
|
+
|
|
57
|
+
code: str
|
|
58
|
+
message: str
|
|
59
|
+
node: str | None = None
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
class TableImpact(_TableImpactModel):
|
|
63
|
+
"""MetaTables' answer to what an action on a table reaches and whether it may run."""
|
|
64
|
+
|
|
65
|
+
root_uid: str
|
|
66
|
+
action: str = Field(description="delete_rows, update_keys or drop_table.")
|
|
67
|
+
allowed: bool
|
|
68
|
+
nodes: list[TableImpactNode]
|
|
69
|
+
edges: list[TableImpactEdge]
|
|
70
|
+
blockers: list[TableImpactBlocker]
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
__all__ = [
|
|
74
|
+
"TableImpact",
|
|
75
|
+
"TableImpactBlocker",
|
|
76
|
+
"TableImpactEdge",
|
|
77
|
+
"TableImpactNode",
|
|
78
|
+
]
|
|
@@ -41,6 +41,7 @@ _EXPORTS = {
|
|
|
41
41
|
"create_portfolio": ".portfolios",
|
|
42
42
|
"create_portfolio_group": ".portfolios",
|
|
43
43
|
"create_virtual_fund": ".accounts",
|
|
44
|
+
"DeleteRowsImpact": ".table_impact",
|
|
44
45
|
"delete_account": ".accounts",
|
|
45
46
|
"delete_account_group": ".reference_data",
|
|
46
47
|
"delete_account_target_allocation": ".accounts",
|
|
@@ -50,6 +51,7 @@ _EXPORTS = {
|
|
|
50
51
|
"delete_asset_category": ".asset_categories",
|
|
51
52
|
"delete_asset_category_record": ".asset_master_lists",
|
|
52
53
|
"delete_index_record": ".asset_master_lists",
|
|
54
|
+
"delete_rows_impact": ".table_impact",
|
|
53
55
|
"delete_calendar": ".reference_data",
|
|
54
56
|
"delete_calendar_date_record": ".calendars",
|
|
55
57
|
"delete_calendar_event_record": ".calendars",
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"""MetaTables delete impact, rendered as bulk-delete preflight warnings and blockers."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from dataclasses import dataclass, field
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
from mainsequence.logconf import logger as _mainsequence_logger
|
|
9
|
+
|
|
10
|
+
from msm.api.http import TableImpact, TableImpactEdge, TableImpactNode
|
|
11
|
+
|
|
12
|
+
logger = _mainsequence_logger.bind(sub_application="markets", component="table_impact")
|
|
13
|
+
|
|
14
|
+
IMPACT_UNAVAILABLE_WARNING = (
|
|
15
|
+
"MetaTables could not report which tables this delete reaches through foreign keys. "
|
|
16
|
+
"The database still applies every foreign-key action when the rows are deleted."
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
# What a foreign-key action does to the referencing rows, by MetaTables edge effect.
|
|
20
|
+
_REFERENCING_ROW_OUTCOMES = {
|
|
21
|
+
"cascade_delete": "are deleted too",
|
|
22
|
+
"cascade_update": "are updated too",
|
|
23
|
+
"set_null": "have that reference set to NULL",
|
|
24
|
+
"set_default": "have that reference reset to its default",
|
|
25
|
+
}
|
|
26
|
+
# The edge effect each ON DELETE action produces; any other effect follows ON UPDATE.
|
|
27
|
+
_ON_DELETE_EFFECTS = {
|
|
28
|
+
"cascade": "cascade_delete",
|
|
29
|
+
"set null": "set_null",
|
|
30
|
+
"set default": "set_default",
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
@dataclass(frozen=True)
|
|
35
|
+
class DeleteRowsImpact:
|
|
36
|
+
"""MetaTables' delete impact with the preflight warnings and blockers it implies."""
|
|
37
|
+
|
|
38
|
+
impact: TableImpact | None
|
|
39
|
+
warnings: list[str] = field(default_factory=list)
|
|
40
|
+
blockers: list[str] = field(default_factory=list)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def delete_rows_impact(model: type[Any]) -> DeleteRowsImpact:
|
|
44
|
+
"""Ask MetaTables what deleting rows from ``model``'s table reaches.
|
|
45
|
+
|
|
46
|
+
Each foreign-key action the delete triggers (cascades, SET NULL, SET DEFAULT)
|
|
47
|
+
becomes a warning, and each reason MetaTables gives for refusing the delete
|
|
48
|
+
becomes a blocker. The impact is advisory: the database enforces the same rules
|
|
49
|
+
when the rows are deleted, so an unavailable impact only adds a warning.
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
meta_table = model.get_meta_table()
|
|
53
|
+
if meta_table is None:
|
|
54
|
+
logger.warning("MetaTables delete impact skipped: model is not bound", model=model.__name__)
|
|
55
|
+
return DeleteRowsImpact(impact=None, warnings=[IMPACT_UNAVAILABLE_WARNING])
|
|
56
|
+
try:
|
|
57
|
+
impact = TableImpact.model_validate(
|
|
58
|
+
meta_table.get_impact(action="delete_rows").model_dump(mode="json")
|
|
59
|
+
)
|
|
60
|
+
except Exception:
|
|
61
|
+
logger.exception("MetaTables delete impact failed", model=model.__name__)
|
|
62
|
+
return DeleteRowsImpact(impact=None, warnings=[IMPACT_UNAVAILABLE_WARNING])
|
|
63
|
+
|
|
64
|
+
nodes = {node.id: node for node in impact.nodes}
|
|
65
|
+
warnings = [
|
|
66
|
+
_foreign_key_warning(edge, nodes)
|
|
67
|
+
for edge in impact.edges
|
|
68
|
+
if edge.kind == "foreign_key" and edge.effect in _REFERENCING_ROW_OUTCOMES
|
|
69
|
+
]
|
|
70
|
+
blockers = [
|
|
71
|
+
f"{_label(nodes.get(blocker.node), sentence_start=True)}: {blocker.message}"
|
|
72
|
+
if blocker.node
|
|
73
|
+
else blocker.message
|
|
74
|
+
for blocker in impact.blockers
|
|
75
|
+
]
|
|
76
|
+
return DeleteRowsImpact(
|
|
77
|
+
impact=impact,
|
|
78
|
+
warnings=list(dict.fromkeys(warnings)),
|
|
79
|
+
blockers=blockers,
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def _foreign_key_warning(edge: TableImpactEdge, nodes: dict[str, TableImpactNode]) -> str:
|
|
84
|
+
# Edges point from the referencing table (source) to the table it references.
|
|
85
|
+
source = nodes.get(edge.source)
|
|
86
|
+
target = nodes.get(edge.target)
|
|
87
|
+
deleted = (
|
|
88
|
+
target is not None
|
|
89
|
+
and "delete" in target.effects
|
|
90
|
+
and _ON_DELETE_EFFECTS.get((edge.on_delete or "").lower()) == edge.effect
|
|
91
|
+
)
|
|
92
|
+
action = edge.on_delete if deleted else edge.on_update
|
|
93
|
+
clause = f" (ON {'DELETE' if deleted else 'UPDATE'} {action.upper()})" if action else ""
|
|
94
|
+
return (
|
|
95
|
+
f"{_rows(source, sentence_start=True)} that reference "
|
|
96
|
+
f"{'deleted' if deleted else 'changed'} {_rows(target)} "
|
|
97
|
+
f"{_REFERENCING_ROW_OUTCOMES[edge.effect]}{clause}."
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def _rows(node: TableImpactNode | None, *, sentence_start: bool = False) -> str:
|
|
102
|
+
if node is None or node.type == "hidden":
|
|
103
|
+
return f"{'R' if sentence_start else 'r'}ows in a table you cannot view"
|
|
104
|
+
return f"{_label(node)} rows"
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def _label(node: TableImpactNode | None, *, sentence_start: bool = False) -> str:
|
|
108
|
+
# Hidden tables are opaque: MetaTables reports that they are affected, not which.
|
|
109
|
+
if node is None or node.type == "hidden":
|
|
110
|
+
return f"{'A' if sentence_start else 'a'} table you cannot view"
|
|
111
|
+
if node.identifier:
|
|
112
|
+
return node.identifier
|
|
113
|
+
if node.physical_table_name:
|
|
114
|
+
schema = f"{node.physical_schema}." if node.physical_schema else ""
|
|
115
|
+
return f"{schema}{node.physical_table_name}"
|
|
116
|
+
return node.id
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
__all__ = [
|
|
120
|
+
"IMPACT_UNAVAILABLE_WARNING",
|
|
121
|
+
"DeleteRowsImpact",
|
|
122
|
+
"delete_rows_impact",
|
|
123
|
+
]
|
|
@@ -8,6 +8,8 @@ from fastapi.testclient import TestClient
|
|
|
8
8
|
|
|
9
9
|
from apps.v1.main import app
|
|
10
10
|
from apps.v1.services import asset_categories, portfolio_groups, portfolios
|
|
11
|
+
from msm.api.http import TableImpact
|
|
12
|
+
from msm.services.table_impact import DeleteRowsImpact
|
|
11
13
|
|
|
12
14
|
|
|
13
15
|
@pytest.mark.parametrize(
|
|
@@ -102,6 +104,7 @@ def test_bulk_action_preflight_preserves_blockers(
|
|
|
102
104
|
"matched_count": 1,
|
|
103
105
|
"blockers": ["Protected reference exists."],
|
|
104
106
|
"warnings": [],
|
|
107
|
+
"impact": None,
|
|
105
108
|
"domain_context": {"resource_uid": str(resource_uid)},
|
|
106
109
|
}
|
|
107
110
|
|
|
@@ -180,8 +183,7 @@ def test_bulk_action_operations_are_exposed_by_command_center_adapter() -> None:
|
|
|
180
183
|
response = TestClient(app).get("/.well-known/command-center/connection-contract")
|
|
181
184
|
assert response.status_code == 200
|
|
182
185
|
operations = {
|
|
183
|
-
operation["operationId"]: operation
|
|
184
|
-
for operation in response.json()["availableOperations"]
|
|
186
|
+
operation["operationId"]: operation for operation in response.json()["availableOperations"]
|
|
185
187
|
}
|
|
186
188
|
|
|
187
189
|
for operation_id in (
|
|
@@ -215,6 +217,9 @@ def test_asset_category_preflight_is_owned_by_apps_v1(monkeypatch) -> None:
|
|
|
215
217
|
"_get_asset_category_frontend_detail",
|
|
216
218
|
lambda context, uid: {"uid": uid} if uid == existing_uid else None,
|
|
217
219
|
)
|
|
220
|
+
monkeypatch.setattr(
|
|
221
|
+
asset_categories, "_asset_category_delete_impact", lambda: DeleteRowsImpact(impact=None)
|
|
222
|
+
)
|
|
218
223
|
|
|
219
224
|
result = asset_categories.preflight_bulk_delete_asset_categories(
|
|
220
225
|
uids=[existing_uid, missing_uid, existing_uid]
|
|
@@ -226,6 +231,7 @@ def test_asset_category_preflight_is_owned_by_apps_v1(monkeypatch) -> None:
|
|
|
226
231
|
"matched_count": 1,
|
|
227
232
|
"blockers": [f"Asset category {missing_uid} was not found."],
|
|
228
233
|
"warnings": [],
|
|
234
|
+
"impact": None,
|
|
229
235
|
}
|
|
230
236
|
|
|
231
237
|
|
|
@@ -242,17 +248,19 @@ def test_portfolio_group_preflight_is_owned_by_apps_v1(monkeypatch) -> None:
|
|
|
242
248
|
"_get_portfolio_group_by_uid",
|
|
243
249
|
lambda context, uid: {"results": [{"uid": uid}]},
|
|
244
250
|
)
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
uids=[first_uid, second_uid]
|
|
251
|
+
monkeypatch.setattr(
|
|
252
|
+
portfolio_groups, "_portfolio_group_delete_impact", lambda: DeleteRowsImpact(impact=None)
|
|
248
253
|
)
|
|
249
254
|
|
|
255
|
+
result = portfolio_groups.preflight_bulk_delete_portfolio_groups(uids=[first_uid, second_uid])
|
|
256
|
+
|
|
250
257
|
assert result.model_dump() == {
|
|
251
258
|
"allowed": True,
|
|
252
259
|
"detail": "2 portfolio groups are ready for deletion.",
|
|
253
260
|
"matched_count": 2,
|
|
254
261
|
"blockers": [],
|
|
255
262
|
"warnings": [],
|
|
263
|
+
"impact": None,
|
|
256
264
|
}
|
|
257
265
|
|
|
258
266
|
|
|
@@ -268,6 +276,9 @@ def test_portfolio_preflight_is_owned_by_apps_v1(monkeypatch) -> None:
|
|
|
268
276
|
"_portfolio_delete_preflight_item",
|
|
269
277
|
lambda context, uid: (True, ["VirtualFundTable references this portfolio."]),
|
|
270
278
|
)
|
|
279
|
+
monkeypatch.setattr(
|
|
280
|
+
portfolios, "_portfolio_delete_impact", lambda: DeleteRowsImpact(impact=None)
|
|
281
|
+
)
|
|
271
282
|
|
|
272
283
|
result = portfolios.preflight_bulk_delete_portfolios(uids=[portfolio_uid])
|
|
273
284
|
|
|
@@ -275,8 +286,101 @@ def test_portfolio_preflight_is_owned_by_apps_v1(monkeypatch) -> None:
|
|
|
275
286
|
"allowed": False,
|
|
276
287
|
"detail": "The portfolio selection cannot be deleted as submitted.",
|
|
277
288
|
"matched_count": 1,
|
|
278
|
-
"blockers": [
|
|
279
|
-
f"Portfolio {portfolio_uid}: VirtualFundTable references this portfolio."
|
|
280
|
-
],
|
|
289
|
+
"blockers": [f"Portfolio {portfolio_uid}: VirtualFundTable references this portfolio."],
|
|
281
290
|
"warnings": [],
|
|
291
|
+
"impact": None,
|
|
282
292
|
}
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
def _stub_portfolio_group_preflight(monkeypatch, impact: DeleteRowsImpact) -> None:
|
|
296
|
+
monkeypatch.setattr(
|
|
297
|
+
portfolio_groups,
|
|
298
|
+
"_get_runtime",
|
|
299
|
+
lambda: SimpleNamespace(context=object()),
|
|
300
|
+
)
|
|
301
|
+
monkeypatch.setattr(
|
|
302
|
+
portfolio_groups,
|
|
303
|
+
"_get_portfolio_group_by_uid",
|
|
304
|
+
lambda context, uid: {"results": [{"uid": uid}]},
|
|
305
|
+
)
|
|
306
|
+
monkeypatch.setattr(portfolio_groups, "_portfolio_group_delete_impact", lambda: impact)
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
def test_portfolio_group_preflight_reports_cascades(monkeypatch) -> None:
|
|
310
|
+
group_uid = str(uuid.uuid4())
|
|
311
|
+
membership_uid = str(uuid.uuid4())
|
|
312
|
+
warning = (
|
|
313
|
+
"PortfolioGroupMembership rows that reference deleted PortfolioGroup rows "
|
|
314
|
+
"are deleted too (ON DELETE CASCADE)."
|
|
315
|
+
)
|
|
316
|
+
impact = TableImpact(
|
|
317
|
+
root_uid=group_uid,
|
|
318
|
+
action="delete_rows",
|
|
319
|
+
allowed=True,
|
|
320
|
+
nodes=[
|
|
321
|
+
{
|
|
322
|
+
"id": group_uid,
|
|
323
|
+
"type": "meta_table",
|
|
324
|
+
"identifier": "PortfolioGroup",
|
|
325
|
+
"effects": ["delete"],
|
|
326
|
+
"can_write": True,
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"id": membership_uid,
|
|
330
|
+
"type": "meta_table",
|
|
331
|
+
"identifier": "PortfolioGroupMembership",
|
|
332
|
+
"effects": ["delete"],
|
|
333
|
+
"can_write": True,
|
|
334
|
+
},
|
|
335
|
+
],
|
|
336
|
+
edges=[
|
|
337
|
+
{
|
|
338
|
+
"source": membership_uid,
|
|
339
|
+
"target": group_uid,
|
|
340
|
+
"kind": "foreign_key",
|
|
341
|
+
"effect": "cascade_delete",
|
|
342
|
+
"on_delete": "cascade",
|
|
343
|
+
"on_update": "no action",
|
|
344
|
+
},
|
|
345
|
+
],
|
|
346
|
+
blockers=[],
|
|
347
|
+
)
|
|
348
|
+
_stub_portfolio_group_preflight(
|
|
349
|
+
monkeypatch, DeleteRowsImpact(impact=impact, warnings=[warning])
|
|
350
|
+
)
|
|
351
|
+
|
|
352
|
+
response = TestClient(app).post(
|
|
353
|
+
"/api/v1/portfolio-group/bulk-delete/preflight/",
|
|
354
|
+
json={"selection": {"mode": "explicit", "uids": [group_uid]}, "options": {}},
|
|
355
|
+
)
|
|
356
|
+
|
|
357
|
+
assert response.status_code == 200
|
|
358
|
+
assert response.json() == {
|
|
359
|
+
"allowed": True,
|
|
360
|
+
"detail": "1 portfolio group is ready for deletion.",
|
|
361
|
+
"matched_count": 1,
|
|
362
|
+
"blockers": [],
|
|
363
|
+
"warnings": [warning],
|
|
364
|
+
"impact": impact.model_dump(mode="json"),
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
def test_cascade_blockers_stop_bulk_delete(monkeypatch) -> None:
|
|
369
|
+
blocker = "PortfolioGroupMembership: A cascade reaches a table you cannot write."
|
|
370
|
+
_stub_portfolio_group_preflight(monkeypatch, DeleteRowsImpact(impact=None, blockers=[blocker]))
|
|
371
|
+
|
|
372
|
+
def unexpected_delete(*args, **kwargs):
|
|
373
|
+
raise AssertionError("Deletion must not run after a blocked preflight.")
|
|
374
|
+
|
|
375
|
+
monkeypatch.setattr(
|
|
376
|
+
"apps.v1.routers.portfolio_groups.bulk_delete_portfolio_groups",
|
|
377
|
+
unexpected_delete,
|
|
378
|
+
)
|
|
379
|
+
|
|
380
|
+
response = TestClient(app).post(
|
|
381
|
+
"/api/v1/portfolio-group/bulk-delete/",
|
|
382
|
+
json={"selection": {"mode": "explicit", "uids": [str(uuid.uuid4())]}, "options": {}},
|
|
383
|
+
)
|
|
384
|
+
|
|
385
|
+
assert response.status_code == 409
|
|
386
|
+
assert response.json() == {"detail": blocker}
|