mainsequence-metatable 0.1.7.dev9__tar.gz → 0.1.8.dev11__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.
- mainsequence_metatable-0.1.8.dev11/.mainsequence/workflows/metatables-api.yaml +40 -0
- {mainsequence_metatable-0.1.7.dev9/src/mainsequence_metatable.egg-info → mainsequence_metatable-0.1.8.dev11}/PKG-INFO +1 -1
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md +5 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/adr/api/0008-mysql-mssql-table-workflows.md +4 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/adr/api/0013-application-owned-migrations.md +4 -0
- mainsequence_metatable-0.1.8.dev11/docs/adr/api/0014-main-sequence-release-jobs-and-production-migrations.md +67 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/adr/index.md +1 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/operations/catalog-migrations.md +5 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/operations/hosted-runtime.md +6 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/reference/capabilities.md +1 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/reference/cli.md +1 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/mkdocs.yml +1 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/pyproject.toml +1 -1
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11/src/mainsequence_metatable.egg-info}/PKG-INFO +1 -1
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/mainsequence_metatable.egg-info/SOURCES.txt +2 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/bootstrap.py +20 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/cli/app.py +34 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/endpoint.py +5 -1
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/contracts/capabilities.json +12 -0
- mainsequence_metatable-0.1.8.dev11/tests/e2e/test_runtime_upgrade.py +55 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/uv.lock +1 -1
- mainsequence_metatable-0.1.7.dev9/.mainsequence/workflows/metatables-api.yaml +0 -10
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/.agents/skills/client/metatables-local-development/SKILL.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/.agents/skills/client/metatables-meta-tables/SKILL.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/.agents/skills/client/metatables-migrations/SKILL.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/.agents/skills/client/metatables-time-index-table-updates/SKILL.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/.agents/skills/client/metatables-upgrade-legacy-app/SKILL.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/LICENSE +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/MANIFEST.in +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/README.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/alembic.ini +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/api/metatables/main.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/compose.database-tests.yml +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/adr/api/0002-application-administration-and-table-ownership.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/adr/api/0004-approved-application-migrations.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/adr/api/0005-run-logs-and-local-file-capture.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/adr/api/0006-historical-run-graphs.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/adr/api/0007-database-enforced-table-access.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/adr/api/0007-database-roles-and-privileges.svg +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/adr/api/0007-query-enforcement-path.svg +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/adr/api/0009-shared-credential-store.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/adr/api/0010-import-external-tables-and-views.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/adr/api/0012-bounded-data-transfer-and-safe-retries.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/adr/client/0003-api-endpoint-resolution.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/adr/client/0011-cli-local-development-with-managed-admin.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/api/authentication-and-errors.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/api/data-sources.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/api/openapi.json +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/api/overview.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/api/reference.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/api/tables-and-migrations.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/api/time-index-and-updates.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/assets/branding/metatables.svg +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/assets/diagrams/local-client-experience.svg +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/client/bounded-transfers.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/client/build-an-updater.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/client/define-and-migrate-tables.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/client/installation-and-connection.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/client/local-storage.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/client/query-and-mutate.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/client/quickstart.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/client/read-existing-time-index-tables.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/client/register-existing-tables.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/client/tutorial.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/client/upgrade-legacy-app.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/concepts/architecture.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/concepts/data-sources.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/concepts/identity-and-scope.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/concepts/permissions-namespaces-labels.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/concepts/runs-and-execution-graphs.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/concepts/table-contracts-and-lifecycle.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/concepts/time-index-tables-and-updates.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/contributing/architecture-and-boundaries.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/contributing/database-backends.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/contributing/documentation.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/contributing/releasing.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/contributing/testing.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/README.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/bounded_reader.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/data_sources/README.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/data_sources/mssql.json +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/data_sources/mysql.json +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/data_sources/postgresql.json +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/data_sources/register.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/external_table.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/local_app/README.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/local_app/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/local_app/__main__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/local_app/migrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/local_app/migrations/env.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/local_app/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/local_app/tables.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/query.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/quickstart.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/reader.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/scripts/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/scripts/setup_metatables.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/tables.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/tutorial/README.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/tutorial/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/tutorial/__main__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/tutorial/data/README.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/tutorial/frames.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/tutorial/migrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/tutorial/migrations/env.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/tutorial/migrations/registry.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/tutorial/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/tutorial/migrations/versions/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/tutorial/operations.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/tutorial/tables.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/tutorial/updaters.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/updater.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/index.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/operations/configuration.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/operations/local-runtime.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/operations/recovery-and-observability.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/operations/run-history.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/operations/run-logs.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/reference/python.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/security/index.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/security/ownership-and-sharing.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/security/permissions.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/scripts/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/scripts/build_reference.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/scripts/check_boundaries.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/scripts/check_client_api_coverage.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/scripts/check_distribution_sources.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/scripts/check_docs.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/scripts/check_examples_debug.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/scripts/check_project.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/scripts/dev_release_version.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/scripts/test_databases.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/scripts/test_postgresql.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/setup.cfg +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/mainsequence_metatable.egg-info/dependency_links.txt +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/mainsequence_metatable.egg-info/entry_points.txt +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/mainsequence_metatable.egg-info/requires.txt +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/mainsequence_metatable.egg-info/top_level.txt +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/_admin_source.json +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/_build.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/_skill_bundle.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/auth/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/auth/boundary.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/auth/caller_assertions.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/auth/local_actor.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/configuration.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/credential_admin.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/development.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/development_client.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/main.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/platform_cache.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/column_search.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/contract_validation.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/data_sources.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/managed_finalize.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/migration_connection.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/namespaces.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/run_logs.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/runtime_context.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/schema_graph.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/security.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/table_cascade.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/table_crud.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/table_delete.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/table_filter.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/table_import.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/table_introspection.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/table_patch.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/table_registration.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/table_response.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/table_search_document.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/table_sql.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/table_update_pipeline.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/time_index_delete.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/time_index_reads.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/time_index_stats.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/update_batch.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/update_chunk_insert.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/update_constants.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/update_crud.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/update_details.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/update_graph.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/update_index_statistics.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/update_registration.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/update_runs.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/routes/update_statistics.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/runtime.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/runtime_control.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/source_passwords.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/source_registrations.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/app/transfer.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/access.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/maintenance/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/maintenance/postgresql.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/maintenance/runtime.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/maintenance/temporal.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/maintenance/timescaledb.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/maintenance/validation.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/postgresql_cascade_delete.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/postgresql_connection.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/postgresql_introspection.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/postgresql_table_delete.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/postgresql_tables.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/postgresql_time_index.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/postgresql_time_index_delete.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/postgresql_time_index_queries.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/postgresql_time_index_stats.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/postgresql_time_index_write.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/source_validation.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/sqlite_connection.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/sqlite_introspection.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/adapters/table_cursor.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/catalog.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/catalog_ddl.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/catalog_types.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/contracts.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/hosted.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/hosted_access.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/migration_connection.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/native.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/operations.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/pages.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/postgresql_access.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/registry.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/relation_tables.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/relational.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/restricted_sql.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/sqlite_access.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/backends/streaming.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/contracts/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/contracts/relation_import.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/contracts/storage_layouts.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/contracts/table_contracts.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/contracts/values.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/domain/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/domain/catalog_rules.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/domain/data_source_rules.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/domain/index_statistics.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/domain/label_rules.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/domain/permission_rules.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/domain/update_constants.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/integrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/integrations/catalog_data_sources.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/integrations/credential_keys.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/integrations/credential_store.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/integrations/data_source_provider.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/integrations/local_credentials.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/integrations/local_workspace.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/integrations/platform_principals.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/integrations/run_logs.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/integrations/runtime_binding.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/integrations/runtime_data_sources.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/integrations/source_validation.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/migrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/migrations/env.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/migrations/versions/0001_initial.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/migrations/versions/0002_security_model.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/migrations/versions/0003_run_log_capture.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/migrations/versions/0004_historical_run_graphs.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/migrations/versions/0005_database_access.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/migrations/versions/0006_local_credentials.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/migrations/versions/0007_external_relation_names.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/migrations/versions/0008_upload_receipts.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/migrations/versions/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/operations/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/operations/bootstrap_migrations.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/operations/catalog_schema.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/operations/create_table.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/operations/finalize_managed.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/operations/import_relations.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/operations/introspect_table.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/operations/read_time_index.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/operations/register_catalog.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/operations/search_documents.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/cascade.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/catalog.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/database.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/grants.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/labels.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/locking.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/models.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/physical_operations.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/projections.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/run_graphs.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/schema_graph.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/sqlite_types.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/table_body_filter.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/table_queries.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/table_response.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/update_graph.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/update_pipeline.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/updates.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/persistence/upload_receipts.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/backend/presentation/data_source_summary.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/metatables/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/metatables/configuration.yaml +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/api/metatables/main.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/cli/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/cli/admin_install.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/cli/filters.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/cli/local.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/cli/migrations.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/cli/project.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/cli/skills.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/compiled_sql/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/compiled_sql/mssql.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/compiled_sql/v1.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/dtype_codec.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/README.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/bounded_reader.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/data_sources/README.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/data_sources/mssql.json +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/data_sources/mysql.json +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/data_sources/postgresql.json +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/data_sources/register.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/external_table.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/local_app/README.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/local_app/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/local_app/__main__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/local_app/migrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/local_app/migrations/env.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/local_app/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/local_app/tables.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/query.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/quickstart.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/reader.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/scripts/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/scripts/setup_metatables.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/tables.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/tutorial/README.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/tutorial/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/tutorial/__main__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/tutorial/data/README.md +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/tutorial/frames.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/tutorial/migrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/tutorial/migrations/env.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/tutorial/migrations/registry.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/tutorial/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/tutorial/migrations/versions/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/tutorial/operations.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/tutorial/tables.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/tutorial/updaters.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/examples/updater.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/future_registry.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/hashing.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/instrumentation.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/local_connection.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/local_files.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/local_run_logs.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/log_contract.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/migrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/migrations/alembic.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/migrations/connection.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/migrations/env.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/migrations/provider.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/migrations/registry.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/migrations/runner.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/migrations/scaffold.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/migrations/templates/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/migrations/templates/env.py.mako +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/migrations/templates/script.py.mako +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/migrations/tls.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/models.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/pydantic_metadata.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/run_logging.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/runtime.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/runtime_context.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/runtime_contract.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/schema_names.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/sdk_compat.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/sqlalchemy_contracts.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/time_index_table_refs.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/transfer.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/transfer_contract.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/transport.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/update_configuration_contract.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/updaters/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/updaters/configuration.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/updaters/dependencies.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/updaters/managers.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/updaters/namespacing.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/updaters/runner.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/updaters/updaters.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/updaters/utils.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/upload.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/auth/test_caller_assertions.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/auth/test_data_source_identity.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/auth/test_development_client.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/auth/test_hosted_environment_target.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/auth/test_local_mode.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/auth/test_platform_fact_cache.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/auth/test_runtime_bootstrap.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/auth/test_runtime_scaffold.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/auth/test_runtime_selection.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/auth/test_runtime_storage_binding.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/auth/test_source_passwords.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/catalog/test_catalog_foundation.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/catalog/test_contract_projection.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/catalog/test_database_config.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/catalog/test_index_statistics.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/catalog/test_migration.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/conftest.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/contracts/client_signatures.json +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/contracts/database_operations.json +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/contracts/test_bounded_transfer.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/contracts/test_compiler_runtime_source.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/contracts/test_relation_batching.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/contracts/test_relation_import.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/contracts/test_storage_layouts.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/contracts/test_table_contracts.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_backend/Dockerfile +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_backend/Dockerfile.dockerignore +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_backend/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_backend/conftest.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_backend/provider/__init__.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_backend/provider/env.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_backend/provider/versions/0001_measurement.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_backend/test_api_contract.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_backend/test_application_migration.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_backend/test_bootstrap_recovery.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_backend/test_catalog_contract.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_backend/test_credential_catalog.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_backend/test_physical_contract.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_backend/test_relation_import.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_backend/test_runtime_bootstrap.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_backend/test_sql_security.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_backend/test_update_client.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_operations/test_physical_operations.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_operations/test_postgresql_operations.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/database_operations/test_runtime_and_temporal.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/documentation/test_project_checks.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_admin_installation.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_api_endpoint.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_application_owned_migrations.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_catalog_outage.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_client_api_contract.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_client_api_coverage.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_client_migration_scaffold.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_client_migration_tls.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_client_package.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_client_signatures.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_client_value_behaviors.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_data_source_registry.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_local_actor_client_api.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_local_cli_workflow.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_local_client_selection.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_managed_finalize_client_api.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_namespaces_admin_http.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_public_imports.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_remaining_client_routes.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_run_graphs.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_run_logs.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_runtime_transition.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_sdk_local_startup.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_sqlite_runtime.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_table_delete_client_api.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_table_filter_client_api.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_table_introspection_client_api.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_table_patch_client_api.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_table_search_document_api.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_table_stats_api.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_table_update_pipeline.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_table_updates_http.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_time_index_delete_client_api.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_time_index_reads_client_api.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_update_batch_client_api.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_update_chunk_insert_client_api.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_update_dependency_priority_client_api.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_update_index_statistics_client_api.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/e2e/test_update_registration_client_api.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/examples/test_documented_examples.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/examples/test_postgresql_examples.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/examples/test_setup_launch.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/examples/test_tutorial.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/integrations/test_credential_store.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/integrations/test_data_source_rules.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/integrations/test_local_data_sources.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/integrations/test_local_run_logs.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/integrations/test_postgresql_connection.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/integrations/test_postgresql_sql.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/integrations/test_postgresql_tables.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/integrations/test_postgresql_time_index_queries.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/integrations/test_source_validation.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/integrations/test_sqlite_operations.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/labels/test_labels.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/operations/test_create_table_operation.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/operations/test_create_table_postgres.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/operations/test_physical_operation_journal.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/operations/test_register_catalog.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/operations/test_search_documents.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/packaging/test_client_skills.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/packaging/test_dev_release_version.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/packaging/test_distribution_sources.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/packaging/test_editable_build.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/packaging/test_installed_distribution.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/permissions/test_governed_sql_scope.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/permissions/test_local_actor_membership.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/permissions/test_migration_boundary.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/permissions/test_namespace_grants.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/permissions/test_security_api.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/permissions/test_table_body_filter.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/permissions/test_table_grants.py +0 -0
- {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/tests/permissions/test_table_queries.py +0 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
api_version: "2.3.0"
|
|
2
|
+
name: metatables-api
|
|
3
|
+
resources:
|
|
4
|
+
- key: metatables-api
|
|
5
|
+
kind: fastapi
|
|
6
|
+
spec:
|
|
7
|
+
source_path: api/metatables/main.py
|
|
8
|
+
automatic_deployment: true
|
|
9
|
+
automatic_redeployment:
|
|
10
|
+
enabled: true
|
|
11
|
+
tag_regex: null
|
|
12
|
+
min_scale: 1
|
|
13
|
+
revision_retention_count: 3
|
|
14
|
+
|
|
15
|
+
- key: migrate-system
|
|
16
|
+
kind: job
|
|
17
|
+
spec:
|
|
18
|
+
name: MetaTables system migrations
|
|
19
|
+
execution_path: jobs/migrate_system.py
|
|
20
|
+
cpu_request: "1"
|
|
21
|
+
memory_request: "1"
|
|
22
|
+
max_runtime_seconds: 1800
|
|
23
|
+
automatic_redeployment:
|
|
24
|
+
enabled: true
|
|
25
|
+
tag_regex: null
|
|
26
|
+
|
|
27
|
+
execution:
|
|
28
|
+
steps:
|
|
29
|
+
image:
|
|
30
|
+
prepare_image: metatables-api
|
|
31
|
+
|
|
32
|
+
migrate:
|
|
33
|
+
run_job: migrate-system
|
|
34
|
+
image_from: image
|
|
35
|
+
needs: [image]
|
|
36
|
+
|
|
37
|
+
deploy_api:
|
|
38
|
+
deploy: metatables-api
|
|
39
|
+
image_from: image
|
|
40
|
+
needs: [migrate]
|
|
@@ -99,6 +99,11 @@ by startup or migration. This supersedes the previous branch isolation policy.
|
|
|
99
99
|
|
|
100
100
|
### Explicit runtime bootstrap in the selected DataSource (amended 2026-09-29)
|
|
101
101
|
|
|
102
|
+
Hosted upgrades: before each API rollout, the deployment workflow runs
|
|
103
|
+
`metatables runtime upgrade` from the new image against the active runtime
|
|
104
|
+
([ADR 0014](0014-main-sequence-release-jobs-and-production-migrations.md)). Initializing a selected DataSource and startup
|
|
105
|
+
inspection follow the lifecycle below.
|
|
106
|
+
|
|
102
107
|
This amendment supersedes the separate catalog connection, the two-file SQLite
|
|
103
108
|
binding, automatic local catalog upgrades, and the requirement that switching to
|
|
104
109
|
Hosted already have a migrated catalog. It corrects this ADR's runtime lifecycle;
|
|
@@ -253,6 +253,10 @@ this work must not require recreation or transfer them to another DataSource.
|
|
|
253
253
|
|
|
254
254
|
### First-bootstrap and migration recovery
|
|
255
255
|
|
|
256
|
+
The deployment workflow's `metatables runtime upgrade` ([ADR 0014](0014-main-sequence-release-jobs-and-production-migrations.md))
|
|
257
|
+
runs this same protocol, with its backend locks, progress reconciliation,
|
|
258
|
+
registration and schema verification, before each hosted API rollout.
|
|
259
|
+
|
|
256
260
|
The shared bootstrap service operates before a DataSource row or the full operation
|
|
257
261
|
journal exists. Startup and Settings inspection remain read-only. Only the explicit
|
|
258
262
|
**Run MetaTables migrations** action may initialize or upgrade the selected database.
|
|
@@ -80,6 +80,10 @@ dropped tables. Revision files already applied remain immutable.
|
|
|
80
80
|
|
|
81
81
|
## MetaTables system migrations
|
|
82
82
|
|
|
83
|
+
Hosted system upgrades also run as a deployment prerequisite Job
|
|
84
|
+
([ADR 0014](0014-main-sequence-release-jobs-and-production-migrations.md)). Application providers keep their own histories and are not
|
|
85
|
+
part of that Job.
|
|
86
|
+
|
|
83
87
|
The API continues to own `metatables.api.backend.migrations`, `metatables_catalog_version`
|
|
84
88
|
and the explicit admin bootstrap/upgrade operation in Settings. Application
|
|
85
89
|
migration commands do not invoke that operation. Applications must keep their
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# ADR 0014: System migrations in the deployment workflow
|
|
2
|
+
|
|
3
|
+
Date: 2026-10-02
|
|
4
|
+
|
|
5
|
+
Status: Accepted. Implemented on `development`; hosted verification pending.
|
|
6
|
+
|
|
7
|
+
Owners: MetaTables API. Main Sequence owns Job execution, images, deployment and
|
|
8
|
+
platform authentication.
|
|
9
|
+
|
|
10
|
+
Related: [ADR 0001: Runtime storage and bootstrap](0001-unified-api-storage-and-local-sqlite.md),
|
|
11
|
+
[ADR 0008: Database workflows and recovery](0008-mysql-mssql-table-workflows.md) and
|
|
12
|
+
[ADR 0013: Application-owned migrations](0013-application-owned-migrations.md).
|
|
13
|
+
|
|
14
|
+
## Context
|
|
15
|
+
|
|
16
|
+
Main Sequence deploys the hosted API from `.mainsequence/workflows/metatables-api.yaml`.
|
|
17
|
+
Settings runs system migrations inside the running API, and that API can only
|
|
18
|
+
apply the revisions it ships. A release's new revisions must be applied before
|
|
19
|
+
its API serves.
|
|
20
|
+
|
|
21
|
+
## Decision
|
|
22
|
+
|
|
23
|
+
The deployment workflow upgrades the runtime from the candidate image before the
|
|
24
|
+
rollout:
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
candidate image -> migrate-system Job -> API deployment
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
A failed upgrade blocks the rollout.
|
|
31
|
+
|
|
32
|
+
The Job, `jobs/migrate_system.py`, runs `metatables runtime upgrade`:
|
|
33
|
+
|
|
34
|
+
1. Find the Environment's MetaTables API the same way the client does.
|
|
35
|
+
2. Read `GET /runtime-context/` as an organization admin. For admins,
|
|
36
|
+
`bootstrap.candidate` is the Settings DataSource's public configuration with
|
|
37
|
+
its Secret references; the Secrets are resolved through the SDK.
|
|
38
|
+
3. Apply this package's system migrations through the shared bootstrap operation:
|
|
39
|
+
backend lock, progress recovery, runtime registration, access setup and
|
|
40
|
+
verification. A runtime already at the current revision is left untouched.
|
|
41
|
+
|
|
42
|
+
The command acts only on an active runtime. With no API deployment or no active
|
|
43
|
+
runtime yet, it succeeds without DDL. A non-admin identity or an unreadable
|
|
44
|
+
context fails before DDL. When it registers the runtime DataSource, it records
|
|
45
|
+
the Job identity's user UID as the creator.
|
|
46
|
+
|
|
47
|
+
Settings' **Run MetaTables migrations** and `metatables runtime initialize` keep
|
|
48
|
+
initializing a newly selected DataSource: the API serving them is the deployed
|
|
49
|
+
revision and runs its own migrations, so there is no version skew. API startup
|
|
50
|
+
stays inspection-only.
|
|
51
|
+
|
|
52
|
+
Both targets declare `automatic_redeployment` with `tag_regex: null`, so every
|
|
53
|
+
eligible commit runs the graph. Package publication stays in GitHub Actions.
|
|
54
|
+
|
|
55
|
+
The upgrade owns only `metatables.api.backend.migrations` and
|
|
56
|
+
`metatables_catalog_version`. Application providers keep their own histories
|
|
57
|
+
under ADR 0013.
|
|
58
|
+
|
|
59
|
+
## Consequences
|
|
60
|
+
|
|
61
|
+
- The previous API keeps serving during the upgrade, so each schema change must
|
|
62
|
+
stay compatible with the previous release. Coordination with its writes is not
|
|
63
|
+
defined yet.
|
|
64
|
+
- An upgrade followed by a failed deployment leaves the database upgraded. There
|
|
65
|
+
is no automatic downgrade.
|
|
66
|
+
- The workflow runs only when the platform receives the branch's commit.
|
|
67
|
+
Verification in a hosted Environment is pending.
|
|
@@ -34,3 +34,4 @@ decisions belong in the SDK repository and are linked as dependencies.
|
|
|
34
34
|
| [0010: Import external tables and views](api/0010-import-external-tables-and-views.md) | Accepted; implemented (verification boundaries in ADR) | Shared backend discovery, metadata import/refresh, and bounded reads of external tables and views, preserving one runtime catalog and existing grants. |
|
|
35
35
|
| [0012: Bounded data transfer, concurrent execution, and safe retries](api/0012-bounded-data-transfer-and-safe-retries.md) | Accepted; implemented; hosted engine verification pending | API/client row and byte budgets, incremental fetching, concurrent admission, durable chunk receipts, safe recovery, and required user documentation; independent of Artifacts and temporary URLs. |
|
|
36
36
|
| [0013: Application-owned migrations](api/0013-application-owned-migrations.md) | Accepted and implemented | Application-side Alembic, environment database authority, API catalog integration and separate system migrations. |
|
|
37
|
+
| [0014: System migrations in the deployment workflow](api/0014-main-sequence-release-jobs-and-production-migrations.md) | Accepted; implemented on development; hosted verification pending | A Main Sequence Job upgrades the active runtime from the candidate image before each API rollout. |
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Initialize and upgrade the runtime database
|
|
2
2
|
|
|
3
|
+
Hosted upgrades also run automatically: before each API rollout, the deployment
|
|
4
|
+
workflow runs `metatables runtime upgrade` from the new image against the active
|
|
5
|
+
runtime ([ADR 0014](../adr/api/0014-main-sequence-release-jobs-and-production-migrations.md)).
|
|
6
|
+
The operation below initializes a newly selected DataSource.
|
|
7
|
+
|
|
3
8
|
Settings selects the runtime mode and a DataSource. That database stores MetaTables'
|
|
4
9
|
system tables, including `data_source`, alongside user tables. There is no separate
|
|
5
10
|
catalog connection to configure. Local and hosted use the same initialization flow.
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Operate a hosted API
|
|
2
2
|
|
|
3
|
+
The deployment workflow upgrades the active runtime before each API rollout: its
|
|
4
|
+
migration Job runs `metatables runtime upgrade` from the new image, and a failure
|
|
5
|
+
stops the rollout ([ADR 0014](../adr/api/0014-main-sequence-release-jobs-and-production-migrations.md)).
|
|
6
|
+
Settings and `metatables runtime initialize` still initialize a newly selected
|
|
7
|
+
DataSource.
|
|
8
|
+
|
|
3
9
|
The repository's `.mainsequence/workflows/metatables-api.yaml` declares the
|
|
4
10
|
automatic FastAPI deployment at `api/metatables/main.py`. This file imports
|
|
5
11
|
`metatables.api.metatables.main:app`; the server and its deployment-specific
|
|
@@ -304,4 +304,5 @@ This inventory records the support status of public resource methods and CLI com
|
|
|
304
304
|
| `init` | tested | visible | Enable local development while preserving settings; no database initialization. |
|
|
305
305
|
| `runtime status` | tested | visible | Read bootstrap and effective runtime state before or after initialization. |
|
|
306
306
|
| `runtime initialize` | tested | visible | Explicit API system migrations under current admin admission. |
|
|
307
|
+
| `runtime upgrade` | tested | visible | Deploy-time upgrade of the active Settings runtime from this package's migrations; skips with no API or no active runtime. |
|
|
307
308
|
| `admin repair` | tested | visible | Explicitly stage pinned source/dependencies; refuse replacement while in use. |
|
{mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/reference/cli.md
RENAMED
|
@@ -27,6 +27,7 @@ The list below contains visible leaf commands. Hidden aliases and unavailable co
|
|
|
27
27
|
| `metatables migrations upgrade` | target_revision, --provider, --timeout, --ttl-seconds, --json | Run the application's Alembic upgrade and finalize its catalog tables. |
|
|
28
28
|
| `metatables runtime initialize` | | Explicitly apply the selected API's system migrations. |
|
|
29
29
|
| `metatables runtime status` | | Read bootstrap state and effective runtime, including before initialization. |
|
|
30
|
+
| `metatables runtime upgrade` | | Apply this package's system migrations to the active hosted runtime before a rollout. |
|
|
30
31
|
| `metatables serve` | --local, --port, --configuration, --admin, --admin-path, --admin-port, --open-browser, --sdk-session-source | Launch the installed API and optionally the reusable local Admin. |
|
|
31
32
|
| `metatables time-index-table delete` | uid, --full-delete-selected, --full-delete-downstream-tables, --delete-with-no-table, --override-protection, --timeout | |
|
|
32
33
|
| `metatables time-index-table detail` | uid, --timeout | |
|
|
@@ -79,3 +79,4 @@ nav:
|
|
|
79
79
|
- "0010: Import external tables and views": adr/api/0010-import-external-tables-and-views.md
|
|
80
80
|
- "0012: Bounded data transfer and safe retries": adr/api/0012-bounded-data-transfer-and-safe-retries.md
|
|
81
81
|
- "0013: Application-owned migrations": adr/api/0013-application-owned-migrations.md
|
|
82
|
+
- "0014: System migrations in the deployment workflow": adr/api/0014-main-sequence-release-jobs-and-production-migrations.md
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "mainsequence-metatable"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.8.dev11"
|
|
8
8
|
description = "Main Sequence MetaTables Python client and standalone API"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.13"
|
|
@@ -28,6 +28,7 @@ docs/adr/api/0009-shared-credential-store.md
|
|
|
28
28
|
docs/adr/api/0010-import-external-tables-and-views.md
|
|
29
29
|
docs/adr/api/0012-bounded-data-transfer-and-safe-retries.md
|
|
30
30
|
docs/adr/api/0013-application-owned-migrations.md
|
|
31
|
+
docs/adr/api/0014-main-sequence-release-jobs-and-production-migrations.md
|
|
31
32
|
docs/adr/client/0003-api-endpoint-resolution.md
|
|
32
33
|
docs/adr/client/0011-cli-local-development-with-managed-admin.md
|
|
33
34
|
docs/api/authentication-and-errors.md
|
|
@@ -467,6 +468,7 @@ tests/e2e/test_remaining_client_routes.py
|
|
|
467
468
|
tests/e2e/test_run_graphs.py
|
|
468
469
|
tests/e2e/test_run_logs.py
|
|
469
470
|
tests/e2e/test_runtime_transition.py
|
|
471
|
+
tests/e2e/test_runtime_upgrade.py
|
|
470
472
|
tests/e2e/test_sdk_local_startup.py
|
|
471
473
|
tests/e2e/test_sqlite_runtime.py
|
|
472
474
|
tests/e2e/test_table_delete_client_api.py
|
|
@@ -455,6 +455,26 @@ class RuntimeBootstrap:
|
|
|
455
455
|
request.app.state.runtime_control.instance_id = str(uuid4())
|
|
456
456
|
|
|
457
457
|
|
|
458
|
+
def upgrade_selected_runtime(candidate, selected_source_uid, user_uid):
|
|
459
|
+
"""Apply this package's system migrations to a hosted runtime selected in Settings.
|
|
460
|
+
|
|
461
|
+
A deployed API can only run the revisions it ships, so a new release upgrades
|
|
462
|
+
the active runtime from its own image before that API rolls out.
|
|
463
|
+
"""
|
|
464
|
+
from metatables.api.app.runtime import RuntimeConfig
|
|
465
|
+
target = RuntimeBootstrap(RuntimeConfig(local_mode=False), None)
|
|
466
|
+
target.selected_source_uid = selected_source_uid
|
|
467
|
+
try:
|
|
468
|
+
target.configure(candidate, user_uid)
|
|
469
|
+
previous = sorted(target.current)
|
|
470
|
+
if target.status == "ready":
|
|
471
|
+
return dict(status="up_to_date", revisions=previous)
|
|
472
|
+
target.migrate(user_uid)
|
|
473
|
+
return dict(status="upgraded", previous_revisions=previous, revisions=sorted(target.current))
|
|
474
|
+
finally:
|
|
475
|
+
target.close()
|
|
476
|
+
|
|
477
|
+
|
|
458
478
|
router = APIRouter(prefix="/runtime-bootstrap", tags=["Runtime bootstrap"])
|
|
459
479
|
|
|
460
480
|
|
{mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/cli/app.py
RENAMED
|
@@ -231,6 +231,35 @@ def runtime_initialize() -> None:
|
|
|
231
231
|
_execute(initialize_runtime)
|
|
232
232
|
|
|
233
233
|
|
|
234
|
+
@runtime.command("upgrade")
|
|
235
|
+
def runtime_upgrade() -> None:
|
|
236
|
+
"""Apply this package's system migrations to the active hosted runtime before a rollout."""
|
|
237
|
+
_execute(_upgrade_runtime)
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
def _upgrade_runtime() -> dict:
|
|
241
|
+
from uuid import UUID
|
|
242
|
+
|
|
243
|
+
from metatables.endpoint import ApiNotDeployedError
|
|
244
|
+
from metatables.runtime import get_runtime_status
|
|
245
|
+
try:
|
|
246
|
+
context = get_runtime_status()
|
|
247
|
+
except ApiNotDeployedError as exc:
|
|
248
|
+
return {"status": "skipped", "reason": str(exc)}
|
|
249
|
+
if context.get("local_mode"):
|
|
250
|
+
raise RuntimeError("Upgrade applies to a hosted runtime; use Settings or 'metatables --local runtime initialize'.")
|
|
251
|
+
if not context.get("is_admin"):
|
|
252
|
+
raise RuntimeError("Upgrading the runtime requires an admin caller.")
|
|
253
|
+
bootstrap = context.get("bootstrap") or {}
|
|
254
|
+
if not bootstrap.get("active"):
|
|
255
|
+
return {"status": "skipped", "reason": "The API has no active runtime; initialize it from Settings."}
|
|
256
|
+
if not bootstrap.get("candidate"):
|
|
257
|
+
raise RuntimeError("The API did not return its runtime DataSource configuration.")
|
|
258
|
+
from metatables.api.app.bootstrap import upgrade_selected_runtime
|
|
259
|
+
return upgrade_selected_runtime(bootstrap["candidate"], bootstrap.get("selected_source_uid"),
|
|
260
|
+
UUID(context["user_uid"]))
|
|
261
|
+
|
|
262
|
+
|
|
234
263
|
@contextmanager
|
|
235
264
|
def _client_transport():
|
|
236
265
|
"""Configure only MetaTables models; do not redirect SDK platform calls."""
|
|
@@ -242,6 +271,11 @@ def _client_transport():
|
|
|
242
271
|
with api_endpoint_scope():
|
|
243
272
|
yield
|
|
244
273
|
return
|
|
274
|
+
if os.environ.get("MAINSEQUENCE_AUTH_MODE") in {"runtime_credential", "session_jwt"}:
|
|
275
|
+
# Deployed runtimes and Main Sequence Jobs keep their platform-issued auth.
|
|
276
|
+
with api_endpoint_scope():
|
|
277
|
+
yield
|
|
278
|
+
return
|
|
245
279
|
from mainsequence.cli.config import get_tokens
|
|
246
280
|
from mainsequence.client.utils import loaders
|
|
247
281
|
|
{mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/src/metatables/endpoint.py
RENAMED
|
@@ -23,6 +23,10 @@ class ApiResolutionError(RuntimeError):
|
|
|
23
23
|
"""The configured MetaTables API could not be selected unambiguously."""
|
|
24
24
|
|
|
25
25
|
|
|
26
|
+
class ApiNotDeployedError(ApiResolutionError):
|
|
27
|
+
"""No MetaTables API deployment exists yet in the caller's Environment."""
|
|
28
|
+
|
|
29
|
+
|
|
26
30
|
@dataclass(frozen=True)
|
|
27
31
|
class ApiEndpoint:
|
|
28
32
|
url: str
|
|
@@ -181,7 +185,7 @@ def _discover(generation: int, environment_uid: str) -> ApiEndpoint:
|
|
|
181
185
|
matches = [release for release in candidates
|
|
182
186
|
if environments[release.code_repository_branch_uid] == environment_uid]
|
|
183
187
|
if not matches:
|
|
184
|
-
raise
|
|
188
|
+
raise ApiNotDeployedError(f"No visible FastAPI deployment named {name!r} in Environment {environment_uid!r}. Apply the API workflow in that Environment.")
|
|
185
189
|
if len(matches) != 1:
|
|
186
190
|
raise ApiResolutionError(f"More than one visible FastAPI deployment named {name!r} in Environment {environment_uid!r}; remove duplicate deployments in that Environment.")
|
|
187
191
|
release = matches[0]
|
|
@@ -3335,6 +3335,18 @@
|
|
|
3335
3335
|
"tests/e2e/test_local_cli_workflow.py::test_local_cli_bootstrap_migrate_write_read_restart"
|
|
3336
3336
|
]
|
|
3337
3337
|
},
|
|
3338
|
+
{
|
|
3339
|
+
"command": "runtime upgrade",
|
|
3340
|
+
"hidden": false,
|
|
3341
|
+
"status": "tested",
|
|
3342
|
+
"note": "Deploy-time upgrade of the active Settings runtime from this package's migrations; skips with no API or no active runtime.",
|
|
3343
|
+
"tests": [
|
|
3344
|
+
"tests/e2e/test_runtime_upgrade.py::test_upgrade_targets_the_active_settings_data_source",
|
|
3345
|
+
"tests/e2e/test_runtime_upgrade.py::test_first_deployment_has_nothing_to_upgrade",
|
|
3346
|
+
"tests/e2e/test_runtime_upgrade.py::test_runtime_without_activation_is_left_to_settings",
|
|
3347
|
+
"tests/e2e/test_runtime_upgrade.py::test_refuses_before_any_ddl"
|
|
3348
|
+
]
|
|
3349
|
+
},
|
|
3338
3350
|
{
|
|
3339
3351
|
"command": "admin repair",
|
|
3340
3352
|
"hidden": false,
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"""`metatables runtime upgrade`: the deploy-time upgrade of the Settings runtime."""
|
|
2
|
+
|
|
3
|
+
from uuid import UUID
|
|
4
|
+
|
|
5
|
+
import pytest
|
|
6
|
+
|
|
7
|
+
import metatables.api.app.bootstrap as bootstrap
|
|
8
|
+
import metatables.runtime as runtime
|
|
9
|
+
from metatables.cli import app as cli
|
|
10
|
+
from metatables.endpoint import ApiNotDeployedError
|
|
11
|
+
|
|
12
|
+
USER = "6f0c6c4e-8a52-4a8e-9f62-4f2b5a7f0e11"
|
|
13
|
+
CANDIDATE = {"display_name": "Runtime", "class_type": "postgresql", "configuration": {"host": "db"}}
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def context(**changes):
|
|
17
|
+
value = {"local_mode": False, "is_admin": True, "user_uid": USER,
|
|
18
|
+
"bootstrap": {"active": True, "candidate": CANDIDATE, "selected_source_uid": "source"}}
|
|
19
|
+
return value | changes
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def no_ddl(*_):
|
|
23
|
+
pytest.fail("the upgrade must not touch the database")
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def test_upgrade_targets_the_active_settings_data_source(monkeypatch):
|
|
27
|
+
calls = []
|
|
28
|
+
monkeypatch.setattr(runtime, "get_runtime_status", context)
|
|
29
|
+
monkeypatch.setattr(bootstrap, "upgrade_selected_runtime", lambda *args: calls.append(args) or {"status": "upgraded"})
|
|
30
|
+
assert cli._upgrade_runtime() == {"status": "upgraded"}
|
|
31
|
+
assert calls == [(CANDIDATE, "source", UUID(USER))]
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def test_first_deployment_has_nothing_to_upgrade(monkeypatch):
|
|
35
|
+
def not_deployed():
|
|
36
|
+
raise ApiNotDeployedError("No visible FastAPI deployment named 'metatables'.")
|
|
37
|
+
|
|
38
|
+
monkeypatch.setattr(runtime, "get_runtime_status", not_deployed)
|
|
39
|
+
monkeypatch.setattr(bootstrap, "upgrade_selected_runtime", no_ddl)
|
|
40
|
+
assert cli._upgrade_runtime()["status"] == "skipped"
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def test_runtime_without_activation_is_left_to_settings(monkeypatch):
|
|
44
|
+
monkeypatch.setattr(runtime, "get_runtime_status", lambda: context(bootstrap={"active": False, "candidate": CANDIDATE}))
|
|
45
|
+
monkeypatch.setattr(bootstrap, "upgrade_selected_runtime", no_ddl)
|
|
46
|
+
assert cli._upgrade_runtime()["status"] == "skipped"
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
@pytest.mark.parametrize(("changes", "message"), [({"is_admin": False}, "admin"), ({"local_mode": True}, "hosted"),
|
|
50
|
+
({"bootstrap": {"active": True}}, "configuration")])
|
|
51
|
+
def test_refuses_before_any_ddl(monkeypatch, changes, message):
|
|
52
|
+
monkeypatch.setattr(runtime, "get_runtime_status", lambda: context(**changes))
|
|
53
|
+
monkeypatch.setattr(bootstrap, "upgrade_selected_runtime", no_ddl)
|
|
54
|
+
with pytest.raises(RuntimeError, match=message):
|
|
55
|
+
cli._upgrade_runtime()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/api/metatables/main.py
RENAMED
|
File without changes
|
{mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/compose.database-tests.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/api/data-sources.md
RENAMED
|
File without changes
|
{mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/api/openapi.json
RENAMED
|
File without changes
|
{mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/api/overview.md
RENAMED
|
File without changes
|
{mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/api/reference.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/client/quickstart.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/client/tutorial.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/README.md
RENAMED
|
File without changes
|
{mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8.dev11}/docs/examples/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|