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