mainsequence-metatable 0.1.9.dev19__tar.gz → 0.1.10.dev21__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 (531) hide show
  1. {mainsequence_metatable-0.1.9.dev19/src/mainsequence_metatable.egg-info → mainsequence_metatable-0.1.10.dev21}/PKG-INFO +1 -1
  2. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md +4 -2
  3. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/api/data-sources.md +4 -2
  4. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/operations/configuration.md +1 -1
  5. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/operations/hosted-runtime.md +26 -8
  6. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/operations/local-runtime.md +5 -4
  7. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/pyproject.toml +1 -1
  8. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21/src/mainsequence_metatable.egg-info}/PKG-INFO +1 -1
  9. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/runtime_database.py +11 -4
  10. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/integrations/local_workspace.py +7 -13
  11. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/auth/test_runtime_database.py +11 -4
  12. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/auth/test_runtime_selection.py +2 -2
  13. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_backend/test_runtime_bootstrap.py +2 -0
  14. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_runtime_transition.py +5 -0
  15. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/integrations/test_local_data_sources.py +7 -5
  16. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/uv.lock +1 -1
  17. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/.agents/skills/client/metatables-local-development/SKILL.md +0 -0
  18. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/.agents/skills/client/metatables-meta-tables/SKILL.md +0 -0
  19. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/.agents/skills/client/metatables-migrations/SKILL.md +0 -0
  20. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/.agents/skills/client/metatables-time-index-table-updates/SKILL.md +0 -0
  21. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/.agents/skills/client/metatables-upgrade-legacy-app/SKILL.md +0 -0
  22. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/.mainsequence/workflows/metatables-api.yaml +0 -0
  23. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/LICENSE +0 -0
  24. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/MANIFEST.in +0 -0
  25. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/README.md +0 -0
  26. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/alembic.ini +0 -0
  27. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/api/metatables/main.py +0 -0
  28. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/compose.database-tests.yml +0 -0
  29. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/adr/api/0002-application-administration-and-table-ownership.md +0 -0
  30. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/adr/api/0004-approved-application-migrations.md +0 -0
  31. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/adr/api/0005-run-logs-and-local-file-capture.md +0 -0
  32. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/adr/api/0006-historical-run-graphs.md +0 -0
  33. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/adr/api/0007-database-enforced-table-access.md +0 -0
  34. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/adr/api/0007-database-roles-and-privileges.svg +0 -0
  35. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/adr/api/0007-query-enforcement-path.svg +0 -0
  36. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/adr/api/0008-mysql-mssql-table-workflows.md +0 -0
  37. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/adr/api/0009-shared-credential-store.md +0 -0
  38. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/adr/api/0010-import-external-tables-and-views.md +0 -0
  39. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/adr/api/0012-bounded-data-transfer-and-safe-retries.md +0 -0
  40. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/adr/api/0013-application-owned-migrations.md +0 -0
  41. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/adr/api/0014-main-sequence-release-jobs-and-production-migrations.md +0 -0
  42. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/adr/api/0015-timescale-compression-and-retention-policies.md +0 -0
  43. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/adr/client/0003-api-endpoint-resolution.md +0 -0
  44. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/adr/client/0011-cli-local-development-with-managed-admin.md +0 -0
  45. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/adr/index.md +0 -0
  46. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/api/authentication-and-errors.md +0 -0
  47. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/api/openapi.json +0 -0
  48. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/api/overview.md +0 -0
  49. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/api/reference.md +0 -0
  50. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/api/tables-and-migrations.md +0 -0
  51. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/api/time-index-and-updates.md +0 -0
  52. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/assets/branding/metatables.svg +0 -0
  53. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/assets/diagrams/local-client-experience.svg +0 -0
  54. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/client/bounded-transfers.md +0 -0
  55. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/client/build-an-updater.md +0 -0
  56. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/client/define-and-migrate-tables.md +0 -0
  57. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/client/deploy-application-migrations.md +0 -0
  58. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/client/installation-and-connection.md +0 -0
  59. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/client/local-storage.md +0 -0
  60. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/client/query-and-mutate.md +0 -0
  61. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/client/quickstart.md +0 -0
  62. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/client/read-existing-time-index-tables.md +0 -0
  63. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/client/register-existing-tables.md +0 -0
  64. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/client/tutorial.md +0 -0
  65. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/client/upgrade-legacy-app.md +0 -0
  66. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/concepts/architecture.md +0 -0
  67. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/concepts/data-sources.md +0 -0
  68. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/concepts/identity-and-scope.md +0 -0
  69. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/concepts/permissions-namespaces-labels.md +0 -0
  70. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/concepts/runs-and-execution-graphs.md +0 -0
  71. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/concepts/table-contracts-and-lifecycle.md +0 -0
  72. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/concepts/time-index-tables-and-updates.md +0 -0
  73. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/contributing/architecture-and-boundaries.md +0 -0
  74. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/contributing/database-backends.md +0 -0
  75. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/contributing/documentation.md +0 -0
  76. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/contributing/releasing.md +0 -0
  77. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/contributing/testing.md +0 -0
  78. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/README.md +0 -0
  79. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/__init__.py +0 -0
  80. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/bounded_reader.py +0 -0
  81. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/data_sources/README.md +0 -0
  82. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/data_sources/mssql.json +0 -0
  83. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/data_sources/mysql.json +0 -0
  84. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/data_sources/postgresql.json +0 -0
  85. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/data_sources/register.py +0 -0
  86. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/external_table.py +0 -0
  87. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/local_app/README.md +0 -0
  88. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/local_app/__init__.py +0 -0
  89. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/local_app/__main__.py +0 -0
  90. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/local_app/migrations/__init__.py +0 -0
  91. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/local_app/migrations/env.py +0 -0
  92. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/local_app/migrations/script.py.mako +0 -0
  93. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  94. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/local_app/tables.py +0 -0
  95. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/query.py +0 -0
  96. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/quickstart.py +0 -0
  97. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/reader.py +0 -0
  98. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/scripts/__init__.py +0 -0
  99. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/scripts/setup_metatables.py +0 -0
  100. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/tables.py +0 -0
  101. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/tutorial/README.md +0 -0
  102. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/tutorial/__init__.py +0 -0
  103. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/tutorial/__main__.py +0 -0
  104. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/tutorial/data/README.md +0 -0
  105. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  106. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/tutorial/frames.py +0 -0
  107. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/tutorial/migrations/__init__.py +0 -0
  108. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/tutorial/migrations/env.py +0 -0
  109. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/tutorial/migrations/registry.py +0 -0
  110. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/tutorial/migrations/script.py.mako +0 -0
  111. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/tutorial/migrations/versions/__init__.py +0 -0
  112. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  113. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  114. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  115. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/tutorial/operations.py +0 -0
  116. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/tutorial/tables.py +0 -0
  117. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/tutorial/updaters.py +0 -0
  118. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/examples/updater.py +0 -0
  119. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/index.md +0 -0
  120. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/operations/catalog-migrations.md +0 -0
  121. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/operations/recovery-and-observability.md +0 -0
  122. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/operations/run-history.md +0 -0
  123. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/operations/run-logs.md +0 -0
  124. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/reference/capabilities.md +0 -0
  125. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/reference/cli.md +0 -0
  126. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/reference/python.md +0 -0
  127. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/security/index.md +0 -0
  128. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/security/ownership-and-sharing.md +0 -0
  129. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/docs/security/permissions.md +0 -0
  130. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/mkdocs.yml +0 -0
  131. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/scripts/__init__.py +0 -0
  132. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/scripts/build_reference.py +0 -0
  133. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/scripts/check_boundaries.py +0 -0
  134. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/scripts/check_client_api_coverage.py +0 -0
  135. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/scripts/check_distribution_sources.py +0 -0
  136. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/scripts/check_docs.py +0 -0
  137. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/scripts/check_examples_debug.py +0 -0
  138. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/scripts/check_project.py +0 -0
  139. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/scripts/dev_release_version.py +0 -0
  140. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/scripts/test_databases.py +0 -0
  141. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/scripts/test_postgresql.py +0 -0
  142. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/setup.cfg +0 -0
  143. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/mainsequence_metatable.egg-info/SOURCES.txt +0 -0
  144. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/mainsequence_metatable.egg-info/dependency_links.txt +0 -0
  145. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/mainsequence_metatable.egg-info/entry_points.txt +0 -0
  146. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/mainsequence_metatable.egg-info/requires.txt +0 -0
  147. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/mainsequence_metatable.egg-info/top_level.txt +0 -0
  148. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/__init__.py +0 -0
  149. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/_admin_source.json +0 -0
  150. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/_build.py +0 -0
  151. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/_skill_bundle.py +0 -0
  152. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/__init__.py +0 -0
  153. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/__init__.py +0 -0
  154. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/auth/__init__.py +0 -0
  155. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/auth/boundary.py +0 -0
  156. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/auth/caller_assertions.py +0 -0
  157. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/auth/local_actor.py +0 -0
  158. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/bootstrap.py +0 -0
  159. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/configuration.py +0 -0
  160. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/credential_admin.py +0 -0
  161. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/development.py +0 -0
  162. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/development_client.py +0 -0
  163. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/main.py +0 -0
  164. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/platform_cache.py +0 -0
  165. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/__init__.py +0 -0
  166. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/column_search.py +0 -0
  167. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/contract_validation.py +0 -0
  168. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/data_sources.py +0 -0
  169. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/managed_finalize.py +0 -0
  170. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/migration_connection.py +0 -0
  171. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/namespaces.py +0 -0
  172. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/run_logs.py +0 -0
  173. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/runtime_context.py +0 -0
  174. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/schema_graph.py +0 -0
  175. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/security.py +0 -0
  176. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/table_cascade.py +0 -0
  177. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/table_crud.py +0 -0
  178. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/table_delete.py +0 -0
  179. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/table_filter.py +0 -0
  180. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/table_import.py +0 -0
  181. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/table_introspection.py +0 -0
  182. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/table_patch.py +0 -0
  183. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/table_registration.py +0 -0
  184. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/table_response.py +0 -0
  185. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/table_search_document.py +0 -0
  186. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/table_sql.py +0 -0
  187. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/table_update_pipeline.py +0 -0
  188. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/time_index_delete.py +0 -0
  189. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/time_index_reads.py +0 -0
  190. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/time_index_stats.py +0 -0
  191. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/timescale_policies.py +0 -0
  192. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/update_batch.py +0 -0
  193. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/update_chunk_insert.py +0 -0
  194. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/update_constants.py +0 -0
  195. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/update_crud.py +0 -0
  196. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/update_details.py +0 -0
  197. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/update_graph.py +0 -0
  198. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/update_index_statistics.py +0 -0
  199. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/update_registration.py +0 -0
  200. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/update_runs.py +0 -0
  201. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/routes/update_statistics.py +0 -0
  202. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/runtime.py +0 -0
  203. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/runtime_control.py +0 -0
  204. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/source_passwords.py +0 -0
  205. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/app/transfer.py +0 -0
  206. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/__init__.py +0 -0
  207. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/__init__.py +0 -0
  208. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/access.py +0 -0
  209. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/__init__.py +0 -0
  210. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/maintenance/__init__.py +0 -0
  211. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/maintenance/postgresql.py +0 -0
  212. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/maintenance/runtime.py +0 -0
  213. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/maintenance/temporal.py +0 -0
  214. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/maintenance/timescaledb.py +0 -0
  215. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/maintenance/validation.py +0 -0
  216. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/postgresql_cascade_delete.py +0 -0
  217. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/postgresql_connection.py +0 -0
  218. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/postgresql_introspection.py +0 -0
  219. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/postgresql_table_delete.py +0 -0
  220. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/postgresql_tables.py +0 -0
  221. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/postgresql_time_index.py +0 -0
  222. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/postgresql_time_index_delete.py +0 -0
  223. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/postgresql_time_index_queries.py +0 -0
  224. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/postgresql_time_index_stats.py +0 -0
  225. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/postgresql_time_index_write.py +0 -0
  226. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/source_validation.py +0 -0
  227. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/sqlite_connection.py +0 -0
  228. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/sqlite_introspection.py +0 -0
  229. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/adapters/table_cursor.py +0 -0
  230. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/catalog.py +0 -0
  231. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/catalog_ddl.py +0 -0
  232. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/catalog_types.py +0 -0
  233. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/contracts.py +0 -0
  234. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/hosted.py +0 -0
  235. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/hosted_access.py +0 -0
  236. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/migration_connection.py +0 -0
  237. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/native.py +0 -0
  238. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/operations.py +0 -0
  239. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/pages.py +0 -0
  240. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/postgresql_access.py +0 -0
  241. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/registry.py +0 -0
  242. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/relation_tables.py +0 -0
  243. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/relational.py +0 -0
  244. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/restricted_sql.py +0 -0
  245. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/sqlite_access.py +0 -0
  246. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/streaming.py +0 -0
  247. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/backends/timescale.py +0 -0
  248. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/contracts/__init__.py +0 -0
  249. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/contracts/relation_import.py +0 -0
  250. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/contracts/storage_layouts.py +0 -0
  251. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/contracts/table_contracts.py +0 -0
  252. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/contracts/values.py +0 -0
  253. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/domain/__init__.py +0 -0
  254. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/domain/catalog_rules.py +0 -0
  255. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/domain/data_source_rules.py +0 -0
  256. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/domain/index_statistics.py +0 -0
  257. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/domain/label_rules.py +0 -0
  258. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/domain/permission_rules.py +0 -0
  259. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/domain/update_constants.py +0 -0
  260. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/integrations/__init__.py +0 -0
  261. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/integrations/catalog_data_sources.py +0 -0
  262. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/integrations/credential_keys.py +0 -0
  263. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/integrations/credential_store.py +0 -0
  264. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/integrations/data_source_provider.py +0 -0
  265. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/integrations/local_credentials.py +0 -0
  266. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/integrations/platform_principals.py +0 -0
  267. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/integrations/run_logs.py +0 -0
  268. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/integrations/runtime_binding.py +0 -0
  269. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/integrations/runtime_data_sources.py +0 -0
  270. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/integrations/source_validation.py +0 -0
  271. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/migrations/__init__.py +0 -0
  272. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/migrations/env.py +0 -0
  273. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/migrations/script.py.mako +0 -0
  274. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/migrations/versions/0001_initial.py +0 -0
  275. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/migrations/versions/0002_security_model.py +0 -0
  276. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/migrations/versions/0003_run_log_capture.py +0 -0
  277. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/migrations/versions/0004_historical_run_graphs.py +0 -0
  278. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/migrations/versions/0005_database_access.py +0 -0
  279. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/migrations/versions/0006_local_credentials.py +0 -0
  280. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/migrations/versions/0007_external_relation_names.py +0 -0
  281. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/migrations/versions/0008_upload_receipts.py +0 -0
  282. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/migrations/versions/0009_timescale_policies.py +0 -0
  283. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/migrations/versions/__init__.py +0 -0
  284. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/operations/__init__.py +0 -0
  285. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/operations/bootstrap_migrations.py +0 -0
  286. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/operations/catalog_schema.py +0 -0
  287. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/operations/create_table.py +0 -0
  288. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/operations/finalize_managed.py +0 -0
  289. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/operations/import_relations.py +0 -0
  290. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/operations/introspect_table.py +0 -0
  291. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/operations/read_time_index.py +0 -0
  292. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/operations/register_catalog.py +0 -0
  293. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/operations/search_documents.py +0 -0
  294. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/__init__.py +0 -0
  295. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/cascade.py +0 -0
  296. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/catalog.py +0 -0
  297. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/database.py +0 -0
  298. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/grants.py +0 -0
  299. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/labels.py +0 -0
  300. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/locking.py +0 -0
  301. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/models.py +0 -0
  302. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/physical_operations.py +0 -0
  303. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/projections.py +0 -0
  304. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/run_graphs.py +0 -0
  305. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/schema_graph.py +0 -0
  306. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/sqlite_types.py +0 -0
  307. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/table_body_filter.py +0 -0
  308. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/table_queries.py +0 -0
  309. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/table_response.py +0 -0
  310. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/update_graph.py +0 -0
  311. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/update_pipeline.py +0 -0
  312. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/updates.py +0 -0
  313. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/persistence/upload_receipts.py +0 -0
  314. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/backend/presentation/data_source_summary.py +0 -0
  315. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/metatables/__init__.py +0 -0
  316. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/metatables/configuration.yaml +0 -0
  317. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/api/metatables/main.py +0 -0
  318. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/cli/__init__.py +0 -0
  319. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/cli/admin_install.py +0 -0
  320. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/cli/app.py +0 -0
  321. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/cli/filters.py +0 -0
  322. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/cli/local.py +0 -0
  323. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/cli/migrations.py +0 -0
  324. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/cli/project.py +0 -0
  325. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/cli/skills.py +0 -0
  326. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/compiled_sql/__init__.py +0 -0
  327. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/compiled_sql/mssql.py +0 -0
  328. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/compiled_sql/v1.py +0 -0
  329. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/dtype_codec.py +0 -0
  330. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/endpoint.py +0 -0
  331. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/README.md +0 -0
  332. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/__init__.py +0 -0
  333. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/bounded_reader.py +0 -0
  334. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/data_sources/README.md +0 -0
  335. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/data_sources/mssql.json +0 -0
  336. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/data_sources/mysql.json +0 -0
  337. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/data_sources/postgresql.json +0 -0
  338. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/data_sources/register.py +0 -0
  339. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/external_table.py +0 -0
  340. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/local_app/README.md +0 -0
  341. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/local_app/__init__.py +0 -0
  342. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/local_app/__main__.py +0 -0
  343. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/local_app/migrations/__init__.py +0 -0
  344. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/local_app/migrations/env.py +0 -0
  345. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/local_app/migrations/script.py.mako +0 -0
  346. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  347. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/local_app/tables.py +0 -0
  348. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/query.py +0 -0
  349. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/quickstart.py +0 -0
  350. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/reader.py +0 -0
  351. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/scripts/__init__.py +0 -0
  352. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/scripts/setup_metatables.py +0 -0
  353. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/tables.py +0 -0
  354. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/tutorial/README.md +0 -0
  355. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/tutorial/__init__.py +0 -0
  356. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/tutorial/__main__.py +0 -0
  357. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/tutorial/data/README.md +0 -0
  358. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  359. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/tutorial/frames.py +0 -0
  360. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/tutorial/migrations/__init__.py +0 -0
  361. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/tutorial/migrations/env.py +0 -0
  362. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/tutorial/migrations/registry.py +0 -0
  363. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/tutorial/migrations/script.py.mako +0 -0
  364. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/tutorial/migrations/versions/__init__.py +0 -0
  365. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  366. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  367. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  368. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/tutorial/operations.py +0 -0
  369. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/tutorial/tables.py +0 -0
  370. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/tutorial/updaters.py +0 -0
  371. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/examples/updater.py +0 -0
  372. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/future_registry.py +0 -0
  373. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/hashing.py +0 -0
  374. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/instrumentation.py +0 -0
  375. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/local_connection.py +0 -0
  376. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/local_files.py +0 -0
  377. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/local_run_logs.py +0 -0
  378. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/log_contract.py +0 -0
  379. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/migrations/__init__.py +0 -0
  380. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/migrations/alembic.py +0 -0
  381. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/migrations/connection.py +0 -0
  382. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/migrations/env.py +0 -0
  383. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/migrations/provider.py +0 -0
  384. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/migrations/registry.py +0 -0
  385. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/migrations/runner.py +0 -0
  386. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/migrations/scaffold.py +0 -0
  387. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/migrations/templates/__init__.py +0 -0
  388. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/migrations/templates/env.py.mako +0 -0
  389. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/migrations/templates/script.py.mako +0 -0
  390. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/migrations/tls.py +0 -0
  391. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/models.py +0 -0
  392. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/pydantic_metadata.py +0 -0
  393. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/run_logging.py +0 -0
  394. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/runtime.py +0 -0
  395. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/runtime_context.py +0 -0
  396. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/runtime_contract.py +0 -0
  397. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/schema_names.py +0 -0
  398. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/sdk_compat.py +0 -0
  399. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/sqlalchemy_contracts.py +0 -0
  400. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/time_index_table_refs.py +0 -0
  401. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/transfer.py +0 -0
  402. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/transfer_contract.py +0 -0
  403. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/transport.py +0 -0
  404. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/update_configuration_contract.py +0 -0
  405. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/updaters/__init__.py +0 -0
  406. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/updaters/configuration.py +0 -0
  407. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/updaters/dependencies.py +0 -0
  408. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/updaters/managers.py +0 -0
  409. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/updaters/namespacing.py +0 -0
  410. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/updaters/runner.py +0 -0
  411. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/updaters/updaters.py +0 -0
  412. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/updaters/utils.py +0 -0
  413. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/src/metatables/upload.py +0 -0
  414. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/auth/test_caller_assertions.py +0 -0
  415. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/auth/test_data_source_identity.py +0 -0
  416. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/auth/test_development_client.py +0 -0
  417. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/auth/test_hosted_environment_target.py +0 -0
  418. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/auth/test_local_mode.py +0 -0
  419. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/auth/test_platform_fact_cache.py +0 -0
  420. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/auth/test_runtime_bootstrap.py +0 -0
  421. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/auth/test_runtime_scaffold.py +0 -0
  422. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/auth/test_runtime_storage_binding.py +0 -0
  423. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/auth/test_source_passwords.py +0 -0
  424. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/catalog/test_catalog_foundation.py +0 -0
  425. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/catalog/test_contract_projection.py +0 -0
  426. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/catalog/test_database_config.py +0 -0
  427. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/catalog/test_index_statistics.py +0 -0
  428. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/catalog/test_migration.py +0 -0
  429. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/conftest.py +0 -0
  430. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/contracts/capabilities.json +0 -0
  431. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/contracts/client_signatures.json +0 -0
  432. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/contracts/database_operations.json +0 -0
  433. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/contracts/test_bounded_transfer.py +0 -0
  434. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/contracts/test_compiler_runtime_source.py +0 -0
  435. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/contracts/test_relation_batching.py +0 -0
  436. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/contracts/test_relation_import.py +0 -0
  437. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/contracts/test_storage_layouts.py +0 -0
  438. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/contracts/test_table_contracts.py +0 -0
  439. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_backend/Dockerfile +0 -0
  440. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_backend/Dockerfile.dockerignore +0 -0
  441. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_backend/__init__.py +0 -0
  442. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_backend/conftest.py +0 -0
  443. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_backend/provider/__init__.py +0 -0
  444. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_backend/provider/env.py +0 -0
  445. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_backend/provider/versions/0001_measurement.py +0 -0
  446. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_backend/test_api_contract.py +0 -0
  447. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_backend/test_application_migration.py +0 -0
  448. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_backend/test_bootstrap_recovery.py +0 -0
  449. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_backend/test_catalog_contract.py +0 -0
  450. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_backend/test_credential_catalog.py +0 -0
  451. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_backend/test_physical_contract.py +0 -0
  452. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_backend/test_relation_import.py +0 -0
  453. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_backend/test_sql_security.py +0 -0
  454. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_backend/test_update_client.py +0 -0
  455. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_operations/test_physical_operations.py +0 -0
  456. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_operations/test_postgresql_operations.py +0 -0
  457. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/database_operations/test_runtime_and_temporal.py +0 -0
  458. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/documentation/test_project_checks.py +0 -0
  459. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_admin_installation.py +0 -0
  460. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_api_endpoint.py +0 -0
  461. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_application_owned_migrations.py +0 -0
  462. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_catalog_outage.py +0 -0
  463. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_client_api_contract.py +0 -0
  464. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_client_api_coverage.py +0 -0
  465. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_client_migration_scaffold.py +0 -0
  466. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_client_migration_tls.py +0 -0
  467. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_client_package.py +0 -0
  468. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_client_signatures.py +0 -0
  469. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_client_value_behaviors.py +0 -0
  470. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_data_source_registry.py +0 -0
  471. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_local_actor_client_api.py +0 -0
  472. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_local_cli_workflow.py +0 -0
  473. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_local_client_selection.py +0 -0
  474. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_managed_finalize_client_api.py +0 -0
  475. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_namespaces_admin_http.py +0 -0
  476. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_public_imports.py +0 -0
  477. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_remaining_client_routes.py +0 -0
  478. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_run_graphs.py +0 -0
  479. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_run_logs.py +0 -0
  480. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_runtime_upgrade.py +0 -0
  481. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_sdk_local_startup.py +0 -0
  482. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_sqlite_runtime.py +0 -0
  483. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_table_delete_client_api.py +0 -0
  484. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_table_filter_client_api.py +0 -0
  485. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_table_introspection_client_api.py +0 -0
  486. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_table_patch_client_api.py +0 -0
  487. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_table_search_document_api.py +0 -0
  488. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_table_stats_api.py +0 -0
  489. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_table_update_pipeline.py +0 -0
  490. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_table_updates_http.py +0 -0
  491. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_time_index_delete_client_api.py +0 -0
  492. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_time_index_reads_client_api.py +0 -0
  493. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_timescale_policies_client_api.py +0 -0
  494. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_update_batch_client_api.py +0 -0
  495. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_update_chunk_insert_client_api.py +0 -0
  496. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_update_dependency_priority_client_api.py +0 -0
  497. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_update_index_statistics_client_api.py +0 -0
  498. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/e2e/test_update_registration_client_api.py +0 -0
  499. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/examples/test_documented_examples.py +0 -0
  500. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/examples/test_postgresql_examples.py +0 -0
  501. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/examples/test_setup_launch.py +0 -0
  502. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/examples/test_tutorial.py +0 -0
  503. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/integrations/test_credential_store.py +0 -0
  504. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/integrations/test_data_source_rules.py +0 -0
  505. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/integrations/test_local_run_logs.py +0 -0
  506. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/integrations/test_postgresql_connection.py +0 -0
  507. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/integrations/test_postgresql_sql.py +0 -0
  508. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/integrations/test_postgresql_tables.py +0 -0
  509. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/integrations/test_postgresql_time_index_queries.py +0 -0
  510. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/integrations/test_source_validation.py +0 -0
  511. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/integrations/test_sqlite_operations.py +0 -0
  512. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/labels/test_labels.py +0 -0
  513. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/operations/test_create_table_operation.py +0 -0
  514. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/operations/test_create_table_postgres.py +0 -0
  515. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/operations/test_physical_operation_journal.py +0 -0
  516. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/operations/test_register_catalog.py +0 -0
  517. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/operations/test_search_documents.py +0 -0
  518. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/operations/test_timescale_policies.py +0 -0
  519. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/packaging/test_client_skills.py +0 -0
  520. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/packaging/test_dev_release_version.py +0 -0
  521. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/packaging/test_distribution_sources.py +0 -0
  522. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/packaging/test_editable_build.py +0 -0
  523. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/packaging/test_installed_distribution.py +0 -0
  524. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/permissions/test_governed_sql_scope.py +0 -0
  525. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/permissions/test_local_actor_membership.py +0 -0
  526. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/permissions/test_migration_boundary.py +0 -0
  527. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/permissions/test_namespace_grants.py +0 -0
  528. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/permissions/test_security_api.py +0 -0
  529. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/permissions/test_table_body_filter.py +0 -0
  530. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/permissions/test_table_grants.py +0 -0
  531. {mainsequence_metatable-0.1.9.dev19 → mainsequence_metatable-0.1.10.dev21}/tests/permissions/test_table_queries.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence-metatable
3
- Version: 0.1.9.dev19
3
+ Version: 0.1.10.dev21
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
@@ -103,8 +103,10 @@ hosted runtime database is now declared by the deployment:
103
103
  keeps its own file, so each Environment's deployment reads its own file and
104
104
  Secret.
105
105
  - **Secret.** The database administrator creates it in each Environment, for
106
- example `postgresql://login:password@host:5432/database`. Host, port, database,
107
- login and password come only from the URI, certificates only from the named
106
+ example `postgresql://metatables:password@host:5432/database`. The login is the
107
+ code constant `metatables`, one per database server and shared by every
108
+ Environment's database on it; a URI with another login is refused. Host, port,
109
+ database and password come only from the URI, certificates only from the named
108
110
  Secrets. The runtime DataSource's `password_secret_uid` is the URI Secret's UID
109
111
  ([ADR 0009](0009-shared-credential-store.md)).
110
112
  - **Deployment.** On every deployment the `migrate-system` Job reads the
@@ -187,8 +187,10 @@ Preparing the database, its login and these privileges is the database
187
187
  administrator's responsibility. On every deployment, the hosted migration Job checks
188
188
  the PostgreSQL requirements before any migration runs: `CREATEROLE`, `CREATE` on the
189
189
  database or ownership of the `metatables` schema, and `CREATE` on the default schema.
190
- A missing one fails the Job with the reason, for example `metatables_dev lacks
191
- CREATEROLE`; nothing is written and the API does not roll out.
190
+ A missing one fails the Job with the reason, for example `metatables lacks
191
+ CREATEROLE`; nothing is written and the API does not roll out. The hosted login is
192
+ always `metatables`, one per database server; see
193
+ [Set up a hosted runtime database](../operations/hosted-runtime.md#set-up-a-hosted-runtime-database).
192
194
 
193
195
  The database may be shared with other applications. Setup revokes `PUBLIC` access
194
196
  only on objects MetaTables owns: its `metatables` schema, the tables it manages and
@@ -10,7 +10,7 @@ implement a second platform HTTP client or token exchange.
10
10
  | `runtime_database` in the API's `configuration.yaml` | Hosted API, migration Job, launcher in Hosted mode | Declares the hosted runtime database: engine, the Environment Secret holding its URI, schema and TLS. See [hosted runtime](hosted-runtime.md#declare-the-runtime-database). |
11
11
  | `METATABLES_LOCAL_TOKEN` | Local launcher and client | Private ASCII token of at least 40 characters. |
12
12
  | `METATABLES_LOCAL_ALLOWED_ORIGINS` | Local API | Comma-separated exact loopback HTTP(S) origins with explicit ports; empty by default. |
13
- | `METATABLES_LOCAL_STORAGE_DIR` | Local API | Root for the checkout's local runtime SQLite file, shared across Git branches; defaults to `~/.local/share/metatables`. |
13
+ | `METATABLES_LOCAL_STORAGE_DIR` | Local API | Directory of the laptop's single local runtime SQLite file, shared by every checkout and branch; defaults to `~/.local/share/metatables`. |
14
14
 
15
15
  Client discovery uses the name derived from the API automatic-deployment file
16
16
  and the caller's resolved Organization Environment. Identical names in other
@@ -62,7 +62,8 @@ runtime_database:
62
62
  ```
63
63
 
64
64
  The Secret named by `uri_secret` holds a URI such as
65
- `postgresql://login:password@host:5432/database`. Use `postgresql://` or
65
+ `postgresql://metatables:password@host:5432/database`. The login is always
66
+ `metatables`; the Job and the API refuse any other. Use `postgresql://` or
66
67
  `postgres://` for `postgresql` and `timescale_db`, `mysql://` for MySQL and
67
68
  `mssql://` for SQL Server, and percent-encode special characters in the password.
68
69
  Host, port, database, login and password come only from the URI. It takes no
@@ -75,16 +76,33 @@ rejects them and maps `tls.mode` to its driver: `disable` turns encryption off,
75
76
 
76
77
  ## Set up a hosted runtime database
77
78
 
78
- The database, its login and the login's privileges are the database
79
- administrator's responsibility. [DataSource database privileges](../api/data-sources.md#database-privileges-and-sql-behavior)
79
+ Every Environment's runtime database is opened by the same login, `metatables`.
80
+ Database roles are server-wide, so each database server has one `metatables`
81
+ login, shared by every Environment's database on it. Its role names are the
82
+ same everywhere: the login and `mt_owner`, which setup creates. The database,
83
+ the login and its privileges are the database administrator's responsibility.
84
+ [DataSource database privileges](../api/data-sources.md#database-privileges-and-sql-behavior)
80
85
  lists what MetaTables requires.
81
86
 
82
- 1. Create the Environment Secret named by `uri_secret` in each Environment that
83
- deploys the API, holding the connection URI.
84
- 2. Set `runtime_database` in the API's `configuration.yaml`: engine, Secret name,
87
+ 1. Once per database server, create the login. On PostgreSQL and TimescaleDB:
88
+
89
+ ```sql
90
+ CREATE ROLE metatables LOGIN CREATEROLE PASSWORD '...';
91
+ ```
92
+
93
+ 2. For each Environment's database, let the login create the `metatables` schema:
94
+
95
+ ```sql
96
+ GRANT CREATE ON DATABASE production TO metatables;
97
+ ```
98
+
99
+ It also needs `CREATE` on the default schema.
100
+ 3. Create the Environment Secret named by `uri_secret` in that Environment, holding
101
+ `postgresql://metatables:password@host:5432/<database>`.
102
+ 4. Set `runtime_database` in the API's `configuration.yaml`: engine, Secret name,
85
103
  schema and TLS.
86
- 3. Deploy the API. The migration Job initializes the database before the API rolls out.
87
- 4. Open **Settings** and check the declaration, the resolved connection, the
104
+ 5. Deploy the API. The migration Job initializes the database before the API rolls out.
105
+ 6. Open **Settings** and check the declaration, the resolved connection, the
88
106
  `ready` status and the applied migration revisions.
89
107
 
90
108
  ## Deployment gate
@@ -99,12 +99,13 @@ Shared hosted deployments disable local mode. Switching affects the whole API in
99
99
  The default file is:
100
100
 
101
101
  ```text
102
- ~/.local/share/metatables/<workspace-uid>/metatables.sqlite
102
+ ~/.local/share/metatables/metatables.sqlite
103
103
  ```
104
104
 
105
- `METATABLES_LOCAL_STORAGE_DIR` changes the root before workspace selection. Settings
106
- can configure an absolute SQLite file. The default workspace identity uses the
107
- checkout and repository, excluding Git branch, ref and commit. The selected file is
105
+ The local runtime is one per laptop: every checkout, repository and branch uses the
106
+ same file. `METATABLES_LOCAL_STORAGE_DIR` changes its directory. Settings can
107
+ configure another absolute SQLite file. The local DataSource UID derives only from
108
+ the file location. The selected file is
108
109
  stored under the single `local` entry in `.local/runtime-data-sources.json`. Branch
109
110
  changes and restarts reuse it, its credentials and its DataSource UID. Git context
110
111
  still describes the running code; changing that context requires restarting the API.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mainsequence-metatable"
7
- version = "0.1.9.dev19"
7
+ version = "0.1.10.dev21"
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.9.dev19
3
+ Version: 0.1.10.dev21
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
@@ -15,12 +15,16 @@ from metatables.api.app.configuration import DEPLOYMENT_CONFIGURATION, Deploymen
15
15
  from metatables.api.backend.integrations.catalog_data_sources import parse_configuration
16
16
  from metatables.api.backend.integrations.credential_store import CredentialStoreError
17
17
 
18
+ # Every Environment's runtime database is opened by this one login. Database
19
+ # roles are server-wide, so one `metatables` login per database server serves
20
+ # every Environment's database on it; no Environment chooses its own.
21
+ RUNTIME_LOGIN = "metatables"
18
22
  URI_SCHEMES = {"postgresql": {"postgresql", "postgres"}, "timescale_db": {"postgresql", "postgres"},
19
23
  "mysql": {"mysql"}, "mssql": {"mssql"}}
20
- URI_EXAMPLES = {"postgresql": "postgresql://login:password@host:5432/database",
21
- "timescale_db": "postgresql://login:password@host:5432/database",
22
- "mysql": "mysql://login:password@host:3306/database",
23
- "mssql": "mssql://login:password@host:1433/database"}
24
+ URI_EXAMPLES = {"postgresql": f"postgresql://{RUNTIME_LOGIN}:password@host:5432/database",
25
+ "timescale_db": f"postgresql://{RUNTIME_LOGIN}:password@host:5432/database",
26
+ "mysql": f"mysql://{RUNTIME_LOGIN}:password@host:3306/database",
27
+ "mssql": f"mssql://{RUNTIME_LOGIN}:password@host:1433/database"}
24
28
  DEPLOYMENT_MANAGED = ("The deployment manages the hosted runtime database. Change runtime_database in the API's "
25
29
  "configuration.yaml or its Environment Secret, then deploy the API.")
26
30
 
@@ -96,6 +100,9 @@ def declared_database(config, store):
96
100
  raise RuntimeDatabaseError("incompatible", f"The Environment Secret {declared.uri_secret} must hold a URI "
97
101
  f"such as {URI_EXAMPLES[declared.engine]}, with no query options; TLS and the "
98
102
  "schema are set in configuration.yaml.")
103
+ if url.username != RUNTIME_LOGIN:
104
+ raise RuntimeDatabaseError("incompatible", f"The Environment Secret {declared.uri_secret} must log in as "
105
+ f"{RUNTIME_LOGIN}, the login every Environment's runtime database uses.")
99
106
  values = dict(host=url.host, database_name=url.database, database_user=url.username,
100
107
  password_secret_uid=str(uri_uid))
101
108
  if url.port is not None:
@@ -1,4 +1,4 @@
1
- """One API-owned local runtime per checkout, independent of Git branches."""
1
+ """One API-owned local runtime per laptop, shared by every checkout and branch."""
2
2
 
3
3
  from __future__ import annotations
4
4
 
@@ -157,21 +157,15 @@ def select_local_workspace(
157
157
  raise RuntimeError(
158
158
  "LOCAL_DATA_SOURCES_FILE is retired; configure API-owned SQLite storage instead."
159
159
  )
160
- identity = json.dumps(
161
- [
162
- str(source.repository_root.resolve()),
163
- source.canonical_repository_identity,
164
- ],
165
- separators=(",", ":"),
166
- )
167
- uid = uuid5(NAMESPACE_URL, "metatables:workspace:" + identity)
160
+ if values.get("METATABLES_CATALOG_DATABASE_URL") or values.get("METATABLES_LOCAL_TABLES_FILE"):
161
+ raise RuntimeError("Separate catalog/table overrides are retired. Configure the runtime DataSource in Settings.")
168
162
  root = (
169
163
  Path(values.get("METATABLES_LOCAL_STORAGE_DIR") or Path.home() / ".local/share/metatables")
170
164
  .expanduser()
171
165
  .resolve()
172
166
  )
173
- directory = root / str(uid)
174
- if values.get("METATABLES_CATALOG_DATABASE_URL") or values.get("METATABLES_LOCAL_TABLES_FILE"):
175
- raise RuntimeError("Separate catalog/table overrides are retired. Configure the runtime DataSource in Settings.")
176
- path = directory / "metatables.sqlite"
167
+ # The local runtime belongs to the laptop, not to a checkout: every project
168
+ # shares this file, and its identity follows only the file location.
169
+ path = root / "metatables.sqlite"
170
+ uid = uuid5(NAMESPACE_URL, "metatables:local-runtime:" + str(path))
177
171
  return LocalWorkspace(uid, source, path)
@@ -42,7 +42,7 @@ BASE = SimpleNamespace(resolve=lambda uid, purpose: f"base:{purpose}", create=la
42
42
  def test_uri_supplies_the_connection_and_configuration_the_rest(declare):
43
43
  config, secrets = declare(POSTGRESQL + " default_schema: tables\n tls:\n mode: verify-full\n"
44
44
  " ca_secret: DATABASE_CA\n",
45
- uri="postgres://metatables_dev:p%40ss%3Aword@db.example.invalid/development",
45
+ uri="postgres://metatables:p%40ss%3Aword@db.example.invalid/development",
46
46
  DATABASE_CA="-----BEGIN CERTIFICATE-----")
47
47
  declared, candidate, credentials = declared_database(config, BASE)
48
48
  uri_uid = secrets["METATABLES_RUNTIME_DATABASE"][0]
@@ -52,7 +52,7 @@ def test_uri_supplies_the_connection_and_configuration_the_rest(declare):
52
52
  "host", "port", "database_name", "database_user", "default_schema", "ssl_mode",
53
53
  "password_secret_uid", "tls_ca_secret_uid")} == {
54
54
  "host": "db.example.invalid", "port": 5432, "database_name": "development",
55
- "database_user": "metatables_dev", "default_schema": "tables", "ssl_mode": "verify-full",
55
+ "database_user": "metatables", "default_schema": "tables", "ssl_mode": "verify-full",
56
56
  "password_secret_uid": str(uri_uid), "tls_ca_secret_uid": str(secrets["DATABASE_CA"][0])}
57
57
  assert "p@ss" not in repr(candidate)
58
58
  # The URI Secret supplies only the login password; other references use the base store.
@@ -65,8 +65,8 @@ def test_uri_supplies_the_connection_and_configuration_the_rest(declare):
65
65
 
66
66
 
67
67
  @pytest.mark.parametrize(("engine", "uri", "expected"), [
68
- ("mysql", "mysql://app:pw@mysql.example.invalid/tables", {"port": 3306, "default_schema": "tables", "ssl_mode": "require"}),
69
- ("mssql", "mssql://app:pw@sql.example.invalid:1444/tables", {"port": 1444, "encrypt": True, "trust_server_certificate": True}),
68
+ ("mysql", "mysql://metatables:pw@mysql.example.invalid/tables", {"port": 3306, "default_schema": "tables", "ssl_mode": "require"}),
69
+ ("mssql", "mssql://metatables:pw@sql.example.invalid:1444/tables", {"port": 1444, "encrypt": True, "trust_server_certificate": True}),
70
70
  ])
71
71
  def test_engines_take_their_own_defaults(declare, engine, uri, expected):
72
72
  config, _ = declare(f"runtime_database:\n engine: {engine}\n uri_secret: METATABLES_RUNTIME_DATABASE\n", uri=uri)
@@ -84,6 +84,13 @@ def test_invalid_uri_is_explained_without_its_value(declare, uri):
84
84
  assert "hunter2" not in str(raised.value)
85
85
 
86
86
 
87
+ def test_every_environment_logs_in_as_the_shared_runtime_login(declare):
88
+ config, _ = declare(POSTGRESQL, uri="postgresql://metatables_dev:hunter2@db/production")
89
+ with pytest.raises(RuntimeDatabaseError, match="must log in as metatables") as raised:
90
+ declared_database(config, BASE)
91
+ assert raised.value.status == "incompatible" and "hunter2" not in str(raised.value)
92
+
93
+
87
94
  def test_missing_declaration_and_missing_secret_name_the_fix(declare):
88
95
  config, _ = declare("")
89
96
  with pytest.raises(RuntimeDatabaseError, match="declares no runtime database") as raised:
@@ -135,7 +135,7 @@ def test_hosted_mode_uses_the_deployment_declared_database(tmp_path, monkeypatch
135
135
  reads = []
136
136
  def read_secret(name):
137
137
  reads.append(name)
138
- return secret_uid, "postgresql://metatables_dev:s3cr%40t@tunnel.example.invalid:20989/development"
138
+ return secret_uid, "postgresql://metatables:s3cr%40t@tunnel.example.invalid:20989/development"
139
139
  monkeypatch.setattr("metatables.api.app.runtime_database.read_secret", read_secret)
140
140
  def inspect_without_remote_connection(self):
141
141
  self.status, self.error, self.current = "migration_required", None, []
@@ -157,7 +157,7 @@ def test_hosted_mode_uses_the_deployment_declared_database(tmp_path, monkeypatch
157
157
  assert {key: bootstrap["candidate"]["configuration"][key] for key in (
158
158
  "host", "port", "database_name", "database_user", "password_secret_uid", "ssl_mode", "default_schema")} == {
159
159
  "host": "tunnel.example.invalid", "port": 20989, "database_name": "development",
160
- "database_user": "metatables_dev", "password_secret_uid": str(secret_uid), "ssl_mode": "require",
160
+ "database_user": "metatables", "password_secret_uid": str(secret_uid), "ssl_mode": "require",
161
161
  "default_schema": "public"}
162
162
  credentials = app.state.runtime.credential_store
163
163
  assert credentials.resolve(secret_uid, "database_password") == "s3cr@t"
@@ -75,6 +75,8 @@ def test_runtime_bootstrap_is_explicit_and_uses_one_source(
75
75
  uri_uid = uuid4()
76
76
  monkeypatch.setattr(declared, "read_secret",
77
77
  lambda name: (uri_uid, uri.render_as_string(hide_password=False)))
78
+ # The disposable server's login stands in for the shared runtime login.
79
+ monkeypatch.setattr(declared, "RUNTIME_LOGIN", engine.url.username)
78
80
  configuration.write_text(
79
81
  "local_mode_available: false\nruntime_database:\n"
80
82
  f" engine: {engine_kind}\n uri_secret: METATABLES_RUNTIME_DATABASE\n"
@@ -11,6 +11,7 @@ from uuid import uuid4
11
11
 
12
12
  import httpx
13
13
  import pytest
14
+ from sqlalchemy.engine import make_url
14
15
 
15
16
  from metatables.api.app.development import DevelopmentSupervisor
16
17
 
@@ -34,6 +35,9 @@ Secret.get=classmethod(lambda cls, name=None, **kwargs: SimpleNamespace(uid=os.e
34
35
  value=SecretStr(os.environ['FIXTURE_RUNTIME_DATABASE_URI'])))
35
36
  from metatables.api.app import runtime_database
36
37
  runtime_database.DEPLOYMENT_CONFIGURATION=Path(os.environ['FIXTURE_DEPLOYMENT_CONFIGURATION'])
38
+ # The disposable server's login stands in for the shared runtime login.
39
+ from sqlalchemy.engine import make_url
40
+ runtime_database.RUNTIME_LOGIN=make_url(os.environ['FIXTURE_RUNTIME_DATABASE_URI']).username
37
41
  User.get_authenticated_user_details=classmethod(lambda cls: SimpleNamespace(
38
42
  uid=os.environ['FIXTURE_USER_UID'], is_active=True, is_organization_admin=True, active_team_uids=[]))
39
43
  runpy.run_module('metatables.api.app.development', run_name='__main__')
@@ -79,6 +83,7 @@ def test_switch_local_hosted_and_back_restarts_worker_and_preserves_stores(tmp_p
79
83
  # The deployment gate below runs in this process against the same declaration.
80
84
  monkeypatch.setattr("metatables.api.app.configuration.DEPLOYMENT_CONFIGURATION", deployed)
81
85
  monkeypatch.setattr("metatables.api.app.runtime_database.read_secret", lambda name: (secret_uid, catalog))
86
+ monkeypatch.setattr("metatables.api.app.runtime_database.RUNTIME_LOGIN", make_url(catalog).username)
82
87
  real_popen = subprocess.Popen
83
88
  workers = []
84
89
  log = (tmp_path / "workers.log").open("wb")
@@ -1,4 +1,4 @@
1
- """One local runtime survives branch changes without falling back to platform sources."""
1
+ """One local runtime per laptop survives checkout and branch changes without platform sources."""
2
2
  from dataclasses import replace
3
3
  from uuid import uuid4
4
4
 
@@ -35,12 +35,14 @@ def test_workspace_survives_branch_and_commit_changes(scope):
35
35
  assert other.data_source.display_name == 'Local MetaTables'
36
36
 
37
37
 
38
- def test_separate_checkouts_have_independent_defaults(scope):
38
+ def test_checkouts_share_the_laptop_runtime(scope, tmp_path):
39
39
  source, values = scope
40
40
  first = select_local_workspace(source=source, values=values)
41
- other = select_local_workspace(source=replace(source, repository_root=source.repository_root / 'another'), values=values)
42
- assert other.uid != first.uid
43
- assert other.catalog_path != first.catalog_path
41
+ other = select_local_workspace(source=replace(source, repository_root=tmp_path / 'another',
42
+ canonical_repository_identity='https://example.test/org/other'), values=values)
43
+ assert other.uid == first.uid
44
+ assert other.data_source.uid == first.data_source.uid
45
+ assert other.catalog_path == first.catalog_path == tmp_path / 'stores' / 'metatables.sqlite'
44
46
 
45
47
 
46
48
  @pytest.mark.parametrize('setting,value', [
@@ -632,7 +632,7 @@ server = [
632
632
 
633
633
  [[package]]
634
634
  name = "mainsequence-metatable"
635
- version = "0.1.9"
635
+ version = "0.1.10"
636
636
  source = { editable = "." }
637
637
  dependencies = [
638
638
  { name = "alembic" },