mainsequence-metatable 0.1.12.dev24__tar.gz → 0.1.12.dev25__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (532) hide show
  1. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/.agents/skills/client/metatables-local-development/SKILL.md +2 -1
  2. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/.agents/skills/client/metatables-migrations/SKILL.md +6 -0
  3. {mainsequence_metatable-0.1.12.dev24/src/mainsequence_metatable.egg-info → mainsequence_metatable-0.1.12.dev25}/PKG-INFO +1 -1
  4. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md +2 -0
  5. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/operations/local-runtime.md +11 -2
  6. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/pyproject.toml +1 -1
  7. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25/src/mainsequence_metatable.egg-info}/PKG-INFO +1 -1
  8. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/mainsequence_metatable.egg-info/SOURCES.txt +1 -0
  9. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/migrations/connection.py +4 -10
  10. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/migrations/env.py +13 -4
  11. mainsequence_metatable-0.1.12.dev25/src/metatables/migrations/sqlite.py +82 -0
  12. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/integrations/test_sqlite_operations.py +47 -1
  13. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/.agents/skills/client/metatables-meta-tables/SKILL.md +0 -0
  14. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/.agents/skills/client/metatables-time-index-table-updates/SKILL.md +0 -0
  15. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/.agents/skills/client/metatables-upgrade-legacy-app/SKILL.md +0 -0
  16. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/.mainsequence/workflows/metatables-api.yaml +0 -0
  17. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/LICENSE +0 -0
  18. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/MANIFEST.in +0 -0
  19. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/README.md +0 -0
  20. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/alembic.ini +0 -0
  21. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/api/metatables/main.py +0 -0
  22. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/compose.database-tests.yml +0 -0
  23. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/adr/api/0002-application-administration-and-table-ownership.md +0 -0
  24. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/adr/api/0004-approved-application-migrations.md +0 -0
  25. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/adr/api/0005-run-logs-and-local-file-capture.md +0 -0
  26. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/adr/api/0006-historical-run-graphs.md +0 -0
  27. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/adr/api/0007-database-enforced-table-access.md +0 -0
  28. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/adr/api/0007-database-roles-and-privileges.svg +0 -0
  29. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/adr/api/0007-query-enforcement-path.svg +0 -0
  30. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/adr/api/0008-mysql-mssql-table-workflows.md +0 -0
  31. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/adr/api/0009-shared-credential-store.md +0 -0
  32. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/adr/api/0010-import-external-tables-and-views.md +0 -0
  33. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/adr/api/0012-bounded-data-transfer-and-safe-retries.md +0 -0
  34. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/adr/api/0013-application-owned-migrations.md +0 -0
  35. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/adr/api/0014-main-sequence-release-jobs-and-production-migrations.md +0 -0
  36. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/adr/api/0015-timescale-compression-and-retention-policies.md +0 -0
  37. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/adr/client/0003-api-endpoint-resolution.md +0 -0
  38. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/adr/client/0011-cli-local-development-with-managed-admin.md +0 -0
  39. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/adr/index.md +0 -0
  40. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/api/authentication-and-errors.md +0 -0
  41. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/api/data-sources.md +0 -0
  42. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/api/openapi.json +0 -0
  43. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/api/overview.md +0 -0
  44. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/api/reference.md +0 -0
  45. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/api/tables-and-migrations.md +0 -0
  46. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/api/time-index-and-updates.md +0 -0
  47. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/assets/branding/metatables.svg +0 -0
  48. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/assets/diagrams/local-client-experience.svg +0 -0
  49. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/client/bounded-transfers.md +0 -0
  50. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/client/build-an-updater.md +0 -0
  51. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/client/define-and-migrate-tables.md +0 -0
  52. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/client/deploy-application-migrations.md +0 -0
  53. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/client/installation-and-connection.md +0 -0
  54. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/client/local-storage.md +0 -0
  55. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/client/query-and-mutate.md +0 -0
  56. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/client/quickstart.md +0 -0
  57. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/client/read-existing-time-index-tables.md +0 -0
  58. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/client/register-existing-tables.md +0 -0
  59. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/client/tutorial.md +0 -0
  60. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/client/upgrade-legacy-app.md +0 -0
  61. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/concepts/architecture.md +0 -0
  62. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/concepts/data-sources.md +0 -0
  63. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/concepts/identity-and-scope.md +0 -0
  64. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/concepts/permissions-namespaces-labels.md +0 -0
  65. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/concepts/runs-and-execution-graphs.md +0 -0
  66. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/concepts/table-contracts-and-lifecycle.md +0 -0
  67. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/concepts/time-index-tables-and-updates.md +0 -0
  68. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/contributing/architecture-and-boundaries.md +0 -0
  69. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/contributing/database-backends.md +0 -0
  70. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/contributing/documentation.md +0 -0
  71. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/contributing/releasing.md +0 -0
  72. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/contributing/testing.md +0 -0
  73. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/README.md +0 -0
  74. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/__init__.py +0 -0
  75. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/bounded_reader.py +0 -0
  76. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/data_sources/README.md +0 -0
  77. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/data_sources/mssql.json +0 -0
  78. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/data_sources/mysql.json +0 -0
  79. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/data_sources/postgresql.json +0 -0
  80. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/data_sources/register.py +0 -0
  81. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/external_table.py +0 -0
  82. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/local_app/README.md +0 -0
  83. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/local_app/__init__.py +0 -0
  84. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/local_app/__main__.py +0 -0
  85. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/local_app/migrations/__init__.py +0 -0
  86. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/local_app/migrations/env.py +0 -0
  87. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/local_app/migrations/script.py.mako +0 -0
  88. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  89. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/local_app/tables.py +0 -0
  90. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/query.py +0 -0
  91. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/quickstart.py +0 -0
  92. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/reader.py +0 -0
  93. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/scripts/__init__.py +0 -0
  94. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/scripts/setup_metatables.py +0 -0
  95. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/tables.py +0 -0
  96. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/tutorial/README.md +0 -0
  97. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/tutorial/__init__.py +0 -0
  98. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/tutorial/__main__.py +0 -0
  99. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/tutorial/data/README.md +0 -0
  100. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  101. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/tutorial/frames.py +0 -0
  102. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/tutorial/migrations/__init__.py +0 -0
  103. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/tutorial/migrations/env.py +0 -0
  104. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/tutorial/migrations/registry.py +0 -0
  105. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/tutorial/migrations/script.py.mako +0 -0
  106. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/tutorial/migrations/versions/__init__.py +0 -0
  107. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  108. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  109. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  110. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/tutorial/operations.py +0 -0
  111. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/tutorial/tables.py +0 -0
  112. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/tutorial/updaters.py +0 -0
  113. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/examples/updater.py +0 -0
  114. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/index.md +0 -0
  115. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/operations/catalog-migrations.md +0 -0
  116. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/operations/configuration.md +0 -0
  117. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/operations/hosted-runtime.md +0 -0
  118. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/operations/recovery-and-observability.md +0 -0
  119. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/operations/run-history.md +0 -0
  120. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/operations/run-logs.md +0 -0
  121. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/reference/capabilities.md +0 -0
  122. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/reference/cli.md +0 -0
  123. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/reference/python.md +0 -0
  124. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/security/index.md +0 -0
  125. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/security/ownership-and-sharing.md +0 -0
  126. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/docs/security/permissions.md +0 -0
  127. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/mkdocs.yml +0 -0
  128. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/scripts/__init__.py +0 -0
  129. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/scripts/build_reference.py +0 -0
  130. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/scripts/check_boundaries.py +0 -0
  131. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/scripts/check_client_api_coverage.py +0 -0
  132. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/scripts/check_distribution_sources.py +0 -0
  133. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/scripts/check_docs.py +0 -0
  134. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/scripts/check_examples_debug.py +0 -0
  135. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/scripts/check_project.py +0 -0
  136. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/scripts/dev_release_version.py +0 -0
  137. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/scripts/test_databases.py +0 -0
  138. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/scripts/test_postgresql.py +0 -0
  139. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/setup.cfg +0 -0
  140. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/mainsequence_metatable.egg-info/dependency_links.txt +0 -0
  141. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/mainsequence_metatable.egg-info/entry_points.txt +0 -0
  142. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/mainsequence_metatable.egg-info/requires.txt +0 -0
  143. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/mainsequence_metatable.egg-info/top_level.txt +0 -0
  144. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/__init__.py +0 -0
  145. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/_admin_source.json +0 -0
  146. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/_build.py +0 -0
  147. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/_skill_bundle.py +0 -0
  148. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/__init__.py +0 -0
  149. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/__init__.py +0 -0
  150. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/auth/__init__.py +0 -0
  151. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/auth/boundary.py +0 -0
  152. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/auth/caller_assertions.py +0 -0
  153. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/auth/local_actor.py +0 -0
  154. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/bootstrap.py +0 -0
  155. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/configuration.py +0 -0
  156. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/credential_admin.py +0 -0
  157. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/development.py +0 -0
  158. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/development_client.py +0 -0
  159. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/main.py +0 -0
  160. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/platform_cache.py +0 -0
  161. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/__init__.py +0 -0
  162. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/column_search.py +0 -0
  163. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/contract_validation.py +0 -0
  164. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/data_sources.py +0 -0
  165. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/managed_finalize.py +0 -0
  166. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/migration_connection.py +0 -0
  167. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/namespaces.py +0 -0
  168. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/run_logs.py +0 -0
  169. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/runtime_context.py +0 -0
  170. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/schema_graph.py +0 -0
  171. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/security.py +0 -0
  172. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/table_cascade.py +0 -0
  173. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/table_crud.py +0 -0
  174. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/table_delete.py +0 -0
  175. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/table_filter.py +0 -0
  176. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/table_import.py +0 -0
  177. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/table_introspection.py +0 -0
  178. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/table_patch.py +0 -0
  179. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/table_registration.py +0 -0
  180. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/table_response.py +0 -0
  181. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/table_search_document.py +0 -0
  182. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/table_sql.py +0 -0
  183. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/table_update_pipeline.py +0 -0
  184. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/time_index_delete.py +0 -0
  185. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/time_index_reads.py +0 -0
  186. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/time_index_stats.py +0 -0
  187. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/timescale_policies.py +0 -0
  188. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/update_batch.py +0 -0
  189. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/update_chunk_insert.py +0 -0
  190. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/update_constants.py +0 -0
  191. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/update_crud.py +0 -0
  192. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/update_details.py +0 -0
  193. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/update_graph.py +0 -0
  194. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/update_index_statistics.py +0 -0
  195. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/update_registration.py +0 -0
  196. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/update_runs.py +0 -0
  197. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/routes/update_statistics.py +0 -0
  198. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/runtime.py +0 -0
  199. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/runtime_control.py +0 -0
  200. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/runtime_database.py +0 -0
  201. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/source_passwords.py +0 -0
  202. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/app/transfer.py +0 -0
  203. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/__init__.py +0 -0
  204. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/__init__.py +0 -0
  205. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/access.py +0 -0
  206. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/__init__.py +0 -0
  207. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/maintenance/__init__.py +0 -0
  208. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/maintenance/postgresql.py +0 -0
  209. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/maintenance/runtime.py +0 -0
  210. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/maintenance/temporal.py +0 -0
  211. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/maintenance/timescaledb.py +0 -0
  212. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/maintenance/validation.py +0 -0
  213. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/postgresql_cascade_delete.py +0 -0
  214. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/postgresql_connection.py +0 -0
  215. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/postgresql_introspection.py +0 -0
  216. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/postgresql_table_delete.py +0 -0
  217. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/postgresql_tables.py +0 -0
  218. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/postgresql_time_index.py +0 -0
  219. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/postgresql_time_index_delete.py +0 -0
  220. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/postgresql_time_index_queries.py +0 -0
  221. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/postgresql_time_index_stats.py +0 -0
  222. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/postgresql_time_index_write.py +0 -0
  223. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/source_validation.py +0 -0
  224. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/sqlite_connection.py +0 -0
  225. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/sqlite_introspection.py +0 -0
  226. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/adapters/table_cursor.py +0 -0
  227. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/catalog.py +0 -0
  228. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/catalog_ddl.py +0 -0
  229. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/catalog_types.py +0 -0
  230. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/contracts.py +0 -0
  231. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/hosted.py +0 -0
  232. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/hosted_access.py +0 -0
  233. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/migration_connection.py +0 -0
  234. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/native.py +0 -0
  235. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/operations.py +0 -0
  236. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/pages.py +0 -0
  237. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/postgresql_access.py +0 -0
  238. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/registry.py +0 -0
  239. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/relation_tables.py +0 -0
  240. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/relational.py +0 -0
  241. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/restricted_sql.py +0 -0
  242. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/sqlite_access.py +0 -0
  243. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/streaming.py +0 -0
  244. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/backends/timescale.py +0 -0
  245. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/contracts/__init__.py +0 -0
  246. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/contracts/relation_import.py +0 -0
  247. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/contracts/storage_layouts.py +0 -0
  248. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/contracts/table_contracts.py +0 -0
  249. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/contracts/values.py +0 -0
  250. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/domain/__init__.py +0 -0
  251. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/domain/catalog_rules.py +0 -0
  252. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/domain/data_source_rules.py +0 -0
  253. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/domain/index_statistics.py +0 -0
  254. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/domain/label_rules.py +0 -0
  255. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/domain/permission_rules.py +0 -0
  256. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/domain/update_constants.py +0 -0
  257. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/integrations/__init__.py +0 -0
  258. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/integrations/catalog_data_sources.py +0 -0
  259. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/integrations/credential_keys.py +0 -0
  260. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/integrations/credential_store.py +0 -0
  261. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/integrations/data_source_provider.py +0 -0
  262. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/integrations/local_credentials.py +0 -0
  263. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/integrations/local_workspace.py +0 -0
  264. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/integrations/platform_principals.py +0 -0
  265. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/integrations/run_logs.py +0 -0
  266. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/integrations/runtime_binding.py +0 -0
  267. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/integrations/runtime_data_sources.py +0 -0
  268. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/integrations/source_validation.py +0 -0
  269. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/migrations/__init__.py +0 -0
  270. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/migrations/env.py +0 -0
  271. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/migrations/script.py.mako +0 -0
  272. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/migrations/versions/0001_initial.py +0 -0
  273. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/migrations/versions/0002_security_model.py +0 -0
  274. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/migrations/versions/0003_run_log_capture.py +0 -0
  275. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/migrations/versions/0004_historical_run_graphs.py +0 -0
  276. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/migrations/versions/0005_database_access.py +0 -0
  277. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/migrations/versions/0006_local_credentials.py +0 -0
  278. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/migrations/versions/0007_external_relation_names.py +0 -0
  279. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/migrations/versions/0008_upload_receipts.py +0 -0
  280. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/migrations/versions/0009_timescale_policies.py +0 -0
  281. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/migrations/versions/__init__.py +0 -0
  282. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/operations/__init__.py +0 -0
  283. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/operations/bootstrap_migrations.py +0 -0
  284. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/operations/catalog_schema.py +0 -0
  285. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/operations/create_table.py +0 -0
  286. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/operations/finalize_managed.py +0 -0
  287. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/operations/import_relations.py +0 -0
  288. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/operations/introspect_table.py +0 -0
  289. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/operations/read_time_index.py +0 -0
  290. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/operations/register_catalog.py +0 -0
  291. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/operations/search_documents.py +0 -0
  292. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/__init__.py +0 -0
  293. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/cascade.py +0 -0
  294. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/catalog.py +0 -0
  295. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/database.py +0 -0
  296. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/grants.py +0 -0
  297. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/labels.py +0 -0
  298. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/locking.py +0 -0
  299. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/models.py +0 -0
  300. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/physical_operations.py +0 -0
  301. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/projections.py +0 -0
  302. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/run_graphs.py +0 -0
  303. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/schema_graph.py +0 -0
  304. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/sqlite_types.py +0 -0
  305. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/table_body_filter.py +0 -0
  306. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/table_queries.py +0 -0
  307. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/table_response.py +0 -0
  308. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/update_graph.py +0 -0
  309. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/update_pipeline.py +0 -0
  310. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/updates.py +0 -0
  311. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/persistence/upload_receipts.py +0 -0
  312. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/backend/presentation/data_source_summary.py +0 -0
  313. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/metatables/__init__.py +0 -0
  314. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/metatables/configuration.yaml +0 -0
  315. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/api/metatables/main.py +0 -0
  316. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/cli/__init__.py +0 -0
  317. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/cli/admin_install.py +0 -0
  318. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/cli/app.py +0 -0
  319. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/cli/filters.py +0 -0
  320. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/cli/local.py +0 -0
  321. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/cli/migrations.py +0 -0
  322. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/cli/project.py +0 -0
  323. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/cli/skills.py +0 -0
  324. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/compiled_sql/__init__.py +0 -0
  325. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/compiled_sql/mssql.py +0 -0
  326. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/compiled_sql/v1.py +0 -0
  327. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/dtype_codec.py +0 -0
  328. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/endpoint.py +0 -0
  329. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/README.md +0 -0
  330. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/__init__.py +0 -0
  331. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/bounded_reader.py +0 -0
  332. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/data_sources/README.md +0 -0
  333. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/data_sources/mssql.json +0 -0
  334. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/data_sources/mysql.json +0 -0
  335. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/data_sources/postgresql.json +0 -0
  336. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/data_sources/register.py +0 -0
  337. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/external_table.py +0 -0
  338. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/local_app/README.md +0 -0
  339. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/local_app/__init__.py +0 -0
  340. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/local_app/__main__.py +0 -0
  341. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/local_app/migrations/__init__.py +0 -0
  342. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/local_app/migrations/env.py +0 -0
  343. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/local_app/migrations/script.py.mako +0 -0
  344. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  345. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/local_app/tables.py +0 -0
  346. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/query.py +0 -0
  347. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/quickstart.py +0 -0
  348. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/reader.py +0 -0
  349. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/scripts/__init__.py +0 -0
  350. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/scripts/setup_metatables.py +0 -0
  351. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/tables.py +0 -0
  352. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/tutorial/README.md +0 -0
  353. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/tutorial/__init__.py +0 -0
  354. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/tutorial/__main__.py +0 -0
  355. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/tutorial/data/README.md +0 -0
  356. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  357. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/tutorial/frames.py +0 -0
  358. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/tutorial/migrations/__init__.py +0 -0
  359. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/tutorial/migrations/env.py +0 -0
  360. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/tutorial/migrations/registry.py +0 -0
  361. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/tutorial/migrations/script.py.mako +0 -0
  362. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/tutorial/migrations/versions/__init__.py +0 -0
  363. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  364. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  365. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  366. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/tutorial/operations.py +0 -0
  367. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/tutorial/tables.py +0 -0
  368. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/tutorial/updaters.py +0 -0
  369. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/examples/updater.py +0 -0
  370. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/future_registry.py +0 -0
  371. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/hashing.py +0 -0
  372. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/instrumentation.py +0 -0
  373. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/local_connection.py +0 -0
  374. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/local_files.py +0 -0
  375. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/local_run_logs.py +0 -0
  376. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/log_contract.py +0 -0
  377. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/migrations/__init__.py +0 -0
  378. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/migrations/alembic.py +0 -0
  379. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/migrations/provider.py +0 -0
  380. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/migrations/registry.py +0 -0
  381. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/migrations/runner.py +0 -0
  382. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/migrations/scaffold.py +0 -0
  383. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/migrations/templates/__init__.py +0 -0
  384. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/migrations/templates/env.py.mako +0 -0
  385. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/migrations/templates/script.py.mako +0 -0
  386. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/migrations/tls.py +0 -0
  387. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/models.py +0 -0
  388. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/pydantic_metadata.py +0 -0
  389. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/run_logging.py +0 -0
  390. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/runtime.py +0 -0
  391. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/runtime_context.py +0 -0
  392. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/runtime_contract.py +0 -0
  393. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/schema_names.py +0 -0
  394. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/sdk_compat.py +0 -0
  395. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/sqlalchemy_contracts.py +0 -0
  396. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/time_index_table_refs.py +0 -0
  397. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/transfer.py +0 -0
  398. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/transfer_contract.py +0 -0
  399. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/transport.py +0 -0
  400. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/update_configuration_contract.py +0 -0
  401. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/updaters/__init__.py +0 -0
  402. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/updaters/configuration.py +0 -0
  403. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/updaters/dependencies.py +0 -0
  404. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/updaters/managers.py +0 -0
  405. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/updaters/namespacing.py +0 -0
  406. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/updaters/runner.py +0 -0
  407. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/updaters/updaters.py +0 -0
  408. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/updaters/utils.py +0 -0
  409. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/src/metatables/upload.py +0 -0
  410. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/auth/test_caller_assertions.py +0 -0
  411. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/auth/test_data_source_identity.py +0 -0
  412. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/auth/test_development_client.py +0 -0
  413. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/auth/test_hosted_environment_target.py +0 -0
  414. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/auth/test_local_mode.py +0 -0
  415. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/auth/test_platform_fact_cache.py +0 -0
  416. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/auth/test_runtime_bootstrap.py +0 -0
  417. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/auth/test_runtime_database.py +0 -0
  418. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/auth/test_runtime_scaffold.py +0 -0
  419. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/auth/test_runtime_selection.py +0 -0
  420. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/auth/test_runtime_storage_binding.py +0 -0
  421. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/auth/test_source_passwords.py +0 -0
  422. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/catalog/test_catalog_foundation.py +0 -0
  423. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/catalog/test_contract_projection.py +0 -0
  424. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/catalog/test_database_config.py +0 -0
  425. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/catalog/test_index_statistics.py +0 -0
  426. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/catalog/test_migration.py +0 -0
  427. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/conftest.py +0 -0
  428. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/contracts/capabilities.json +0 -0
  429. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/contracts/client_signatures.json +0 -0
  430. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/contracts/database_operations.json +0 -0
  431. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/contracts/test_bounded_transfer.py +0 -0
  432. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/contracts/test_compiler_runtime_source.py +0 -0
  433. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/contracts/test_relation_batching.py +0 -0
  434. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/contracts/test_relation_import.py +0 -0
  435. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/contracts/test_storage_layouts.py +0 -0
  436. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/contracts/test_table_contracts.py +0 -0
  437. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_backend/Dockerfile +0 -0
  438. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_backend/Dockerfile.dockerignore +0 -0
  439. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_backend/__init__.py +0 -0
  440. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_backend/conftest.py +0 -0
  441. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_backend/provider/__init__.py +0 -0
  442. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_backend/provider/env.py +0 -0
  443. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_backend/provider/versions/0001_measurement.py +0 -0
  444. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_backend/test_api_contract.py +0 -0
  445. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_backend/test_application_migration.py +0 -0
  446. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_backend/test_bootstrap_recovery.py +0 -0
  447. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_backend/test_catalog_contract.py +0 -0
  448. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_backend/test_credential_catalog.py +0 -0
  449. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_backend/test_physical_contract.py +0 -0
  450. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_backend/test_relation_import.py +0 -0
  451. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_backend/test_runtime_bootstrap.py +0 -0
  452. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_backend/test_sql_security.py +0 -0
  453. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_backend/test_update_client.py +0 -0
  454. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_operations/test_physical_operations.py +0 -0
  455. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_operations/test_postgresql_operations.py +0 -0
  456. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/database_operations/test_runtime_and_temporal.py +0 -0
  457. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/documentation/test_project_checks.py +0 -0
  458. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_admin_installation.py +0 -0
  459. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_api_endpoint.py +0 -0
  460. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_application_owned_migrations.py +0 -0
  461. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_catalog_outage.py +0 -0
  462. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_client_api_contract.py +0 -0
  463. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_client_api_coverage.py +0 -0
  464. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_client_migration_scaffold.py +0 -0
  465. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_client_migration_tls.py +0 -0
  466. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_client_package.py +0 -0
  467. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_client_signatures.py +0 -0
  468. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_client_value_behaviors.py +0 -0
  469. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_data_source_registry.py +0 -0
  470. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_local_actor_client_api.py +0 -0
  471. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_local_cli_workflow.py +0 -0
  472. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_local_client_selection.py +0 -0
  473. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_managed_finalize_client_api.py +0 -0
  474. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_namespaces_admin_http.py +0 -0
  475. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_public_imports.py +0 -0
  476. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_remaining_client_routes.py +0 -0
  477. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_run_graphs.py +0 -0
  478. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_run_logs.py +0 -0
  479. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_runtime_transition.py +0 -0
  480. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_runtime_upgrade.py +0 -0
  481. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_sdk_local_startup.py +0 -0
  482. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_sqlite_runtime.py +0 -0
  483. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_table_delete_client_api.py +0 -0
  484. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_table_filter_client_api.py +0 -0
  485. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_table_introspection_client_api.py +0 -0
  486. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_table_patch_client_api.py +0 -0
  487. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_table_search_document_api.py +0 -0
  488. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_table_stats_api.py +0 -0
  489. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_table_update_pipeline.py +0 -0
  490. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_table_updates_http.py +0 -0
  491. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_time_index_delete_client_api.py +0 -0
  492. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_time_index_reads_client_api.py +0 -0
  493. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_timescale_policies_client_api.py +0 -0
  494. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_update_batch_client_api.py +0 -0
  495. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_update_chunk_insert_client_api.py +0 -0
  496. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_update_dependency_priority_client_api.py +0 -0
  497. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_update_index_statistics_client_api.py +0 -0
  498. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/e2e/test_update_registration_client_api.py +0 -0
  499. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/examples/test_documented_examples.py +0 -0
  500. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/examples/test_postgresql_examples.py +0 -0
  501. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/examples/test_setup_launch.py +0 -0
  502. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/examples/test_tutorial.py +0 -0
  503. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/integrations/test_credential_store.py +0 -0
  504. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/integrations/test_data_source_rules.py +0 -0
  505. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/integrations/test_local_data_sources.py +0 -0
  506. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/integrations/test_local_run_logs.py +0 -0
  507. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/integrations/test_postgresql_connection.py +0 -0
  508. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/integrations/test_postgresql_sql.py +0 -0
  509. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/integrations/test_postgresql_tables.py +0 -0
  510. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/integrations/test_postgresql_time_index_queries.py +0 -0
  511. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/integrations/test_source_validation.py +0 -0
  512. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/labels/test_labels.py +0 -0
  513. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/operations/test_create_table_operation.py +0 -0
  514. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/operations/test_create_table_postgres.py +0 -0
  515. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/operations/test_physical_operation_journal.py +0 -0
  516. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/operations/test_register_catalog.py +0 -0
  517. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/operations/test_search_documents.py +0 -0
  518. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/operations/test_timescale_policies.py +0 -0
  519. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/packaging/test_client_skills.py +0 -0
  520. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/packaging/test_dev_release_version.py +0 -0
  521. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/packaging/test_distribution_sources.py +0 -0
  522. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/packaging/test_editable_build.py +0 -0
  523. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/packaging/test_installed_distribution.py +0 -0
  524. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/permissions/test_governed_sql_scope.py +0 -0
  525. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/permissions/test_local_actor_membership.py +0 -0
  526. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/permissions/test_migration_boundary.py +0 -0
  527. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/permissions/test_namespace_grants.py +0 -0
  528. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/permissions/test_security_api.py +0 -0
  529. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/permissions/test_table_body_filter.py +0 -0
  530. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/permissions/test_table_grants.py +0 -0
  531. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/tests/permissions/test_table_queries.py +0 -0
  532. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.12.dev25}/uv.lock +0 -0
@@ -149,7 +149,8 @@ requires those checks. Application models keep their hosted column types: a
149
149
  PostgreSQL `JSONB` column runs as JSON, and `Numeric` runs as a SQLite number exact
150
150
  to about 15 significant digits, the precision the client's float64 frames carry on
151
151
  every engine. Unsigned 64-bit integers and arrays are rejected, naming the column.
152
- Revision code that runs PostgreSQL-only SQL must check `op.get_bind().dialect.name`. Do not use the shared environment database as the default
152
+ Revisions need no SQLite variants: column and constraint changes run through Alembic
153
+ batch mode. Only raw PostgreSQL SQL must check `op.get_bind().dialect.name`. Do not use the shared environment database as the default
153
154
  integration-test fixture.
154
155
 
155
156
  ## Finish verification and switch back
@@ -154,6 +154,12 @@ The global `--local` selects the running project's API connection; inspect runti
154
154
  status because Admin can switch that API to Hosted. Upgrade/downgrade accept
155
155
  Alembic targets. Use `--no-autogenerate` for offline revision authoring.
156
156
 
157
+ Write each revision once, for the hosted engine. On local SQLite, MetaTables runs
158
+ column and constraint changes through Alembic batch mode, generated revisions use
159
+ batch blocks, `JSONB` runs as JSON, and `postgresql_where` predicates also apply to
160
+ SQLite. Raw PostgreSQL SQL, such as `ctid`, `::` casts or `jsonb_*` functions, must
161
+ branch on `op.get_bind().dialect.name`.
162
+
157
163
  The client imports and executes application revisions, using the connection
158
164
  resolved for the selected environment. Environment operators supply the database
159
165
  login's DDL privileges. MetaTables does not mint migration roles or sandbox DDL.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence-metatable
3
- Version: 0.1.12.dev24
3
+ Version: 0.1.12.dev25
4
4
  Summary: Main Sequence MetaTables Python client and standalone API
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: MIT
@@ -736,6 +736,8 @@ workflow as PostgreSQL. SQLite rejects named schemas, unsigned 64-bit integer,
736
736
  array, and specialized index contracts, naming the column or index. PostgreSQL
737
737
  JSONB is stored as JSON, and NUMERIC as SQLite numbers exact to about 15
738
738
  significant digits, the precision the client's float64 frames already carry.
739
+ Revisions written for PostgreSQL run unchanged: column and constraint changes use
740
+ Alembic batch mode, with foreign keys checked before commit.
739
741
  Timestamps require UTC offsets and preserve microseconds; finer precision is
740
742
  rejected rather than truncated. UUID coordinate filters use the same contract
741
743
  conversion for reads and deletes.
@@ -149,8 +149,17 @@ created and decoded as JSON. `Numeric` columns are SQLite numbers, exact to abou
149
149
  significant digits; reads return `Decimal`, and the client's frames carry them as
150
150
  float64 on every engine. Unsigned 64-bit integers and arrays have no SQLite type:
151
151
  registration rejects them with `unsupported_sqlite_type`, naming the table and
152
- column. Revision code running PostgreSQL-only SQL, such as `ctid` or `jsonb_*`
153
- functions, must branch on `op.get_bind().dialect.name`.
152
+ column.
153
+
154
+ Application revisions written for PostgreSQL run unchanged. SQLite cannot alter
155
+ columns or constraints in place, so the migration environment runs `alter_column`,
156
+ `add_column`, `drop_column` and constraint operations through Alembic batch mode,
157
+ which copies the table and swaps it in. Foreign keys are not enforced while the
158
+ revisions run; `PRAGMA foreign_key_check` runs before commit and rolls back every
159
+ revision if a key dangles. A `postgresql_where` predicate also becomes the SQLite
160
+ partial-index predicate. Generated revisions use batch blocks, which PostgreSQL
161
+ applies as plain `ALTER` statements. Raw PostgreSQL SQL, such as `ctid`, `::` casts
162
+ or `jsonb_*` functions, must branch on `op.get_bind().dialect.name`.
154
163
 
155
164
  The SQLite adapter shares the request's transaction for catalog and physical work.
156
165
  Physical savepoints preserve rollback semantics and avoid two writers competing for
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mainsequence-metatable"
7
- version = "0.1.12.dev24"
7
+ version = "0.1.12.dev25"
8
8
  description = "Main Sequence MetaTables Python client and standalone API"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence-metatable
3
- Version: 0.1.12.dev24
3
+ Version: 0.1.12.dev25
4
4
  Summary: Main Sequence MetaTables Python client and standalone API
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: MIT
@@ -392,6 +392,7 @@ src/metatables/migrations/provider.py
392
392
  src/metatables/migrations/registry.py
393
393
  src/metatables/migrations/runner.py
394
394
  src/metatables/migrations/scaffold.py
395
+ src/metatables/migrations/sqlite.py
395
396
  src/metatables/migrations/tls.py
396
397
  src/metatables/migrations/templates/__init__.py
397
398
  src/metatables/migrations/templates/env.py.mako
@@ -3,21 +3,13 @@
3
3
  from contextlib import contextmanager
4
4
 
5
5
  from sqlalchemy import create_engine, event
6
- from sqlalchemy.dialects.postgresql import JSONB
7
6
  from sqlalchemy.engine import make_url
8
- from sqlalchemy.ext.compiler import compiles
9
7
  from sqlalchemy.pool import NullPool
10
8
 
9
+ from . import sqlite as _sqlite # noqa: F401 Registers SQLite DDL and batch rules.
11
10
  from .tls import migration_tls_arguments
12
11
 
13
12
 
14
- @compiles(JSONB, "sqlite")
15
- def _sqlite_jsonb(_type, _compiler, **_kw):
16
- # Applications declare PostgreSQL JSONB; the local runtime stores and
17
- # decodes it as JSON, so models and reflected columns compare equal.
18
- return "JSON"
19
-
20
-
21
13
  def version_schema(config, dialect):
22
14
  schema = config.attributes["mainsequence_migration_provider"].version_table_schema
23
15
  if dialect in {"sqlite", "mysql"} and schema in (None, "public"):
@@ -51,7 +43,9 @@ def migration_engine(config):
51
43
  @event.listens_for(engine, "connect")
52
44
  def sqlite_connect(connection, _record):
53
45
  connection.isolation_level = None
54
- connection.execute("PRAGMA foreign_keys = ON")
46
+ # Batch rebuilds drop and recreate referenced tables; the
47
+ # environment runs PRAGMA foreign_key_check before commit.
48
+ connection.execute("PRAGMA foreign_keys = OFF")
55
49
  connection.execute("PRAGMA busy_timeout = 30000")
56
50
 
57
51
  @event.listens_for(engine, "begin")
@@ -15,6 +15,7 @@ def run_mainsequence_alembic_env(
15
15
 
16
16
  from metatables.migrations import apply_mainsequence_migration_role
17
17
  from metatables.migrations.connection import migration_engine
18
+ from metatables.migrations.sqlite import AUTO_BATCH_OPTION, check_foreign_keys
18
19
 
19
20
  def migration_provider() -> Any:
20
21
  provider = context.config.attributes.get("mainsequence_migration_provider")
@@ -78,8 +79,18 @@ def run_mainsequence_alembic_env(
78
79
  "include_object": include_object,
79
80
  "compare_type": True,
80
81
  "compare_server_default": True,
82
+ # Generated revisions alter tables in batch blocks: plain ALTERs on
83
+ # PostgreSQL, copy-and-swap on the local SQLite runtime.
84
+ "render_as_batch": True,
85
+ AUTO_BATCH_OPTION: connection is not None and connection.dialect.name == "sqlite",
81
86
  }
82
87
 
88
+ def run(connection) -> None:
89
+ with context.begin_transaction():
90
+ context.run_migrations()
91
+ if connection.dialect.name == "sqlite":
92
+ check_foreign_keys(connection)
93
+
83
94
  def run_migrations_offline() -> None:
84
95
  context.configure(
85
96
  url=context.config.get_main_option("sqlalchemy.url"),
@@ -95,16 +106,14 @@ def run_mainsequence_alembic_env(
95
106
  if connection is not None:
96
107
  apply_mainsequence_migration_role(connection, config)
97
108
  context.configure(connection=connection, **configure_kwargs(connection))
98
- with context.begin_transaction():
99
- context.run_migrations()
109
+ run(connection)
100
110
  return
101
111
 
102
112
  config.attributes.setdefault("mainsequence_migration_provider", migration_provider())
103
113
  with migration_engine(config) as engine, engine.connect() as connection:
104
114
  apply_mainsequence_migration_role(connection, config)
105
115
  context.configure(connection=connection, **configure_kwargs(connection))
106
- with context.begin_transaction():
107
- context.run_migrations()
116
+ run(connection)
108
117
 
109
118
  if context.is_offline_mode():
110
119
  run_migrations_offline()
@@ -0,0 +1,82 @@
1
+ """Run application revisions written for PostgreSQL on the local SQLite runtime.
2
+
3
+ SQLite cannot alter columns or constraints in place. Inside the MetaTables
4
+ Alembic environment, those operations run through Alembic batch mode (copy the
5
+ table, then swap it in), so revisions need no SQLite-specific code. PostgreSQL
6
+ and other dialects keep Alembic's own implementations.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ from alembic.operations import BatchOperations, Operations, ops
12
+ from sqlalchemy.dialects.postgresql import JSONB
13
+ from sqlalchemy.ext.compiler import compiles
14
+
15
+ AUTO_BATCH_OPTION = "metatables_sqlite_auto_batch"
16
+
17
+
18
+ @compiles(JSONB, "sqlite")
19
+ def _sqlite_jsonb(_type, _compiler, **_kw):
20
+ # Applications declare PostgreSQL JSONB; the local runtime stores and
21
+ # decodes it as JSON, so models and reflected columns compare equal.
22
+ return "JSON"
23
+
24
+
25
+ def _table(operation):
26
+ if isinstance(operation, ops.CreateForeignKeyOp):
27
+ return operation.source_table, operation.kw.get("source_schema")
28
+ return operation.table_name, operation.schema
29
+
30
+
31
+ def _batched(default):
32
+ def run(operations, operation):
33
+ if (
34
+ isinstance(operations, BatchOperations)
35
+ or not operations.migration_context.opts.get(AUTO_BATCH_OPTION)
36
+ ):
37
+ return default(operations, operation)
38
+ connection = operations.migration_context.connection
39
+ if connection.exec_driver_sql("PRAGMA foreign_keys").scalar():
40
+ # Rebuilding a parent table with enforcement on deletes or rejects
41
+ # its children; the environment checks every key after migrating.
42
+ raise RuntimeError("SQLite batch migrations require foreign_keys=OFF.")
43
+ name, schema = _table(operation)
44
+ with operations.batch_alter_table(name, schema=None if schema == "public" else schema) as batch:
45
+ batch.invoke(operation)
46
+
47
+ return run
48
+
49
+
50
+ def _partial_index(default):
51
+ def run(operations, operation):
52
+ # Portable predicates such as "status = 'active'" keep the index partial.
53
+ if operations.migration_context.opts.get(AUTO_BATCH_OPTION):
54
+ kw = operation.kw
55
+ if "postgresql_where" in kw and "sqlite_where" not in kw:
56
+ kw["sqlite_where"] = kw["postgresql_where"]
57
+ return default(operations, operation)
58
+
59
+ return run
60
+
61
+
62
+ for _operation in (
63
+ ops.AlterColumnOp,
64
+ ops.AddColumnOp,
65
+ ops.DropColumnOp,
66
+ ops.AddConstraintOp,
67
+ ops.DropConstraintOp,
68
+ ):
69
+ Operations._to_impl.dispatch_for(_operation, qualifier="sqlite")(
70
+ _batched(Operations._to_impl.dispatch(_operation))
71
+ )
72
+ Operations._to_impl.dispatch_for(ops.CreateIndexOp, qualifier="sqlite")(
73
+ _partial_index(Operations._to_impl.dispatch(ops.CreateIndexOp))
74
+ )
75
+
76
+
77
+ def check_foreign_keys(connection) -> None:
78
+ """Fail the migration transaction when a revision left a dangling key."""
79
+ violations = connection.exec_driver_sql("PRAGMA foreign_key_check").fetchall()
80
+ if violations:
81
+ tables = sorted({str(row[0]) for row in violations})
82
+ raise RuntimeError(f"Migration left foreign-key violations in: {', '.join(tables)}.")
@@ -125,7 +125,7 @@ def test_sqlite_runs_postgresql_jsonb_as_json_and_numeric_as_numbers(sqlite_sour
125
125
  from sqlalchemy import Column, Integer, MetaData, Numeric, Table
126
126
  from sqlalchemy.dialects.postgresql import JSONB
127
127
 
128
- import metatables.migrations.connection # noqa: F401 Registers the SQLite JSONB rule.
128
+ import metatables.migrations.sqlite # noqa: F401 Registers the SQLite JSONB rule.
129
129
  from metatables.api.backend.backends.adapters.sqlite_introspection import (
130
130
  introspect_sqlite_table,
131
131
  )
@@ -160,6 +160,52 @@ def test_sqlite_runs_postgresql_jsonb_as_json_and_numeric_as_numbers(sqlite_sour
160
160
  assert [row["id"] for row in selected] == [2, 1]
161
161
 
162
162
 
163
+ def test_postgresql_style_alter_revisions_run_through_sqlite_batch_mode(tmp_path):
164
+ from alembic.migration import MigrationContext
165
+ from alembic.operations import Operations
166
+ from sqlalchemy import Column, Integer, String, event, text
167
+
168
+ from metatables.migrations.sqlite import AUTO_BATCH_OPTION, check_foreign_keys
169
+
170
+ engine = create_engine(f"sqlite:///{tmp_path / 'batch.sqlite'}")
171
+ event.listen(engine, "connect", lambda raw, _record: raw.execute("PRAGMA foreign_keys = OFF"))
172
+ with engine.begin() as connection:
173
+ connection.exec_driver_sql("CREATE TABLE parent (id INTEGER PRIMARY KEY, code TEXT)")
174
+ connection.exec_driver_sql("CREATE TABLE child (id INTEGER PRIMARY KEY, parent_id INTEGER, "
175
+ "CONSTRAINT fk_child_parent FOREIGN KEY (parent_id) REFERENCES parent (id) ON DELETE CASCADE)")
176
+ connection.exec_driver_sql("INSERT INTO parent VALUES (1, 'a'), (2, 'b')")
177
+ connection.exec_driver_sql("INSERT INTO child VALUES (10, 1), (11, 2)")
178
+ op = Operations(MigrationContext.configure(connection, opts={AUTO_BATCH_OPTION: True}))
179
+ # The same calls a PostgreSQL revision makes; none of them is native SQLite DDL.
180
+ op.add_column("parent", Column("status", String(), nullable=True))
181
+ op.alter_column("parent", "code", existing_type=String(), nullable=False)
182
+ op.create_unique_constraint("uq_parent_code", "parent", ["code"])
183
+ op.drop_constraint("fk_child_parent", "child", type_="foreignkey")
184
+ op.create_foreign_key("fk_child_parent_restrict", "child", "parent", ["parent_id"], ["id"])
185
+ op.alter_column("child", "parent_id", existing_type=Integer(), nullable=False)
186
+ op.create_index("ix_parent_active", "parent", ["status"], unique=True,
187
+ postgresql_where=text("status = 'active'"))
188
+ check_foreign_keys(connection)
189
+ inspector = inspect(connection)
190
+ assert [fk["name"] for fk in inspector.get_foreign_keys("child")] == ["fk_child_parent_restrict"]
191
+ assert [c["nullable"] for c in inspector.get_columns("child") if c["name"] == "parent_id"] == [False]
192
+ assert [u["name"] for u in inspector.get_unique_constraints("parent")] == ["uq_parent_code"]
193
+ index = next(i for i in inspector.get_indexes("parent") if i["name"] == "ix_parent_active")
194
+ assert str(index["dialect_options"]["sqlite_where"]) == "status = 'active'"
195
+ # Rebuilding the parent kept every child row instead of cascading.
196
+ assert connection.exec_driver_sql("SELECT id, parent_id FROM child ORDER BY id").all() == [(10, 1), (11, 2)]
197
+ connection.exec_driver_sql("INSERT INTO child VALUES (12, 99)")
198
+ with pytest.raises(RuntimeError, match="child"):
199
+ check_foreign_keys(connection)
200
+ connection.exec_driver_sql("DELETE FROM child WHERE id = 12")
201
+ with engine.connect() as connection:
202
+ connection.exec_driver_sql("PRAGMA foreign_keys = ON")
203
+ with pytest.raises(RuntimeError, match="foreign_keys=OFF"):
204
+ Operations(MigrationContext.configure(connection, opts={AUTO_BATCH_OPTION: True})).add_column(
205
+ "parent", Column("note", String()))
206
+ engine.dispose()
207
+
208
+
163
209
  def test_sub_microsecond_timestamps_fail_before_serialization():
164
210
  from metatables.api.backend.contracts.values import utc_timestamp
165
211
  from metatables.dtype_codec import TIMESTAMP_TZ, serialize_remote_value