mainsequence-metatable 0.1.0__py3-none-any.whl

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 (433) hide show
  1. api/__init__.py +3 -0
  2. api/app/__init__.py +0 -0
  3. api/app/auth/__init__.py +1 -0
  4. api/app/auth/boundary.py +104 -0
  5. api/app/auth/caller_assertions.py +39 -0
  6. api/app/auth/local_actor.py +55 -0
  7. api/app/bootstrap.py +607 -0
  8. api/app/configuration.py +37 -0
  9. api/app/credential_admin.py +107 -0
  10. api/app/development.py +175 -0
  11. api/app/development_client.py +59 -0
  12. api/app/main.py +201 -0
  13. api/app/platform_cache.py +61 -0
  14. api/app/routes/__init__.py +0 -0
  15. api/app/routes/application_migrations.py +170 -0
  16. api/app/routes/column_search.py +64 -0
  17. api/app/routes/contract_validation.py +84 -0
  18. api/app/routes/data_sources.py +428 -0
  19. api/app/routes/managed_finalize.py +244 -0
  20. api/app/routes/migration_connection.py +41 -0
  21. api/app/routes/namespaces.py +119 -0
  22. api/app/routes/run_logs.py +78 -0
  23. api/app/routes/runtime_context.py +122 -0
  24. api/app/routes/schema_graph.py +37 -0
  25. api/app/routes/security.py +267 -0
  26. api/app/routes/table_cascade.py +155 -0
  27. api/app/routes/table_crud.py +45 -0
  28. api/app/routes/table_delete.py +161 -0
  29. api/app/routes/table_filter.py +38 -0
  30. api/app/routes/table_import.py +66 -0
  31. api/app/routes/table_introspection.py +85 -0
  32. api/app/routes/table_patch.py +155 -0
  33. api/app/routes/table_registration.py +216 -0
  34. api/app/routes/table_response.py +29 -0
  35. api/app/routes/table_search_document.py +54 -0
  36. api/app/routes/table_sql.py +167 -0
  37. api/app/routes/table_update_pipeline.py +31 -0
  38. api/app/routes/time_index_delete.py +136 -0
  39. api/app/routes/time_index_reads.py +183 -0
  40. api/app/routes/time_index_stats.py +51 -0
  41. api/app/routes/update_batch.py +173 -0
  42. api/app/routes/update_chunk_insert.py +147 -0
  43. api/app/routes/update_constants.py +19 -0
  44. api/app/routes/update_crud.py +280 -0
  45. api/app/routes/update_details.py +141 -0
  46. api/app/routes/update_graph.py +120 -0
  47. api/app/routes/update_index_statistics.py +107 -0
  48. api/app/routes/update_registration.py +92 -0
  49. api/app/routes/update_runs.py +303 -0
  50. api/app/routes/update_statistics.py +77 -0
  51. api/app/runtime.py +317 -0
  52. api/app/runtime_control.py +154 -0
  53. api/app/source_passwords.py +43 -0
  54. api/app/source_registrations.py +216 -0
  55. api/backend/__init__.py +1 -0
  56. api/backend/backends/__init__.py +1 -0
  57. api/backend/backends/access.py +363 -0
  58. api/backend/backends/adapters/__init__.py +1 -0
  59. api/backend/backends/adapters/maintenance/__init__.py +6 -0
  60. api/backend/backends/adapters/maintenance/postgresql.py +2788 -0
  61. api/backend/backends/adapters/maintenance/runtime.py +256 -0
  62. api/backend/backends/adapters/maintenance/temporal.py +333 -0
  63. api/backend/backends/adapters/maintenance/timescaledb.py +657 -0
  64. api/backend/backends/adapters/maintenance/validation.py +10 -0
  65. api/backend/backends/adapters/postgresql_cascade_delete.py +39 -0
  66. api/backend/backends/adapters/postgresql_connection.py +103 -0
  67. api/backend/backends/adapters/postgresql_introspection.py +128 -0
  68. api/backend/backends/adapters/postgresql_table_delete.py +42 -0
  69. api/backend/backends/adapters/postgresql_tables.py +245 -0
  70. api/backend/backends/adapters/postgresql_time_index.py +141 -0
  71. api/backend/backends/adapters/postgresql_time_index_delete.py +140 -0
  72. api/backend/backends/adapters/postgresql_time_index_queries.py +281 -0
  73. api/backend/backends/adapters/postgresql_time_index_stats.py +89 -0
  74. api/backend/backends/adapters/postgresql_time_index_write.py +185 -0
  75. api/backend/backends/adapters/source_validation.py +80 -0
  76. api/backend/backends/adapters/sqlite_connection.py +324 -0
  77. api/backend/backends/adapters/sqlite_introspection.py +135 -0
  78. api/backend/backends/adapters/table_cursor.py +14 -0
  79. api/backend/backends/catalog.py +288 -0
  80. api/backend/backends/catalog_ddl.py +126 -0
  81. api/backend/backends/catalog_types.py +32 -0
  82. api/backend/backends/contracts.py +322 -0
  83. api/backend/backends/hosted.py +495 -0
  84. api/backend/backends/hosted_access.py +378 -0
  85. api/backend/backends/native.py +105 -0
  86. api/backend/backends/operations.py +247 -0
  87. api/backend/backends/postgresql_access.py +302 -0
  88. api/backend/backends/registry.py +114 -0
  89. api/backend/backends/relation_tables.py +676 -0
  90. api/backend/backends/relational.py +804 -0
  91. api/backend/backends/restricted_sql.py +181 -0
  92. api/backend/backends/sqlite_access.py +129 -0
  93. api/backend/contracts/__init__.py +1 -0
  94. api/backend/contracts/relation_import.py +82 -0
  95. api/backend/contracts/storage_layouts.py +287 -0
  96. api/backend/contracts/table_contracts.py +361 -0
  97. api/backend/contracts/values.py +77 -0
  98. api/backend/domain/__init__.py +1 -0
  99. api/backend/domain/catalog_rules.py +161 -0
  100. api/backend/domain/data_source_rules.py +32 -0
  101. api/backend/domain/index_statistics.py +121 -0
  102. api/backend/domain/label_rules.py +32 -0
  103. api/backend/domain/permission_rules.py +18 -0
  104. api/backend/domain/update_constants.py +32 -0
  105. api/backend/integrations/__init__.py +1 -0
  106. api/backend/integrations/catalog_data_sources.py +166 -0
  107. api/backend/integrations/credential_keys.py +172 -0
  108. api/backend/integrations/credential_store.py +115 -0
  109. api/backend/integrations/data_source_provider.py +46 -0
  110. api/backend/integrations/local_credentials.py +192 -0
  111. api/backend/integrations/local_workspace.py +178 -0
  112. api/backend/integrations/platform_principals.py +32 -0
  113. api/backend/integrations/run_logs.py +271 -0
  114. api/backend/integrations/runtime_binding.py +65 -0
  115. api/backend/integrations/runtime_data_sources.py +81 -0
  116. api/backend/integrations/source_validation.py +6 -0
  117. api/backend/migrations/__init__.py +1 -0
  118. api/backend/migrations/env.py +55 -0
  119. api/backend/migrations/script.py.mako +25 -0
  120. api/backend/migrations/versions/0001_initial.py +522 -0
  121. api/backend/migrations/versions/0002_security_model.py +73 -0
  122. api/backend/migrations/versions/0003_run_log_capture.py +17 -0
  123. api/backend/migrations/versions/0004_historical_run_graphs.py +33 -0
  124. api/backend/migrations/versions/0005_database_access.py +40 -0
  125. api/backend/migrations/versions/0006_local_credentials.py +36 -0
  126. api/backend/migrations/versions/0007_external_relation_names.py +34 -0
  127. api/backend/migrations/versions/__init__.py +1 -0
  128. api/backend/operations/__init__.py +0 -0
  129. api/backend/operations/bootstrap_migrations.py +275 -0
  130. api/backend/operations/catalog_schema.py +56 -0
  131. api/backend/operations/create_table.py +170 -0
  132. api/backend/operations/finalize_managed.py +108 -0
  133. api/backend/operations/import_relations.py +407 -0
  134. api/backend/operations/introspect_table.py +88 -0
  135. api/backend/operations/read_time_index.py +75 -0
  136. api/backend/operations/register_catalog.py +211 -0
  137. api/backend/operations/search_documents.py +65 -0
  138. api/backend/persistence/__init__.py +1 -0
  139. api/backend/persistence/cascade.py +40 -0
  140. api/backend/persistence/catalog.py +176 -0
  141. api/backend/persistence/database.py +59 -0
  142. api/backend/persistence/grants.py +146 -0
  143. api/backend/persistence/labels.py +171 -0
  144. api/backend/persistence/locking.py +8 -0
  145. api/backend/persistence/models.py +593 -0
  146. api/backend/persistence/physical_operations.py +150 -0
  147. api/backend/persistence/projections.py +146 -0
  148. api/backend/persistence/run_graphs.py +287 -0
  149. api/backend/persistence/schema_graph.py +136 -0
  150. api/backend/persistence/sqlite_types.py +25 -0
  151. api/backend/persistence/table_body_filter.py +297 -0
  152. api/backend/persistence/table_queries.py +92 -0
  153. api/backend/persistence/table_response.py +209 -0
  154. api/backend/persistence/update_graph.py +106 -0
  155. api/backend/persistence/update_pipeline.py +139 -0
  156. api/backend/persistence/updates.py +314 -0
  157. api/backend/presentation/data_source_summary.py +99 -0
  158. api/metatables/__init__.py +1 -0
  159. api/metatables/configuration.yaml +3 -0
  160. api/metatables/main.py +8 -0
  161. examples/README.md +26 -0
  162. examples/__init__.py +1 -0
  163. examples/data_sources/README.md +25 -0
  164. examples/data_sources/mssql.json +16 -0
  165. examples/data_sources/mysql.json +16 -0
  166. examples/data_sources/postgresql.json +15 -0
  167. examples/data_sources/register.py +23 -0
  168. examples/external_table.py +20 -0
  169. examples/query.py +19 -0
  170. examples/quickstart.py +17 -0
  171. examples/reader.py +12 -0
  172. examples/scripts/__init__.py +1 -0
  173. examples/scripts/setup_metatables.py +42 -0
  174. examples/tables.py +49 -0
  175. examples/tutorial/README.md +80 -0
  176. examples/tutorial/__init__.py +1 -0
  177. examples/tutorial/__main__.py +76 -0
  178. examples/tutorial/data/README.md +11 -0
  179. examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +70 -0
  180. examples/tutorial/frames.py +48 -0
  181. examples/tutorial/migrations/__init__.py +29 -0
  182. examples/tutorial/migrations/env.py +6 -0
  183. examples/tutorial/migrations/registry.py +9 -0
  184. examples/tutorial/migrations/script.py.mako +28 -0
  185. examples/tutorial/migrations/versions/__init__.py +0 -0
  186. examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +81 -0
  187. examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  188. examples/tutorial/operations.py +67 -0
  189. examples/tutorial/tables.py +114 -0
  190. examples/tutorial/updaters.py +95 -0
  191. examples/updater.py +42 -0
  192. mainsequence_metatable-0.1.0.dist-info/METADATA +137 -0
  193. mainsequence_metatable-0.1.0.dist-info/RECORD +433 -0
  194. mainsequence_metatable-0.1.0.dist-info/WHEEL +5 -0
  195. mainsequence_metatable-0.1.0.dist-info/entry_points.txt +2 -0
  196. mainsequence_metatable-0.1.0.dist-info/licenses/LICENSE +21 -0
  197. mainsequence_metatable-0.1.0.dist-info/top_level.txt +3 -0
  198. metatables/__init__.py +202 -0
  199. metatables/_api_workflow.yaml +10 -0
  200. metatables/_client_skills/metatables-meta-tables/SKILL.md +106 -0
  201. metatables/_client_skills/metatables-meta-tables/references/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md +634 -0
  202. metatables/_client_skills/metatables-meta-tables/references/docs/adr/api/0002-application-administration-and-table-ownership.md +366 -0
  203. metatables/_client_skills/metatables-meta-tables/references/docs/adr/api/0004-approved-application-migrations.md +57 -0
  204. metatables/_client_skills/metatables-meta-tables/references/docs/adr/api/0005-run-logs-and-local-file-capture.md +237 -0
  205. metatables/_client_skills/metatables-meta-tables/references/docs/adr/api/0006-historical-run-graphs.md +288 -0
  206. metatables/_client_skills/metatables-meta-tables/references/docs/adr/api/0007-database-enforced-table-access.md +275 -0
  207. metatables/_client_skills/metatables-meta-tables/references/docs/adr/api/0007-database-roles-and-privileges.svg +120 -0
  208. metatables/_client_skills/metatables-meta-tables/references/docs/adr/api/0007-query-enforcement-path.svg +76 -0
  209. metatables/_client_skills/metatables-meta-tables/references/docs/adr/api/0008-mysql-mssql-table-workflows.md +418 -0
  210. metatables/_client_skills/metatables-meta-tables/references/docs/adr/api/0009-shared-credential-store.md +189 -0
  211. metatables/_client_skills/metatables-meta-tables/references/docs/adr/api/0010-import-external-tables-and-views.md +567 -0
  212. metatables/_client_skills/metatables-meta-tables/references/docs/adr/client/0003-api-endpoint-resolution.md +236 -0
  213. metatables/_client_skills/metatables-meta-tables/references/docs/adr/index.md +33 -0
  214. metatables/_client_skills/metatables-meta-tables/references/docs/api/data-sources.md +197 -0
  215. metatables/_client_skills/metatables-meta-tables/references/docs/client/build-an-updater.md +54 -0
  216. metatables/_client_skills/metatables-meta-tables/references/docs/client/define-and-migrate-tables.md +80 -0
  217. metatables/_client_skills/metatables-meta-tables/references/docs/client/installation-and-connection.md +127 -0
  218. metatables/_client_skills/metatables-meta-tables/references/docs/client/query-and-mutate.md +78 -0
  219. metatables/_client_skills/metatables-meta-tables/references/docs/client/register-existing-tables.md +93 -0
  220. metatables/_client_skills/metatables-meta-tables/references/docs/client/tutorial.md +185 -0
  221. metatables/_client_skills/metatables-meta-tables/references/docs/concepts/architecture.md +90 -0
  222. metatables/_client_skills/metatables-meta-tables/references/docs/concepts/data-sources.md +162 -0
  223. metatables/_client_skills/metatables-meta-tables/references/docs/concepts/identity-and-scope.md +53 -0
  224. metatables/_client_skills/metatables-meta-tables/references/docs/concepts/permissions-namespaces-labels.md +37 -0
  225. metatables/_client_skills/metatables-meta-tables/references/docs/concepts/runs-and-execution-graphs.md +115 -0
  226. metatables/_client_skills/metatables-meta-tables/references/docs/concepts/table-contracts-and-lifecycle.md +58 -0
  227. metatables/_client_skills/metatables-meta-tables/references/docs/concepts/time-index-tables-and-updates.md +60 -0
  228. metatables/_client_skills/metatables-meta-tables/references/docs/contributing/database-backends.md +77 -0
  229. metatables/_client_skills/metatables-meta-tables/references/docs/contributing/releasing.md +148 -0
  230. metatables/_client_skills/metatables-meta-tables/references/docs/contributing/testing.md +115 -0
  231. metatables/_client_skills/metatables-meta-tables/references/docs/examples/data_sources/README.md +27 -0
  232. metatables/_client_skills/metatables-meta-tables/references/docs/examples/data_sources/mssql.json +16 -0
  233. metatables/_client_skills/metatables-meta-tables/references/docs/examples/data_sources/mysql.json +16 -0
  234. metatables/_client_skills/metatables-meta-tables/references/docs/examples/data_sources/postgresql.json +15 -0
  235. metatables/_client_skills/metatables-meta-tables/references/docs/examples/external_table.py +20 -0
  236. metatables/_client_skills/metatables-meta-tables/references/docs/examples/query.py +19 -0
  237. metatables/_client_skills/metatables-meta-tables/references/docs/examples/tables.py +49 -0
  238. metatables/_client_skills/metatables-meta-tables/references/docs/examples/tutorial/README.md +82 -0
  239. metatables/_client_skills/metatables-meta-tables/references/docs/examples/tutorial/data/README.md +13 -0
  240. metatables/_client_skills/metatables-meta-tables/references/docs/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +70 -0
  241. metatables/_client_skills/metatables-meta-tables/references/docs/examples/tutorial/frames.py +48 -0
  242. metatables/_client_skills/metatables-meta-tables/references/docs/examples/tutorial/migrations/__init__.py +29 -0
  243. metatables/_client_skills/metatables-meta-tables/references/docs/examples/tutorial/migrations/registry.py +9 -0
  244. metatables/_client_skills/metatables-meta-tables/references/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +81 -0
  245. metatables/_client_skills/metatables-meta-tables/references/docs/examples/tutorial/operations.py +67 -0
  246. metatables/_client_skills/metatables-meta-tables/references/docs/examples/tutorial/tables.py +114 -0
  247. metatables/_client_skills/metatables-meta-tables/references/docs/examples/tutorial/updaters.py +95 -0
  248. metatables/_client_skills/metatables-meta-tables/references/docs/examples/updater.py +42 -0
  249. metatables/_client_skills/metatables-meta-tables/references/docs/operations/catalog-migrations.md +146 -0
  250. metatables/_client_skills/metatables-meta-tables/references/docs/operations/configuration.md +58 -0
  251. metatables/_client_skills/metatables-meta-tables/references/docs/operations/local-runtime.md +152 -0
  252. metatables/_client_skills/metatables-meta-tables/references/docs/operations/recovery-and-observability.md +60 -0
  253. metatables/_client_skills/metatables-meta-tables/references/docs/operations/run-history.md +128 -0
  254. metatables/_client_skills/metatables-meta-tables/references/docs/operations/run-logs.md +128 -0
  255. metatables/_client_skills/metatables-meta-tables/references/docs/reference/capabilities.md +298 -0
  256. metatables/_client_skills/metatables-meta-tables/references/docs/security/index.md +172 -0
  257. metatables/_client_skills/metatables-meta-tables/references/docs/security/ownership-and-sharing.md +145 -0
  258. metatables/_client_skills/metatables-meta-tables/references/docs/security/permissions.md +105 -0
  259. metatables/_client_skills/metatables-meta-tables/references/examples/external_table.py +20 -0
  260. metatables/_client_skills/metatables-meta-tables/references/examples/query.py +19 -0
  261. metatables/_client_skills/metatables-meta-tables/references/examples/tables.py +49 -0
  262. metatables/_client_skills/metatables-migrations/SKILL.md +132 -0
  263. metatables/_client_skills/metatables-migrations/references/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md +634 -0
  264. metatables/_client_skills/metatables-migrations/references/docs/adr/api/0002-application-administration-and-table-ownership.md +366 -0
  265. metatables/_client_skills/metatables-migrations/references/docs/adr/api/0004-approved-application-migrations.md +57 -0
  266. metatables/_client_skills/metatables-migrations/references/docs/adr/api/0005-run-logs-and-local-file-capture.md +237 -0
  267. metatables/_client_skills/metatables-migrations/references/docs/adr/api/0006-historical-run-graphs.md +288 -0
  268. metatables/_client_skills/metatables-migrations/references/docs/adr/api/0007-database-enforced-table-access.md +275 -0
  269. metatables/_client_skills/metatables-migrations/references/docs/adr/api/0007-database-roles-and-privileges.svg +120 -0
  270. metatables/_client_skills/metatables-migrations/references/docs/adr/api/0007-query-enforcement-path.svg +76 -0
  271. metatables/_client_skills/metatables-migrations/references/docs/adr/api/0008-mysql-mssql-table-workflows.md +418 -0
  272. metatables/_client_skills/metatables-migrations/references/docs/adr/api/0009-shared-credential-store.md +189 -0
  273. metatables/_client_skills/metatables-migrations/references/docs/adr/api/0010-import-external-tables-and-views.md +567 -0
  274. metatables/_client_skills/metatables-migrations/references/docs/adr/client/0003-api-endpoint-resolution.md +236 -0
  275. metatables/_client_skills/metatables-migrations/references/docs/adr/index.md +33 -0
  276. metatables/_client_skills/metatables-migrations/references/docs/api/data-sources.md +197 -0
  277. metatables/_client_skills/metatables-migrations/references/docs/api/tables-and-migrations.md +142 -0
  278. metatables/_client_skills/metatables-migrations/references/docs/client/build-an-updater.md +54 -0
  279. metatables/_client_skills/metatables-migrations/references/docs/client/define-and-migrate-tables.md +80 -0
  280. metatables/_client_skills/metatables-migrations/references/docs/client/installation-and-connection.md +127 -0
  281. metatables/_client_skills/metatables-migrations/references/docs/client/query-and-mutate.md +78 -0
  282. metatables/_client_skills/metatables-migrations/references/docs/client/register-existing-tables.md +93 -0
  283. metatables/_client_skills/metatables-migrations/references/docs/client/tutorial.md +185 -0
  284. metatables/_client_skills/metatables-migrations/references/docs/concepts/architecture.md +90 -0
  285. metatables/_client_skills/metatables-migrations/references/docs/concepts/data-sources.md +162 -0
  286. metatables/_client_skills/metatables-migrations/references/docs/concepts/identity-and-scope.md +53 -0
  287. metatables/_client_skills/metatables-migrations/references/docs/concepts/permissions-namespaces-labels.md +37 -0
  288. metatables/_client_skills/metatables-migrations/references/docs/concepts/runs-and-execution-graphs.md +115 -0
  289. metatables/_client_skills/metatables-migrations/references/docs/concepts/table-contracts-and-lifecycle.md +58 -0
  290. metatables/_client_skills/metatables-migrations/references/docs/concepts/time-index-tables-and-updates.md +60 -0
  291. metatables/_client_skills/metatables-migrations/references/docs/contributing/database-backends.md +77 -0
  292. metatables/_client_skills/metatables-migrations/references/docs/contributing/releasing.md +148 -0
  293. metatables/_client_skills/metatables-migrations/references/docs/contributing/testing.md +115 -0
  294. metatables/_client_skills/metatables-migrations/references/docs/examples/data_sources/README.md +27 -0
  295. metatables/_client_skills/metatables-migrations/references/docs/examples/data_sources/mssql.json +16 -0
  296. metatables/_client_skills/metatables-migrations/references/docs/examples/data_sources/mysql.json +16 -0
  297. metatables/_client_skills/metatables-migrations/references/docs/examples/data_sources/postgresql.json +15 -0
  298. metatables/_client_skills/metatables-migrations/references/docs/examples/external_table.py +20 -0
  299. metatables/_client_skills/metatables-migrations/references/docs/examples/query.py +19 -0
  300. metatables/_client_skills/metatables-migrations/references/docs/examples/tables.py +49 -0
  301. metatables/_client_skills/metatables-migrations/references/docs/examples/tutorial/README.md +82 -0
  302. metatables/_client_skills/metatables-migrations/references/docs/examples/tutorial/data/README.md +13 -0
  303. metatables/_client_skills/metatables-migrations/references/docs/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +70 -0
  304. metatables/_client_skills/metatables-migrations/references/docs/examples/tutorial/frames.py +48 -0
  305. metatables/_client_skills/metatables-migrations/references/docs/examples/tutorial/migrations/__init__.py +29 -0
  306. metatables/_client_skills/metatables-migrations/references/docs/examples/tutorial/migrations/registry.py +9 -0
  307. metatables/_client_skills/metatables-migrations/references/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +81 -0
  308. metatables/_client_skills/metatables-migrations/references/docs/examples/tutorial/operations.py +67 -0
  309. metatables/_client_skills/metatables-migrations/references/docs/examples/tutorial/tables.py +114 -0
  310. metatables/_client_skills/metatables-migrations/references/docs/examples/tutorial/updaters.py +95 -0
  311. metatables/_client_skills/metatables-migrations/references/docs/examples/updater.py +42 -0
  312. metatables/_client_skills/metatables-migrations/references/docs/operations/catalog-migrations.md +146 -0
  313. metatables/_client_skills/metatables-migrations/references/docs/operations/configuration.md +58 -0
  314. metatables/_client_skills/metatables-migrations/references/docs/operations/local-runtime.md +152 -0
  315. metatables/_client_skills/metatables-migrations/references/docs/operations/recovery-and-observability.md +60 -0
  316. metatables/_client_skills/metatables-migrations/references/docs/operations/run-history.md +128 -0
  317. metatables/_client_skills/metatables-migrations/references/docs/operations/run-logs.md +128 -0
  318. metatables/_client_skills/metatables-migrations/references/docs/reference/capabilities.md +298 -0
  319. metatables/_client_skills/metatables-migrations/references/docs/security/index.md +172 -0
  320. metatables/_client_skills/metatables-migrations/references/docs/security/ownership-and-sharing.md +145 -0
  321. metatables/_client_skills/metatables-migrations/references/docs/security/permissions.md +105 -0
  322. metatables/_client_skills/metatables-migrations/references/examples/scripts/setup_metatables.py +42 -0
  323. metatables/_client_skills/metatables-migrations/references/examples/tables.py +49 -0
  324. metatables/_client_skills/metatables-time-index-table-updates/SKILL.md +103 -0
  325. metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md +634 -0
  326. metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/api/0002-application-administration-and-table-ownership.md +366 -0
  327. metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/api/0004-approved-application-migrations.md +57 -0
  328. metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/api/0005-run-logs-and-local-file-capture.md +237 -0
  329. metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/api/0006-historical-run-graphs.md +288 -0
  330. metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/api/0007-database-enforced-table-access.md +275 -0
  331. metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/api/0007-database-roles-and-privileges.svg +120 -0
  332. metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/api/0007-query-enforcement-path.svg +76 -0
  333. metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/api/0008-mysql-mssql-table-workflows.md +418 -0
  334. metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/api/0009-shared-credential-store.md +189 -0
  335. metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/api/0010-import-external-tables-and-views.md +567 -0
  336. metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/client/0003-api-endpoint-resolution.md +236 -0
  337. metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/index.md +33 -0
  338. metatables/_client_skills/metatables-time-index-table-updates/references/docs/api/authentication-and-errors.md +71 -0
  339. metatables/_client_skills/metatables-time-index-table-updates/references/docs/api/data-sources.md +197 -0
  340. metatables/_client_skills/metatables-time-index-table-updates/references/docs/api/openapi.json +9302 -0
  341. metatables/_client_skills/metatables-time-index-table-updates/references/docs/api/reference.md +115 -0
  342. metatables/_client_skills/metatables-time-index-table-updates/references/docs/api/time-index-and-updates.md +98 -0
  343. metatables/_client_skills/metatables-time-index-table-updates/references/docs/client/build-an-updater.md +54 -0
  344. metatables/_client_skills/metatables-time-index-table-updates/references/docs/client/define-and-migrate-tables.md +80 -0
  345. metatables/_client_skills/metatables-time-index-table-updates/references/docs/client/installation-and-connection.md +127 -0
  346. metatables/_client_skills/metatables-time-index-table-updates/references/docs/client/query-and-mutate.md +78 -0
  347. metatables/_client_skills/metatables-time-index-table-updates/references/docs/client/read-existing-time-index-tables.md +32 -0
  348. metatables/_client_skills/metatables-time-index-table-updates/references/docs/client/tutorial.md +185 -0
  349. metatables/_client_skills/metatables-time-index-table-updates/references/docs/concepts/architecture.md +90 -0
  350. metatables/_client_skills/metatables-time-index-table-updates/references/docs/concepts/data-sources.md +162 -0
  351. metatables/_client_skills/metatables-time-index-table-updates/references/docs/concepts/permissions-namespaces-labels.md +37 -0
  352. metatables/_client_skills/metatables-time-index-table-updates/references/docs/concepts/runs-and-execution-graphs.md +115 -0
  353. metatables/_client_skills/metatables-time-index-table-updates/references/docs/concepts/table-contracts-and-lifecycle.md +58 -0
  354. metatables/_client_skills/metatables-time-index-table-updates/references/docs/concepts/time-index-tables-and-updates.md +60 -0
  355. metatables/_client_skills/metatables-time-index-table-updates/references/docs/contributing/database-backends.md +77 -0
  356. metatables/_client_skills/metatables-time-index-table-updates/references/docs/contributing/releasing.md +148 -0
  357. metatables/_client_skills/metatables-time-index-table-updates/references/docs/contributing/testing.md +115 -0
  358. metatables/_client_skills/metatables-time-index-table-updates/references/docs/examples/data_sources/README.md +27 -0
  359. metatables/_client_skills/metatables-time-index-table-updates/references/docs/examples/data_sources/mssql.json +16 -0
  360. metatables/_client_skills/metatables-time-index-table-updates/references/docs/examples/data_sources/mysql.json +16 -0
  361. metatables/_client_skills/metatables-time-index-table-updates/references/docs/examples/data_sources/postgresql.json +15 -0
  362. metatables/_client_skills/metatables-time-index-table-updates/references/docs/examples/query.py +19 -0
  363. metatables/_client_skills/metatables-time-index-table-updates/references/docs/examples/reader.py +12 -0
  364. metatables/_client_skills/metatables-time-index-table-updates/references/docs/examples/tables.py +49 -0
  365. metatables/_client_skills/metatables-time-index-table-updates/references/docs/examples/tutorial/README.md +82 -0
  366. metatables/_client_skills/metatables-time-index-table-updates/references/docs/examples/tutorial/data/README.md +13 -0
  367. metatables/_client_skills/metatables-time-index-table-updates/references/docs/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +70 -0
  368. metatables/_client_skills/metatables-time-index-table-updates/references/docs/examples/tutorial/frames.py +48 -0
  369. metatables/_client_skills/metatables-time-index-table-updates/references/docs/examples/tutorial/migrations/__init__.py +29 -0
  370. metatables/_client_skills/metatables-time-index-table-updates/references/docs/examples/tutorial/migrations/registry.py +9 -0
  371. metatables/_client_skills/metatables-time-index-table-updates/references/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +81 -0
  372. metatables/_client_skills/metatables-time-index-table-updates/references/docs/examples/tutorial/operations.py +67 -0
  373. metatables/_client_skills/metatables-time-index-table-updates/references/docs/examples/tutorial/tables.py +114 -0
  374. metatables/_client_skills/metatables-time-index-table-updates/references/docs/examples/tutorial/updaters.py +95 -0
  375. metatables/_client_skills/metatables-time-index-table-updates/references/docs/examples/updater.py +42 -0
  376. metatables/_client_skills/metatables-time-index-table-updates/references/docs/operations/catalog-migrations.md +146 -0
  377. metatables/_client_skills/metatables-time-index-table-updates/references/docs/operations/configuration.md +58 -0
  378. metatables/_client_skills/metatables-time-index-table-updates/references/docs/operations/local-runtime.md +152 -0
  379. metatables/_client_skills/metatables-time-index-table-updates/references/docs/operations/recovery-and-observability.md +60 -0
  380. metatables/_client_skills/metatables-time-index-table-updates/references/docs/operations/run-history.md +128 -0
  381. metatables/_client_skills/metatables-time-index-table-updates/references/docs/operations/run-logs.md +128 -0
  382. metatables/_client_skills/metatables-time-index-table-updates/references/docs/reference/capabilities.md +298 -0
  383. metatables/_client_skills/metatables-time-index-table-updates/references/docs/security/index.md +172 -0
  384. metatables/_client_skills/metatables-time-index-table-updates/references/docs/security/ownership-and-sharing.md +145 -0
  385. metatables/_client_skills/metatables-time-index-table-updates/references/docs/security/permissions.md +105 -0
  386. metatables/_client_skills/metatables-time-index-table-updates/references/examples/reader.py +12 -0
  387. metatables/_client_skills/metatables-time-index-table-updates/references/examples/tables.py +49 -0
  388. metatables/_client_skills/metatables-time-index-table-updates/references/examples/updater.py +42 -0
  389. metatables/_skill_bundle.py +49 -0
  390. metatables/cli/__init__.py +1 -0
  391. metatables/cli/app.py +444 -0
  392. metatables/cli/filters.py +144 -0
  393. metatables/cli/migrations.py +906 -0
  394. metatables/cli/skills.py +90 -0
  395. metatables/compiled_sql/__init__.py +5 -0
  396. metatables/compiled_sql/mssql.py +35 -0
  397. metatables/compiled_sql/v1.py +219 -0
  398. metatables/dtype_codec.py +460 -0
  399. metatables/endpoint.py +243 -0
  400. metatables/future_registry.py +28 -0
  401. metatables/hashing.py +173 -0
  402. metatables/instrumentation.py +5 -0
  403. metatables/local_run_logs.py +280 -0
  404. metatables/log_contract.py +112 -0
  405. metatables/migrations/__init__.py +1670 -0
  406. metatables/migrations/alembic.py +167 -0
  407. metatables/migrations/env.py +141 -0
  408. metatables/migrations/provider.py +25 -0
  409. metatables/migrations/registry.py +75 -0
  410. metatables/migrations/scaffold.py +221 -0
  411. metatables/migrations/templates/__init__.py +1 -0
  412. metatables/migrations/templates/env.py.mako +8 -0
  413. metatables/migrations/templates/script.py.mako +28 -0
  414. metatables/migrations/tls.py +23 -0
  415. metatables/models.py +4804 -0
  416. metatables/pydantic_metadata.py +99 -0
  417. metatables/run_logging.py +172 -0
  418. metatables/runtime_context.py +65 -0
  419. metatables/runtime_contract.py +61 -0
  420. metatables/schema_names.py +304 -0
  421. metatables/sdk_compat.py +34 -0
  422. metatables/sqlalchemy_contracts.py +1771 -0
  423. metatables/time_index_table_refs.py +290 -0
  424. metatables/transport.py +73 -0
  425. metatables/update_configuration_contract.py +79 -0
  426. metatables/updaters/__init__.py +27 -0
  427. metatables/updaters/configuration.py +546 -0
  428. metatables/updaters/dependencies.py +9 -0
  429. metatables/updaters/managers.py +813 -0
  430. metatables/updaters/namespacing.py +52 -0
  431. metatables/updaters/runner.py +919 -0
  432. metatables/updaters/updaters.py +792 -0
  433. metatables/updaters/utils.py +23 -0
api/__init__.py ADDED
@@ -0,0 +1,3 @@
1
+ from metatables.sdk_compat import require_sdk_capabilities
2
+
3
+ require_sdk_capabilities(server=True)
api/app/__init__.py ADDED
File without changes
@@ -0,0 +1 @@
1
+ """Inbound FastAPI caller authentication."""
@@ -0,0 +1,104 @@
1
+ """Shared request admission for hosted assertions and local SDK identity."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from dataclasses import dataclass
6
+ from uuid import UUID
7
+
8
+ from fastapi import Depends, HTTPException, Request
9
+
10
+ from api.app.auth.caller_assertions import (
11
+ ASSERTION_HEADER,
12
+ CallerAssertionUnavailable,
13
+ InvalidCallerAssertion,
14
+ configured_verifier,
15
+ )
16
+ from api.app.runtime import RuntimeState
17
+ from api.backend.domain.permission_rules import TrustedActorFacts
18
+
19
+
20
+ @dataclass(frozen=True)
21
+ class AdmittedCaller:
22
+ user_uid: UUID
23
+ environment_uid: UUID | None = None
24
+ active_team_uids: frozenset[UUID] = frozenset()
25
+ is_admin: bool = False
26
+
27
+
28
+ def admit_request(request: Request) -> AdmittedCaller:
29
+ state: RuntimeState = request.app.state.runtime
30
+ if state.config.local_mode or state.config.developer_mode:
31
+ if state.identity is None:
32
+ raise HTTPException(status_code=503, detail="Local SDK identity is unavailable.")
33
+ environment_uid = None
34
+ if state.config.developer_mode and not state.config.local_mode:
35
+ from mainsequence.code_repository_context import get_code_repository_context
36
+ context = get_code_repository_context()
37
+ environment_uid = context.organization_environment_uid
38
+ teams, admin = state.actor_facts_cache.get(
39
+ (True, state.identity.user_uid),
40
+ lambda: sdk_actor_facts(state.identity.user_uid, local=True),
41
+ )
42
+ return AdmittedCaller(
43
+ user_uid=state.identity.user_uid, active_team_uids=teams, is_admin=admin,
44
+ environment_uid=UUID(environment_uid) if environment_uid else None,
45
+ )
46
+ assertion = request.headers.get(ASSERTION_HEADER)
47
+ if assertion is None:
48
+ raise HTTPException(status_code=401, detail="Caller assertion is required.")
49
+ try:
50
+ caller = configured_verifier().verify(assertion)
51
+ except InvalidCallerAssertion as exc:
52
+ raise HTTPException(status_code=401, detail="Invalid caller assertion.") from exc
53
+ except CallerAssertionUnavailable as exc:
54
+ raise HTTPException(status_code=503, detail="Caller authentication is unavailable.") from exc
55
+ user_uid = UUID(caller.user_uid)
56
+ teams, admin = state.actor_facts_cache.get(
57
+ (False, user_uid), lambda: sdk_actor_facts(user_uid, local=False),
58
+ )
59
+ return AdmittedCaller(
60
+ user_uid=UUID(caller.user_uid), active_team_uids=teams, is_admin=admin,
61
+ environment_uid=UUID(caller.environment_uid) if getattr(caller, "environment_uid", None) else None,
62
+ )
63
+
64
+
65
+
66
+ def platform_facts(identity):
67
+ """Consume facts supplied by SDK User responses for the already verified caller."""
68
+ admin = getattr(identity, "is_organization_admin", None)
69
+ teams = getattr(identity, "active_team_uids", None)
70
+ if type(admin) is not bool or teams is None:
71
+ raise HTTPException(503, "The platform must supply current admin and Team facts.")
72
+ try:
73
+ return frozenset(UUID(str(uid)) for uid in teams), admin
74
+ except (TypeError, ValueError) as exc:
75
+ raise HTTPException(503, "Invalid platform Team facts.") from exc
76
+
77
+
78
+ def trusted_actor_facts(caller: AdmittedCaller = Depends(admit_request)) -> TrustedActorFacts:
79
+ return TrustedActorFacts(user_uid=caller.user_uid, user_active=True,
80
+ active_team_uids=caller.active_team_uids, is_admin=caller.is_admin)
81
+
82
+
83
+ def require_admin(caller: AdmittedCaller = Depends(admit_request)) -> AdmittedCaller:
84
+ if not caller.is_admin:
85
+ raise HTTPException(403, "Application administration requires platform admin access.")
86
+ return caller
87
+
88
+
89
+ def require_admin_actor(actor: TrustedActorFacts = Depends(trusted_actor_facts)) -> TrustedActorFacts:
90
+ if not actor.user_active or not actor.is_admin:
91
+ raise HTTPException(403, "Application administration requires platform admin access.")
92
+ return actor
93
+
94
+
95
+ def sdk_actor_facts(user_uid: UUID, *, local: bool):
96
+ """Fetch current facts when the runtime cache is missing or expired."""
97
+ from mainsequence.client.models_user import User
98
+ try:
99
+ identity = User.get_authenticated_user_details() if local else User.get_by_uid(str(user_uid))
100
+ if identity.is_active is not True or UUID(identity.uid) != user_uid:
101
+ raise ValueError("Caller identity is inactive or changed.")
102
+ return platform_facts(identity)
103
+ except Exception as exc:
104
+ raise HTTPException(503, "Current platform identity facts are unavailable.") from exc
@@ -0,0 +1,39 @@
1
+ """Adapt SDK caller verification to FastAPI dependencies and HTTP errors."""
2
+
3
+ from functools import lru_cache
4
+
5
+ from fastapi import Depends, Header, HTTPException
6
+ from mainsequence.server.caller_assertions import (
7
+ ASSERTION_HEADER,
8
+ AuthenticatedCaller,
9
+ CallerAssertionUnavailable,
10
+ CallerAssertionVerifier,
11
+ InvalidCallerAssertion,
12
+ )
13
+
14
+
15
+ @lru_cache(maxsize=1)
16
+ def configured_verifier() -> CallerAssertionVerifier:
17
+ try:
18
+ return CallerAssertionVerifier.from_environment()
19
+ except CallerAssertionUnavailable as exc:
20
+ raise HTTPException(
21
+ status_code=503, detail="Caller authentication is unavailable."
22
+ ) from exc
23
+
24
+
25
+ def authenticated_caller(
26
+ assertion: str | None = Header(default=None, alias=ASSERTION_HEADER),
27
+ verifier: CallerAssertionVerifier = Depends(configured_verifier),
28
+ ) -> AuthenticatedCaller:
29
+ """FastAPI dependency for caller-aware operations; never trust UID headers."""
30
+ if assertion is None:
31
+ raise HTTPException(status_code=401, detail="Caller assertion is required.")
32
+ try:
33
+ return verifier.verify(assertion)
34
+ except InvalidCallerAssertion as exc:
35
+ raise HTTPException(status_code=401, detail="Invalid caller assertion.") from exc
36
+ except CallerAssertionUnavailable as exc:
37
+ raise HTTPException(
38
+ status_code=503, detail="Caller authentication is unavailable."
39
+ ) from exc
@@ -0,0 +1,55 @@
1
+ """Catalog session dependency shared by protected routes."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from functools import lru_cache
6
+ from typing import Iterator
7
+
8
+ from fastapi import HTTPException, Request
9
+ from sqlalchemy.exc import DisconnectionError, InterfaceError, OperationalError, TimeoutError
10
+ from sqlalchemy.orm import Session, sessionmaker
11
+
12
+ from api.backend.persistence.database import create_catalog_engine
13
+
14
+
15
+ @lru_cache(maxsize=1)
16
+ def _session_factory(url: str, local: bool = False) -> sessionmaker[Session]:
17
+ return sessionmaker(create_catalog_engine(url, allow_sqlite=local), expire_on_commit=False)
18
+
19
+
20
+ def catalog_session_factory(request: Request = None) -> sessionmaker[Session]:
21
+ try:
22
+ if request is not None:
23
+ state = request.app.state.runtime
24
+ if state.bootstrap is not None:
25
+ if not state.bootstrap.active:
26
+ raise HTTPException(503, "Initialize the runtime DataSource in Settings first.")
27
+ return state.bootstrap.factory
28
+ if state.binding.catalog_url:
29
+ return _session_factory(state.binding.catalog_url, bool(state.binding.workspace))
30
+ raise RuntimeError("No runtime DataSource is active.")
31
+ except (RuntimeError, ValueError) as exc:
32
+ raise HTTPException(status_code=503, detail="MetaTables catalog is unavailable.") from exc
33
+
34
+
35
+ def catalog_session(request: Request = None) -> Iterator[Session]:
36
+ factory = catalog_session_factory(request)
37
+ with factory() as session:
38
+ try:
39
+ from api.app.runtime import data_source_provider
40
+ from api.backend.backends.access import install_session_security
41
+ from api.backend.backends.registry import backend_for
42
+ from api.backend.integrations.catalog_data_sources import CatalogDataSourceProvider
43
+ if request is not None and request.app.state.runtime.bootstrap is not None:
44
+ provider = data_source_provider(request.app.state.runtime)
45
+ if isinstance(provider, CatalogDataSourceProvider):
46
+ bound = CatalogDataSourceProvider(provider.session_factory, provider.credentials,
47
+ binding=provider.binding, session=session)
48
+ install_session_security(session, lambda: backend_for(bound.get(bound.default_uid())))
49
+ yield session
50
+ if session.info.pop("physical_write_pending", False):
51
+ session.commit()
52
+ except (DisconnectionError, InterfaceError, OperationalError, TimeoutError) as exc:
53
+ raise HTTPException(
54
+ status_code=503, detail="MetaTables catalog is unavailable."
55
+ ) from exc