mainsequence-metatable 0.1.12.dev24__tar.gz → 0.1.13__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.13}/.agents/skills/client/metatables-local-development/SKILL.md +2 -1
  2. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/.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.13}/PKG-INFO +1 -1
  4. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md +2 -0
  5. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/operations/local-runtime.md +11 -2
  6. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/pyproject.toml +1 -1
  7. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13/src/mainsequence_metatable.egg-info}/PKG-INFO +1 -1
  8. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/mainsequence_metatable.egg-info/SOURCES.txt +1 -0
  9. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/migrations/connection.py +4 -10
  10. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/migrations/env.py +13 -4
  11. mainsequence_metatable-0.1.13/src/metatables/migrations/sqlite.py +82 -0
  12. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/integrations/test_sqlite_operations.py +47 -1
  13. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/uv.lock +1 -1
  14. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/.agents/skills/client/metatables-meta-tables/SKILL.md +0 -0
  15. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/.agents/skills/client/metatables-time-index-table-updates/SKILL.md +0 -0
  16. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/.agents/skills/client/metatables-upgrade-legacy-app/SKILL.md +0 -0
  17. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/.mainsequence/workflows/metatables-api.yaml +0 -0
  18. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/LICENSE +0 -0
  19. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/MANIFEST.in +0 -0
  20. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/README.md +0 -0
  21. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/alembic.ini +0 -0
  22. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/api/metatables/main.py +0 -0
  23. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/compose.database-tests.yml +0 -0
  24. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/adr/api/0002-application-administration-and-table-ownership.md +0 -0
  25. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/adr/api/0004-approved-application-migrations.md +0 -0
  26. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/adr/api/0005-run-logs-and-local-file-capture.md +0 -0
  27. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/adr/api/0006-historical-run-graphs.md +0 -0
  28. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/adr/api/0007-database-enforced-table-access.md +0 -0
  29. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/adr/api/0007-database-roles-and-privileges.svg +0 -0
  30. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/adr/api/0007-query-enforcement-path.svg +0 -0
  31. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/adr/api/0008-mysql-mssql-table-workflows.md +0 -0
  32. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/adr/api/0009-shared-credential-store.md +0 -0
  33. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/adr/api/0010-import-external-tables-and-views.md +0 -0
  34. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/adr/api/0012-bounded-data-transfer-and-safe-retries.md +0 -0
  35. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/adr/api/0013-application-owned-migrations.md +0 -0
  36. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/adr/api/0014-main-sequence-release-jobs-and-production-migrations.md +0 -0
  37. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/adr/api/0015-timescale-compression-and-retention-policies.md +0 -0
  38. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/adr/client/0003-api-endpoint-resolution.md +0 -0
  39. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/adr/client/0011-cli-local-development-with-managed-admin.md +0 -0
  40. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/adr/index.md +0 -0
  41. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/api/authentication-and-errors.md +0 -0
  42. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/api/data-sources.md +0 -0
  43. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/api/openapi.json +0 -0
  44. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/api/overview.md +0 -0
  45. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/api/reference.md +0 -0
  46. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/api/tables-and-migrations.md +0 -0
  47. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/api/time-index-and-updates.md +0 -0
  48. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/assets/branding/metatables.svg +0 -0
  49. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/assets/diagrams/local-client-experience.svg +0 -0
  50. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/client/bounded-transfers.md +0 -0
  51. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/client/build-an-updater.md +0 -0
  52. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/client/define-and-migrate-tables.md +0 -0
  53. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/client/deploy-application-migrations.md +0 -0
  54. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/client/installation-and-connection.md +0 -0
  55. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/client/local-storage.md +0 -0
  56. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/client/query-and-mutate.md +0 -0
  57. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/client/quickstart.md +0 -0
  58. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/client/read-existing-time-index-tables.md +0 -0
  59. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/client/register-existing-tables.md +0 -0
  60. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/client/tutorial.md +0 -0
  61. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/client/upgrade-legacy-app.md +0 -0
  62. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/concepts/architecture.md +0 -0
  63. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/concepts/data-sources.md +0 -0
  64. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/concepts/identity-and-scope.md +0 -0
  65. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/concepts/permissions-namespaces-labels.md +0 -0
  66. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/concepts/runs-and-execution-graphs.md +0 -0
  67. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/concepts/table-contracts-and-lifecycle.md +0 -0
  68. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/concepts/time-index-tables-and-updates.md +0 -0
  69. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/contributing/architecture-and-boundaries.md +0 -0
  70. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/contributing/database-backends.md +0 -0
  71. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/contributing/documentation.md +0 -0
  72. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/contributing/releasing.md +0 -0
  73. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/contributing/testing.md +0 -0
  74. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/README.md +0 -0
  75. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/__init__.py +0 -0
  76. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/bounded_reader.py +0 -0
  77. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/data_sources/README.md +0 -0
  78. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/data_sources/mssql.json +0 -0
  79. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/data_sources/mysql.json +0 -0
  80. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/data_sources/postgresql.json +0 -0
  81. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/data_sources/register.py +0 -0
  82. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/external_table.py +0 -0
  83. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/local_app/README.md +0 -0
  84. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/local_app/__init__.py +0 -0
  85. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/local_app/__main__.py +0 -0
  86. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/local_app/migrations/__init__.py +0 -0
  87. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/local_app/migrations/env.py +0 -0
  88. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/local_app/migrations/script.py.mako +0 -0
  89. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  90. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/local_app/tables.py +0 -0
  91. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/query.py +0 -0
  92. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/quickstart.py +0 -0
  93. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/reader.py +0 -0
  94. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/scripts/__init__.py +0 -0
  95. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/scripts/setup_metatables.py +0 -0
  96. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/tables.py +0 -0
  97. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/tutorial/README.md +0 -0
  98. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/tutorial/__init__.py +0 -0
  99. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/tutorial/__main__.py +0 -0
  100. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/tutorial/data/README.md +0 -0
  101. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  102. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/tutorial/frames.py +0 -0
  103. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/tutorial/migrations/__init__.py +0 -0
  104. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/tutorial/migrations/env.py +0 -0
  105. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/tutorial/migrations/registry.py +0 -0
  106. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/tutorial/migrations/script.py.mako +0 -0
  107. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/tutorial/migrations/versions/__init__.py +0 -0
  108. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  109. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  110. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  111. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/tutorial/operations.py +0 -0
  112. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/tutorial/tables.py +0 -0
  113. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/tutorial/updaters.py +0 -0
  114. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/examples/updater.py +0 -0
  115. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/index.md +0 -0
  116. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/operations/catalog-migrations.md +0 -0
  117. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/operations/configuration.md +0 -0
  118. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/operations/hosted-runtime.md +0 -0
  119. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/operations/recovery-and-observability.md +0 -0
  120. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/operations/run-history.md +0 -0
  121. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/operations/run-logs.md +0 -0
  122. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/reference/capabilities.md +0 -0
  123. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/reference/cli.md +0 -0
  124. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/reference/python.md +0 -0
  125. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/security/index.md +0 -0
  126. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/security/ownership-and-sharing.md +0 -0
  127. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/docs/security/permissions.md +0 -0
  128. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/mkdocs.yml +0 -0
  129. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/scripts/__init__.py +0 -0
  130. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/scripts/build_reference.py +0 -0
  131. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/scripts/check_boundaries.py +0 -0
  132. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/scripts/check_client_api_coverage.py +0 -0
  133. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/scripts/check_distribution_sources.py +0 -0
  134. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/scripts/check_docs.py +0 -0
  135. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/scripts/check_examples_debug.py +0 -0
  136. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/scripts/check_project.py +0 -0
  137. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/scripts/dev_release_version.py +0 -0
  138. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/scripts/test_databases.py +0 -0
  139. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/scripts/test_postgresql.py +0 -0
  140. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/setup.cfg +0 -0
  141. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/mainsequence_metatable.egg-info/dependency_links.txt +0 -0
  142. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/mainsequence_metatable.egg-info/entry_points.txt +0 -0
  143. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/mainsequence_metatable.egg-info/requires.txt +0 -0
  144. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/mainsequence_metatable.egg-info/top_level.txt +0 -0
  145. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/__init__.py +0 -0
  146. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/_admin_source.json +0 -0
  147. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/_build.py +0 -0
  148. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/_skill_bundle.py +0 -0
  149. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/__init__.py +0 -0
  150. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/__init__.py +0 -0
  151. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/auth/__init__.py +0 -0
  152. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/auth/boundary.py +0 -0
  153. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/auth/caller_assertions.py +0 -0
  154. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/auth/local_actor.py +0 -0
  155. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/bootstrap.py +0 -0
  156. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/configuration.py +0 -0
  157. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/credential_admin.py +0 -0
  158. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/development.py +0 -0
  159. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/development_client.py +0 -0
  160. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/main.py +0 -0
  161. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/platform_cache.py +0 -0
  162. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/__init__.py +0 -0
  163. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/column_search.py +0 -0
  164. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/contract_validation.py +0 -0
  165. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/data_sources.py +0 -0
  166. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/managed_finalize.py +0 -0
  167. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/migration_connection.py +0 -0
  168. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/namespaces.py +0 -0
  169. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/run_logs.py +0 -0
  170. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/runtime_context.py +0 -0
  171. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/schema_graph.py +0 -0
  172. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/security.py +0 -0
  173. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/table_cascade.py +0 -0
  174. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/table_crud.py +0 -0
  175. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/table_delete.py +0 -0
  176. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/table_filter.py +0 -0
  177. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/table_import.py +0 -0
  178. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/table_introspection.py +0 -0
  179. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/table_patch.py +0 -0
  180. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/table_registration.py +0 -0
  181. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/table_response.py +0 -0
  182. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/table_search_document.py +0 -0
  183. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/table_sql.py +0 -0
  184. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/table_update_pipeline.py +0 -0
  185. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/time_index_delete.py +0 -0
  186. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/time_index_reads.py +0 -0
  187. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/time_index_stats.py +0 -0
  188. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/timescale_policies.py +0 -0
  189. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/update_batch.py +0 -0
  190. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/update_chunk_insert.py +0 -0
  191. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/update_constants.py +0 -0
  192. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/update_crud.py +0 -0
  193. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/update_details.py +0 -0
  194. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/update_graph.py +0 -0
  195. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/update_index_statistics.py +0 -0
  196. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/update_registration.py +0 -0
  197. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/update_runs.py +0 -0
  198. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/routes/update_statistics.py +0 -0
  199. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/runtime.py +0 -0
  200. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/runtime_control.py +0 -0
  201. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/runtime_database.py +0 -0
  202. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/source_passwords.py +0 -0
  203. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/app/transfer.py +0 -0
  204. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/__init__.py +0 -0
  205. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/__init__.py +0 -0
  206. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/access.py +0 -0
  207. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/__init__.py +0 -0
  208. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/maintenance/__init__.py +0 -0
  209. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/maintenance/postgresql.py +0 -0
  210. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/maintenance/runtime.py +0 -0
  211. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/maintenance/temporal.py +0 -0
  212. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/maintenance/timescaledb.py +0 -0
  213. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/maintenance/validation.py +0 -0
  214. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/postgresql_cascade_delete.py +0 -0
  215. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/postgresql_connection.py +0 -0
  216. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/postgresql_introspection.py +0 -0
  217. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/postgresql_table_delete.py +0 -0
  218. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/postgresql_tables.py +0 -0
  219. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/postgresql_time_index.py +0 -0
  220. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/postgresql_time_index_delete.py +0 -0
  221. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/postgresql_time_index_queries.py +0 -0
  222. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/postgresql_time_index_stats.py +0 -0
  223. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/postgresql_time_index_write.py +0 -0
  224. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/source_validation.py +0 -0
  225. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/sqlite_connection.py +0 -0
  226. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/sqlite_introspection.py +0 -0
  227. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/adapters/table_cursor.py +0 -0
  228. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/catalog.py +0 -0
  229. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/catalog_ddl.py +0 -0
  230. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/catalog_types.py +0 -0
  231. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/contracts.py +0 -0
  232. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/hosted.py +0 -0
  233. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/hosted_access.py +0 -0
  234. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/migration_connection.py +0 -0
  235. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/native.py +0 -0
  236. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/operations.py +0 -0
  237. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/pages.py +0 -0
  238. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/postgresql_access.py +0 -0
  239. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/registry.py +0 -0
  240. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/relation_tables.py +0 -0
  241. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/relational.py +0 -0
  242. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/restricted_sql.py +0 -0
  243. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/sqlite_access.py +0 -0
  244. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/streaming.py +0 -0
  245. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/backends/timescale.py +0 -0
  246. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/contracts/__init__.py +0 -0
  247. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/contracts/relation_import.py +0 -0
  248. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/contracts/storage_layouts.py +0 -0
  249. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/contracts/table_contracts.py +0 -0
  250. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/contracts/values.py +0 -0
  251. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/domain/__init__.py +0 -0
  252. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/domain/catalog_rules.py +0 -0
  253. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/domain/data_source_rules.py +0 -0
  254. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/domain/index_statistics.py +0 -0
  255. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/domain/label_rules.py +0 -0
  256. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/domain/permission_rules.py +0 -0
  257. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/domain/update_constants.py +0 -0
  258. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/integrations/__init__.py +0 -0
  259. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/integrations/catalog_data_sources.py +0 -0
  260. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/integrations/credential_keys.py +0 -0
  261. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/integrations/credential_store.py +0 -0
  262. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/integrations/data_source_provider.py +0 -0
  263. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/integrations/local_credentials.py +0 -0
  264. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/integrations/local_workspace.py +0 -0
  265. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/integrations/platform_principals.py +0 -0
  266. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/integrations/run_logs.py +0 -0
  267. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/integrations/runtime_binding.py +0 -0
  268. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/integrations/runtime_data_sources.py +0 -0
  269. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/integrations/source_validation.py +0 -0
  270. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/migrations/__init__.py +0 -0
  271. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/migrations/env.py +0 -0
  272. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/migrations/script.py.mako +0 -0
  273. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/migrations/versions/0001_initial.py +0 -0
  274. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/migrations/versions/0002_security_model.py +0 -0
  275. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/migrations/versions/0003_run_log_capture.py +0 -0
  276. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/migrations/versions/0004_historical_run_graphs.py +0 -0
  277. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/migrations/versions/0005_database_access.py +0 -0
  278. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/migrations/versions/0006_local_credentials.py +0 -0
  279. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/migrations/versions/0007_external_relation_names.py +0 -0
  280. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/migrations/versions/0008_upload_receipts.py +0 -0
  281. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/migrations/versions/0009_timescale_policies.py +0 -0
  282. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/migrations/versions/__init__.py +0 -0
  283. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/operations/__init__.py +0 -0
  284. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/operations/bootstrap_migrations.py +0 -0
  285. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/operations/catalog_schema.py +0 -0
  286. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/operations/create_table.py +0 -0
  287. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/operations/finalize_managed.py +0 -0
  288. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/operations/import_relations.py +0 -0
  289. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/operations/introspect_table.py +0 -0
  290. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/operations/read_time_index.py +0 -0
  291. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/operations/register_catalog.py +0 -0
  292. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/operations/search_documents.py +0 -0
  293. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/__init__.py +0 -0
  294. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/cascade.py +0 -0
  295. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/catalog.py +0 -0
  296. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/database.py +0 -0
  297. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/grants.py +0 -0
  298. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/labels.py +0 -0
  299. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/locking.py +0 -0
  300. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/models.py +0 -0
  301. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/physical_operations.py +0 -0
  302. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/projections.py +0 -0
  303. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/run_graphs.py +0 -0
  304. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/schema_graph.py +0 -0
  305. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/sqlite_types.py +0 -0
  306. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/table_body_filter.py +0 -0
  307. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/table_queries.py +0 -0
  308. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/table_response.py +0 -0
  309. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/update_graph.py +0 -0
  310. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/update_pipeline.py +0 -0
  311. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/updates.py +0 -0
  312. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/persistence/upload_receipts.py +0 -0
  313. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/backend/presentation/data_source_summary.py +0 -0
  314. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/metatables/__init__.py +0 -0
  315. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/metatables/configuration.yaml +0 -0
  316. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/api/metatables/main.py +0 -0
  317. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/cli/__init__.py +0 -0
  318. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/cli/admin_install.py +0 -0
  319. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/cli/app.py +0 -0
  320. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/cli/filters.py +0 -0
  321. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/cli/local.py +0 -0
  322. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/cli/migrations.py +0 -0
  323. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/cli/project.py +0 -0
  324. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/cli/skills.py +0 -0
  325. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/compiled_sql/__init__.py +0 -0
  326. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/compiled_sql/mssql.py +0 -0
  327. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/compiled_sql/v1.py +0 -0
  328. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/dtype_codec.py +0 -0
  329. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/endpoint.py +0 -0
  330. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/README.md +0 -0
  331. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/__init__.py +0 -0
  332. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/bounded_reader.py +0 -0
  333. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/data_sources/README.md +0 -0
  334. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/data_sources/mssql.json +0 -0
  335. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/data_sources/mysql.json +0 -0
  336. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/data_sources/postgresql.json +0 -0
  337. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/data_sources/register.py +0 -0
  338. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/external_table.py +0 -0
  339. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/local_app/README.md +0 -0
  340. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/local_app/__init__.py +0 -0
  341. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/local_app/__main__.py +0 -0
  342. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/local_app/migrations/__init__.py +0 -0
  343. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/local_app/migrations/env.py +0 -0
  344. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/local_app/migrations/script.py.mako +0 -0
  345. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  346. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/local_app/tables.py +0 -0
  347. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/query.py +0 -0
  348. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/quickstart.py +0 -0
  349. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/reader.py +0 -0
  350. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/scripts/__init__.py +0 -0
  351. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/scripts/setup_metatables.py +0 -0
  352. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/tables.py +0 -0
  353. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/tutorial/README.md +0 -0
  354. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/tutorial/__init__.py +0 -0
  355. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/tutorial/__main__.py +0 -0
  356. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/tutorial/data/README.md +0 -0
  357. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  358. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/tutorial/frames.py +0 -0
  359. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/tutorial/migrations/__init__.py +0 -0
  360. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/tutorial/migrations/env.py +0 -0
  361. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/tutorial/migrations/registry.py +0 -0
  362. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/tutorial/migrations/script.py.mako +0 -0
  363. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/tutorial/migrations/versions/__init__.py +0 -0
  364. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  365. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  366. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  367. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/tutorial/operations.py +0 -0
  368. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/tutorial/tables.py +0 -0
  369. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/tutorial/updaters.py +0 -0
  370. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/examples/updater.py +0 -0
  371. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/future_registry.py +0 -0
  372. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/hashing.py +0 -0
  373. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/instrumentation.py +0 -0
  374. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/local_connection.py +0 -0
  375. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/local_files.py +0 -0
  376. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/local_run_logs.py +0 -0
  377. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/log_contract.py +0 -0
  378. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/migrations/__init__.py +0 -0
  379. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/migrations/alembic.py +0 -0
  380. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/migrations/provider.py +0 -0
  381. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/migrations/registry.py +0 -0
  382. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/migrations/runner.py +0 -0
  383. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/migrations/scaffold.py +0 -0
  384. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/migrations/templates/__init__.py +0 -0
  385. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/migrations/templates/env.py.mako +0 -0
  386. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/migrations/templates/script.py.mako +0 -0
  387. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/migrations/tls.py +0 -0
  388. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/models.py +0 -0
  389. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/pydantic_metadata.py +0 -0
  390. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/run_logging.py +0 -0
  391. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/runtime.py +0 -0
  392. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/runtime_context.py +0 -0
  393. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/runtime_contract.py +0 -0
  394. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/schema_names.py +0 -0
  395. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/sdk_compat.py +0 -0
  396. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/sqlalchemy_contracts.py +0 -0
  397. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/time_index_table_refs.py +0 -0
  398. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/transfer.py +0 -0
  399. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/transfer_contract.py +0 -0
  400. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/transport.py +0 -0
  401. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/update_configuration_contract.py +0 -0
  402. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/updaters/__init__.py +0 -0
  403. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/updaters/configuration.py +0 -0
  404. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/updaters/dependencies.py +0 -0
  405. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/updaters/managers.py +0 -0
  406. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/updaters/namespacing.py +0 -0
  407. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/updaters/runner.py +0 -0
  408. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/updaters/updaters.py +0 -0
  409. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/updaters/utils.py +0 -0
  410. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/src/metatables/upload.py +0 -0
  411. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/auth/test_caller_assertions.py +0 -0
  412. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/auth/test_data_source_identity.py +0 -0
  413. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/auth/test_development_client.py +0 -0
  414. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/auth/test_hosted_environment_target.py +0 -0
  415. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/auth/test_local_mode.py +0 -0
  416. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/auth/test_platform_fact_cache.py +0 -0
  417. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/auth/test_runtime_bootstrap.py +0 -0
  418. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/auth/test_runtime_database.py +0 -0
  419. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/auth/test_runtime_scaffold.py +0 -0
  420. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/auth/test_runtime_selection.py +0 -0
  421. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/auth/test_runtime_storage_binding.py +0 -0
  422. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/auth/test_source_passwords.py +0 -0
  423. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/catalog/test_catalog_foundation.py +0 -0
  424. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/catalog/test_contract_projection.py +0 -0
  425. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/catalog/test_database_config.py +0 -0
  426. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/catalog/test_index_statistics.py +0 -0
  427. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/catalog/test_migration.py +0 -0
  428. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/conftest.py +0 -0
  429. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/contracts/capabilities.json +0 -0
  430. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/contracts/client_signatures.json +0 -0
  431. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/contracts/database_operations.json +0 -0
  432. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/contracts/test_bounded_transfer.py +0 -0
  433. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/contracts/test_compiler_runtime_source.py +0 -0
  434. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/contracts/test_relation_batching.py +0 -0
  435. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/contracts/test_relation_import.py +0 -0
  436. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/contracts/test_storage_layouts.py +0 -0
  437. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/contracts/test_table_contracts.py +0 -0
  438. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_backend/Dockerfile +0 -0
  439. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_backend/Dockerfile.dockerignore +0 -0
  440. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_backend/__init__.py +0 -0
  441. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_backend/conftest.py +0 -0
  442. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_backend/provider/__init__.py +0 -0
  443. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_backend/provider/env.py +0 -0
  444. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_backend/provider/versions/0001_measurement.py +0 -0
  445. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_backend/test_api_contract.py +0 -0
  446. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_backend/test_application_migration.py +0 -0
  447. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_backend/test_bootstrap_recovery.py +0 -0
  448. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_backend/test_catalog_contract.py +0 -0
  449. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_backend/test_credential_catalog.py +0 -0
  450. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_backend/test_physical_contract.py +0 -0
  451. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_backend/test_relation_import.py +0 -0
  452. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_backend/test_runtime_bootstrap.py +0 -0
  453. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_backend/test_sql_security.py +0 -0
  454. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_backend/test_update_client.py +0 -0
  455. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_operations/test_physical_operations.py +0 -0
  456. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_operations/test_postgresql_operations.py +0 -0
  457. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/database_operations/test_runtime_and_temporal.py +0 -0
  458. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/documentation/test_project_checks.py +0 -0
  459. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_admin_installation.py +0 -0
  460. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_api_endpoint.py +0 -0
  461. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_application_owned_migrations.py +0 -0
  462. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_catalog_outage.py +0 -0
  463. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_client_api_contract.py +0 -0
  464. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_client_api_coverage.py +0 -0
  465. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_client_migration_scaffold.py +0 -0
  466. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_client_migration_tls.py +0 -0
  467. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_client_package.py +0 -0
  468. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_client_signatures.py +0 -0
  469. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_client_value_behaviors.py +0 -0
  470. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_data_source_registry.py +0 -0
  471. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_local_actor_client_api.py +0 -0
  472. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_local_cli_workflow.py +0 -0
  473. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_local_client_selection.py +0 -0
  474. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_managed_finalize_client_api.py +0 -0
  475. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_namespaces_admin_http.py +0 -0
  476. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_public_imports.py +0 -0
  477. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_remaining_client_routes.py +0 -0
  478. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_run_graphs.py +0 -0
  479. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_run_logs.py +0 -0
  480. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_runtime_transition.py +0 -0
  481. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_runtime_upgrade.py +0 -0
  482. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_sdk_local_startup.py +0 -0
  483. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_sqlite_runtime.py +0 -0
  484. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_table_delete_client_api.py +0 -0
  485. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_table_filter_client_api.py +0 -0
  486. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_table_introspection_client_api.py +0 -0
  487. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_table_patch_client_api.py +0 -0
  488. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_table_search_document_api.py +0 -0
  489. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_table_stats_api.py +0 -0
  490. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_table_update_pipeline.py +0 -0
  491. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_table_updates_http.py +0 -0
  492. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_time_index_delete_client_api.py +0 -0
  493. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_time_index_reads_client_api.py +0 -0
  494. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_timescale_policies_client_api.py +0 -0
  495. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_update_batch_client_api.py +0 -0
  496. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_update_chunk_insert_client_api.py +0 -0
  497. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_update_dependency_priority_client_api.py +0 -0
  498. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_update_index_statistics_client_api.py +0 -0
  499. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/e2e/test_update_registration_client_api.py +0 -0
  500. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/examples/test_documented_examples.py +0 -0
  501. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/examples/test_postgresql_examples.py +0 -0
  502. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/examples/test_setup_launch.py +0 -0
  503. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/examples/test_tutorial.py +0 -0
  504. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/integrations/test_credential_store.py +0 -0
  505. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/integrations/test_data_source_rules.py +0 -0
  506. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/integrations/test_local_data_sources.py +0 -0
  507. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/integrations/test_local_run_logs.py +0 -0
  508. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/integrations/test_postgresql_connection.py +0 -0
  509. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/integrations/test_postgresql_sql.py +0 -0
  510. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/integrations/test_postgresql_tables.py +0 -0
  511. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/integrations/test_postgresql_time_index_queries.py +0 -0
  512. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/integrations/test_source_validation.py +0 -0
  513. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/labels/test_labels.py +0 -0
  514. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/operations/test_create_table_operation.py +0 -0
  515. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/operations/test_create_table_postgres.py +0 -0
  516. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/operations/test_physical_operation_journal.py +0 -0
  517. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/operations/test_register_catalog.py +0 -0
  518. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/operations/test_search_documents.py +0 -0
  519. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/operations/test_timescale_policies.py +0 -0
  520. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/packaging/test_client_skills.py +0 -0
  521. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/packaging/test_dev_release_version.py +0 -0
  522. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/packaging/test_distribution_sources.py +0 -0
  523. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/packaging/test_editable_build.py +0 -0
  524. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/packaging/test_installed_distribution.py +0 -0
  525. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/permissions/test_governed_sql_scope.py +0 -0
  526. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/permissions/test_local_actor_membership.py +0 -0
  527. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/permissions/test_migration_boundary.py +0 -0
  528. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/permissions/test_namespace_grants.py +0 -0
  529. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/permissions/test_security_api.py +0 -0
  530. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/permissions/test_table_body_filter.py +0 -0
  531. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/permissions/test_table_grants.py +0 -0
  532. {mainsequence_metatable-0.1.12.dev24 → mainsequence_metatable-0.1.13}/tests/permissions/test_table_queries.py +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.13
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.13"
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.13
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
@@ -632,7 +632,7 @@ server = [
632
632
 
633
633
  [[package]]
634
634
  name = "mainsequence-metatable"
635
- version = "0.1.12"
635
+ version = "0.1.13"
636
636
  source = { editable = "." }
637
637
  dependencies = [
638
638
  { name = "alembic" },