pyoq-sql 1.0.2__tar.gz → 1.0.3__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 (697) hide show
  1. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/Cargo.lock +1 -1
  2. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/Cargo.toml +1 -1
  3. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/PKG-INFO +80 -2
  4. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/README.md +79 -1
  5. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/astro.config.mjs +13 -0
  6. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/package.json +1 -1
  7. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/agents.md +11 -1
  8. pyoq_sql-1.0.3/docs/web/src/content/docs/alembic.md +136 -0
  9. pyoq_sql-1.0.3/docs/web/src/content/docs/api/cli.md +79 -0
  10. pyoq_sql-1.0.3/docs/web/src/content/docs/api/commands.md +143 -0
  11. pyoq_sql-1.0.3/docs/web/src/content/docs/api/config.md +112 -0
  12. pyoq_sql-1.0.3/docs/web/src/content/docs/api/descriptors.md +108 -0
  13. pyoq_sql-1.0.3/docs/web/src/content/docs/api/diagnostics.md +105 -0
  14. pyoq_sql-1.0.3/docs/web/src/content/docs/api/django.md +67 -0
  15. pyoq_sql-1.0.3/docs/web/src/content/docs/api/dsl.md +233 -0
  16. pyoq_sql-1.0.3/docs/web/src/content/docs/api/errors.md +192 -0
  17. pyoq_sql-1.0.3/docs/web/src/content/docs/api/fastapi.md +60 -0
  18. pyoq_sql-1.0.3/docs/web/src/content/docs/api/fetching.md +88 -0
  19. pyoq_sql-1.0.3/docs/web/src/content/docs/api/generation.md +387 -0
  20. pyoq_sql-1.0.3/docs/web/src/content/docs/api/hydration.md +84 -0
  21. pyoq_sql-1.0.3/docs/web/src/content/docs/api/internals.md +398 -0
  22. pyoq_sql-1.0.3/docs/web/src/content/docs/api/migrations.md +46 -0
  23. pyoq_sql-1.0.3/docs/web/src/content/docs/api/naming.md +40 -0
  24. pyoq_sql-1.0.3/docs/web/src/content/docs/api/native.md +40 -0
  25. pyoq_sql-1.0.3/docs/web/src/content/docs/api/policies.md +69 -0
  26. pyoq_sql-1.0.3/docs/web/src/content/docs/api/pyoq.md +71 -0
  27. pyoq_sql-1.0.3/docs/web/src/content/docs/api/query-execution.md +95 -0
  28. pyoq_sql-1.0.3/docs/web/src/content/docs/api/query-expressions.md +216 -0
  29. pyoq_sql-1.0.3/docs/web/src/content/docs/api/query-functions.md +134 -0
  30. pyoq_sql-1.0.3/docs/web/src/content/docs/api/query-mysql.md +553 -0
  31. pyoq_sql-1.0.3/docs/web/src/content/docs/api/query-postgres.md +429 -0
  32. pyoq_sql-1.0.3/docs/web/src/content/docs/api/query-sqlite.md +267 -0
  33. pyoq_sql-1.0.3/docs/web/src/content/docs/api/query.md +275 -0
  34. pyoq_sql-1.0.2/docs/web/src/content/docs/reference.md → pyoq_sql-1.0.3/docs/web/src/content/docs/api/references.md +3 -3
  35. pyoq_sql-1.0.3/docs/web/src/content/docs/api/relations.md +76 -0
  36. pyoq_sql-1.0.3/docs/web/src/content/docs/api/runtime.md +31 -0
  37. pyoq_sql-1.0.3/docs/web/src/content/docs/api/sanic.md +64 -0
  38. pyoq_sql-1.0.3/docs/web/src/content/docs/api/schema-dialects.md +196 -0
  39. pyoq_sql-1.0.3/docs/web/src/content/docs/api/schema.md +138 -0
  40. pyoq_sql-1.0.3/docs/web/src/content/docs/api/serving.md +57 -0
  41. pyoq_sql-1.0.3/docs/web/src/content/docs/api/snapshots.md +68 -0
  42. pyoq_sql-1.0.3/docs/web/src/content/docs/api/tracing.md +26 -0
  43. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/cli.md +9 -0
  44. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/configuration.md +63 -0
  45. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/django.md +35 -3
  46. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/fastapi.md +29 -1
  47. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/generating.md +52 -1
  48. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/migrations.md +1 -0
  49. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/sanic.md +28 -1
  50. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/selecting.md +24 -0
  51. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/snapshots.md +21 -0
  52. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/troubleshooting.md +7 -0
  53. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/nav.ts +178 -2
  54. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_integration.py +8 -7
  55. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/README.md +7 -5
  56. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/settings.py +5 -0
  57. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/dsl_context.py +7 -3
  58. pyoq_sql-1.0.3/examples/multi_database_generation.py +49 -0
  59. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/pyproject.toml +1 -1
  60. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/scripts/examples.py +1 -0
  61. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/cli/commands.py +34 -9
  62. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/cli/defaults.py +6 -1
  63. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/cli/services.py +13 -0
  64. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/config/__init__.py +7 -1
  65. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/config/loader.py +38 -1
  66. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/config/models.py +96 -9
  67. pyoq_sql-1.0.3/src/pyoq/django/generation.py +110 -0
  68. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/django/management/commands/makemigrations.py +23 -5
  69. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/django/management/commands/pyoq_codegen.py +13 -3
  70. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/django/schema.py +19 -4
  71. pyoq_sql-1.0.3/src/pyoq/django/settings.py +188 -0
  72. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/dsl/aio/queries.py +10 -0
  73. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/dsl/aio/writes.py +18 -0
  74. pyoq_sql-1.0.3/src/pyoq/dsl/inspection.py +25 -0
  75. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/dsl/queries.py +10 -1
  76. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/dsl/writes.py +18 -1
  77. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/__init__.py +2 -0
  78. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/contracts.py +14 -0
  79. pyoq_sql-1.0.3/src/pyoq/generation/pipeline.py +225 -0
  80. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/writer.py +52 -0
  81. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/cli/test_cli.py +83 -0
  82. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/config/test_config.py +130 -0
  83. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/distribution/test_api_reference.py +22 -9
  84. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/django/test_example.py +1 -1
  85. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/django/test_generation.py +131 -3
  86. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/django/test_makemigrations.py +23 -3
  87. pyoq_sql-1.0.3/tests/django/test_settings.py +194 -0
  88. pyoq_sql-1.0.3/tests/dsl/test_inspection.py +174 -0
  89. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/generation/test_filesystem.py +68 -0
  90. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/generation/test_generated_package_imports.py +40 -2
  91. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/generation/test_pipeline.py +133 -2
  92. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/snapshots/test_offline_generation.py +33 -0
  93. pyoq_sql-1.0.2/src/pyoq/django/generation.py +0 -59
  94. pyoq_sql-1.0.2/src/pyoq/django/settings.py +0 -87
  95. pyoq_sql-1.0.2/src/pyoq/generation/pipeline.py +0 -119
  96. pyoq_sql-1.0.2/tests/django/test_settings.py +0 -84
  97. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/.gitignore +0 -0
  98. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/LICENSE +0 -0
  99. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/benchmarks/__init__.py +0 -0
  100. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/benchmarks/bulk_planning.py +0 -0
  101. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/benchmarks/fetch_execution.py +0 -0
  102. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/benchmarks/hydration.py +0 -0
  103. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/benchmarks/observability.py +0 -0
  104. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/benchmarks/performance_contract.py +0 -0
  105. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/django.md +0 -0
  106. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/.gitignore +0 -0
  107. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/README.md +0 -0
  108. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/bun.lock +0 -0
  109. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/public/.nojekyll +0 -0
  110. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/public/brand/pyoq-banner.png +0 -0
  111. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/public/brand/pyoq-banner.svg +0 -0
  112. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/public/brand/pyoq-favicon-32.png +0 -0
  113. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/public/brand/pyoq-mark-180.png +0 -0
  114. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/public/brand/pyoq-mark-512.png +0 -0
  115. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/public/brand/pyoq-mark.svg +0 -0
  116. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/code-head.mjs +0 -0
  117. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/components/AppearanceToggle.astro +0 -0
  118. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/components/Assumed.astro +0 -0
  119. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/components/Brand.astro +0 -0
  120. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/components/CodeCopy.astro +0 -0
  121. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/components/CodeEditors.astro +0 -0
  122. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/components/Contents.astro +0 -0
  123. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/components/Diagrams.astro +0 -0
  124. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/components/Pager.astro +0 -0
  125. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/components/Search.astro +0 -0
  126. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/components/Sidebar.astro +0 -0
  127. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/components/SiteHead.astro +0 -0
  128. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/async.md +0 -0
  129. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/bulk.md +0 -0
  130. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/conflicts.md +0 -0
  131. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/connections.md +0 -0
  132. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/diagnostics.md +0 -0
  133. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/dialects.md +0 -0
  134. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/errors.md +0 -0
  135. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/expressions.md +0 -0
  136. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/first-query.md +0 -0
  137. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/inserting.md +0 -0
  138. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/installing.md +0 -0
  139. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/joins.md +0 -0
  140. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/licence.md +0 -0
  141. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/mysql-application.md +0 -0
  142. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/overview.md +0 -0
  143. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/performance.md +0 -0
  144. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/policies.md +0 -0
  145. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/relations.md +0 -0
  146. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/releasing.md +0 -0
  147. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/results.md +0 -0
  148. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/routines.md +0 -0
  149. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/security.md +0 -0
  150. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/serving.md +0 -0
  151. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/testing.md +0 -0
  152. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/transactions.md +0 -0
  153. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/types.md +0 -0
  154. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/updating.md +0 -0
  155. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content/docs/when-to-use.md +0 -0
  156. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/content.config.ts +0 -0
  157. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/layouts/Doc.astro +0 -0
  158. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/layouts/app.css +0 -0
  159. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/layouts/landing.css +0 -0
  160. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/links.ts +0 -0
  161. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/pages/404.astro +0 -0
  162. /pyoq_sql-1.0.2/docs/web/src/pages/[slug].astro → /pyoq_sql-1.0.3/docs/web/src/pages/[...slug].astro +0 -0
  163. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/pages/index.astro +0 -0
  164. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/pages/sitemap.xml.ts +0 -0
  165. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/project.ts +0 -0
  166. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/remark-base.mjs +0 -0
  167. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/remark-code-shell.mjs +0 -0
  168. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/remark-licence.mjs +0 -0
  169. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/remark-mermaid.mjs +0 -0
  170. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/src/remark-pairs.mjs +0 -0
  171. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/docs/web/tsconfig.json +0 -0
  172. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/__init__.py +0 -0
  173. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/bulk_writes.py +0 -0
  174. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/__init__.py +0 -0
  175. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/analytics/__init__.py +0 -0
  176. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/analytics/admin.py +0 -0
  177. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/analytics/apps.py +0 -0
  178. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/analytics/migrations/0001_initial.py +0 -0
  179. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/analytics/migrations/__init__.py +0 -0
  180. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/analytics/models.py +0 -0
  181. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/analytics/queries.py +0 -0
  182. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/analytics/urls.py +0 -0
  183. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/analytics/views.py +0 -0
  184. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/asgi.py +0 -0
  185. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/catalog/__init__.py +0 -0
  186. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/catalog/admin.py +0 -0
  187. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/catalog/apps.py +0 -0
  188. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/catalog/migrations/0001_initial.py +0 -0
  189. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/catalog/migrations/__init__.py +0 -0
  190. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/catalog/models.py +0 -0
  191. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/catalog/queries.py +0 -0
  192. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/catalog/templates/catalog/title_detail.html +0 -0
  193. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/catalog/urls.py +0 -0
  194. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/catalog/views.py +0 -0
  195. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/manage.py +0 -0
  196. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/routers.py +0 -0
  197. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/urls.py +0 -0
  198. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/django_project/wsgi.py +0 -0
  199. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/expressions.py +0 -0
  200. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/fastapi_application.py +0 -0
  201. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/fetch_plans.py +0 -0
  202. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/generated_types.py +0 -0
  203. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/generation_pipeline.py +0 -0
  204. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/mysql_execution.py +0 -0
  205. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/nested_collections.py +0 -0
  206. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/observability.py +0 -0
  207. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/policies.py +0 -0
  208. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/postgres_execution.py +0 -0
  209. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/relation_model.py +0 -0
  210. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/sanic_application.py +0 -0
  211. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/select_queries.py +0 -0
  212. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/sqlite_compilation.py +0 -0
  213. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/sqlite_execution.py +0 -0
  214. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/sqlite_generation.py +0 -0
  215. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/sqlite_transactions.py +0 -0
  216. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/typed_inserts.py +0 -0
  217. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/typed_updates.py +0 -0
  218. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/examples/typed_upserts.py +0 -0
  219. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/rust/lib.rs +0 -0
  220. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/rust-toolchain.toml +0 -0
  221. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/scripts/__init__.py +0 -0
  222. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/scripts/example_requirements.py +0 -0
  223. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/scripts/run_examples.py +0 -0
  224. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/scripts/verify_sdist.py +0 -0
  225. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/scripts/verify_wheels.py +0 -0
  226. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/__init__.py +0 -0
  227. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/__main__.py +0 -0
  228. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/_native.pyi +0 -0
  229. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/cli/__init__.py +0 -0
  230. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/config/connection.py +0 -0
  231. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/config/values.py +0 -0
  232. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/descriptors.py +0 -0
  233. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/diagnostics/__init__.py +0 -0
  234. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/diagnostics/budget.py +0 -0
  235. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/diagnostics/events.py +0 -0
  236. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/diagnostics/fingerprint.py +0 -0
  237. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/diagnostics/instrumented.py +0 -0
  238. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/diagnostics/metrics.py +0 -0
  239. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/diagnostics/observation.py +0 -0
  240. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/diagnostics/scoped.py +0 -0
  241. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/django/__init__.py +0 -0
  242. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/django/apps.py +0 -0
  243. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/django/execution.py +0 -0
  244. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/django/management/__init__.py +0 -0
  245. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/django/management/commands/__init__.py +0 -0
  246. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/django/parameters.py +0 -0
  247. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/django/timeouts.py +0 -0
  248. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/dsl/__init__.py +0 -0
  249. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/dsl/aio/__init__.py +0 -0
  250. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/dsl/aio/context.py +0 -0
  251. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/dsl/context.py +0 -0
  252. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/dsl/entry.py +0 -0
  253. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/dsl/labels.py +0 -0
  254. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/dsl/result.py +0 -0
  255. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/errors.py +0 -0
  256. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/fastapi/__init__.py +0 -0
  257. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/fastapi/dependencies.py +0 -0
  258. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/fastapi/lifespan.py +0 -0
  259. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/fetching/__init__.py +0 -0
  260. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/fetching/collections.py +0 -0
  261. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/fetching/execution.py +0 -0
  262. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/fetching/joined.py +0 -0
  263. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/fetching/nesting.py +0 -0
  264. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/fetching/plans.py +0 -0
  265. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/fetching/select_in.py +0 -0
  266. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/fetching/tables.py +0 -0
  267. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/cleanup.py +0 -0
  268. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/drift.py +0 -0
  269. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/lock.py +0 -0
  270. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/manifest.py +0 -0
  271. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/model.py +0 -0
  272. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/rendering/__init__.py +0 -0
  273. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/rendering/domains.py +0 -0
  274. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/rendering/enums.py +0 -0
  275. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/rendering/exports.py +0 -0
  276. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/rendering/imports.py +0 -0
  277. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/rendering/package.py +0 -0
  278. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/rendering/relations.py +0 -0
  279. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/rendering/routines.py +0 -0
  280. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/rendering/rows.py +0 -0
  281. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/rendering/source.py +0 -0
  282. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/rendering/tables.py +0 -0
  283. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/rendering/writes.py +0 -0
  284. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/generation/validation.py +0 -0
  285. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/hydration/__init__.py +0 -0
  286. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/hydration/engine.py +0 -0
  287. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/hydration/identity.py +0 -0
  288. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/hydration/plan.py +0 -0
  289. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/migrations/__init__.py +0 -0
  290. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/migrations/alembic.py +0 -0
  291. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/migrations/hooks.py +0 -0
  292. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/naming.py +0 -0
  293. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/policies/__init__.py +0 -0
  294. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/policies/bypass.py +0 -0
  295. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/policies/governed.py +0 -0
  296. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/policies/model.py +0 -0
  297. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/policies/rewriting.py +0 -0
  298. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/py.typed +0 -0
  299. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/__init__.py +0 -0
  300. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/aggregates.py +0 -0
  301. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/arrays.py +0 -0
  302. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/binding.py +0 -0
  303. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/capabilities.py +0 -0
  304. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/casts.py +0 -0
  305. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/choices.py +0 -0
  306. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/decoding.py +0 -0
  307. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/documents.py +0 -0
  308. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/execution/__init__.py +0 -0
  309. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/execution/aio/__init__.py +0 -0
  310. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/execution/aio/operations.py +0 -0
  311. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/execution/aio/pooling.py +0 -0
  312. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/execution/aio/streaming.py +0 -0
  313. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/execution/aio/transactions.py +0 -0
  314. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/execution/batch.py +0 -0
  315. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/execution/binding_style.py +0 -0
  316. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/execution/compilation.py +0 -0
  317. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/execution/context.py +0 -0
  318. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/execution/control.py +0 -0
  319. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/execution/operations.py +0 -0
  320. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/execution/planning.py +0 -0
  321. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/execution/pooling.py +0 -0
  322. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/execution/results.py +0 -0
  323. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/execution/streaming.py +0 -0
  324. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/execution/transactions.py +0 -0
  325. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/expressions.py +0 -0
  326. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/fields.py +0 -0
  327. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/__init__.py +0 -0
  328. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/aio/__init__.py +0 -0
  329. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/aio/commands.py +0 -0
  330. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/aio/driver.py +0 -0
  331. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/aio/executor.py +0 -0
  332. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/aio/factory.py +0 -0
  333. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/aio/operations.py +0 -0
  334. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/aio/pool.py +0 -0
  335. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/aio/transactions.py +0 -0
  336. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/commands.py +0 -0
  337. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/compiler.py +0 -0
  338. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/context.py +0 -0
  339. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/executor.py +0 -0
  340. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/expressions.py +0 -0
  341. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/factory.py +0 -0
  342. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/health.py +0 -0
  343. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/identifiers.py +0 -0
  344. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/model.py +0 -0
  345. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/operations.py +0 -0
  346. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/parameters.py +0 -0
  347. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/planning.py +0 -0
  348. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/pool.py +0 -0
  349. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/transactions.py +0 -0
  350. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/mysql/writes.py +0 -0
  351. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/nodes.py +0 -0
  352. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/__init__.py +0 -0
  353. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/aio/__init__.py +0 -0
  354. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/aio/bulk.py +0 -0
  355. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/aio/commands.py +0 -0
  356. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/aio/executor.py +0 -0
  357. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/aio/factory.py +0 -0
  358. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/aio/operations.py +0 -0
  359. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/aio/pool.py +0 -0
  360. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/aio/transactions.py +0 -0
  361. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/bulk.py +0 -0
  362. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/commands.py +0 -0
  363. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/compiler.py +0 -0
  364. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/context.py +0 -0
  365. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/executor.py +0 -0
  366. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/expressions.py +0 -0
  367. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/factory.py +0 -0
  368. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/health.py +0 -0
  369. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/identifiers.py +0 -0
  370. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/model.py +0 -0
  371. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/operations.py +0 -0
  372. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/parameters.py +0 -0
  373. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/planning.py +0 -0
  374. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/pool.py +0 -0
  375. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/transactions.py +0 -0
  376. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/postgres/writes.py +0 -0
  377. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/projections.py +0 -0
  378. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/raw.py +0 -0
  379. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/recursion.py +0 -0
  380. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/rendering/__init__.py +0 -0
  381. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/rendering/expressions.py +0 -0
  382. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/rendering/identifiers.py +0 -0
  383. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/rendering/projections.py +0 -0
  384. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/rendering/queries.py +0 -0
  385. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/rendering/sources.py +0 -0
  386. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/rendering/writes.py +0 -0
  387. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/results.py +0 -0
  388. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/routines.py +0 -0
  389. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/rows.py +0 -0
  390. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/select.py +0 -0
  391. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/select_nodes.py +0 -0
  392. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/sources.py +0 -0
  393. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/sqlite/__init__.py +0 -0
  394. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/sqlite/commands.py +0 -0
  395. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/sqlite/compiler.py +0 -0
  396. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/sqlite/context.py +0 -0
  397. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/sqlite/executor.py +0 -0
  398. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/sqlite/expressions.py +0 -0
  399. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/sqlite/factory.py +0 -0
  400. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/sqlite/health.py +0 -0
  401. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/sqlite/identifiers.py +0 -0
  402. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/sqlite/model.py +0 -0
  403. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/sqlite/operations.py +0 -0
  404. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/sqlite/parameters.py +0 -0
  405. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/sqlite/planning.py +0 -0
  406. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/sqlite/pool.py +0 -0
  407. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/sqlite/streaming.py +0 -0
  408. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/sqlite/transactions.py +0 -0
  409. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/sqlite/writes.py +0 -0
  410. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/statements.py +0 -0
  411. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/values.py +0 -0
  412. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/vendor.py +0 -0
  413. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/windows.py +0 -0
  414. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/write_nodes.py +0 -0
  415. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/query/writes.py +0 -0
  416. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/relations/__init__.py +0 -0
  417. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/relations/batching.py +0 -0
  418. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/relations/derivation.py +0 -0
  419. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/relations/fetching.py +0 -0
  420. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/relations/graph.py +0 -0
  421. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/relations/loading.py +0 -0
  422. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/relations/model.py +0 -0
  423. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/relations/planning.py +0 -0
  424. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/runtime/__init__.py +0 -0
  425. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/runtime/kernels.py +0 -0
  426. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/runtime/python.py +0 -0
  427. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/runtime/selection.py +0 -0
  428. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/sanic/__init__.py +0 -0
  429. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/sanic/scope.py +0 -0
  430. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/sanic/workers.py +0 -0
  431. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/__init__.py +0 -0
  432. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/codec.py +0 -0
  433. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/models.py +0 -0
  434. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/mysql/__init__.py +0 -0
  435. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/mysql/connection.py +0 -0
  436. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/mysql/dsn.py +0 -0
  437. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/mysql/records.py +0 -0
  438. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/mysql/reflection.py +0 -0
  439. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/mysql/source.py +0 -0
  440. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/mysql/sql.py +0 -0
  441. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/mysql/types.py +0 -0
  442. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/postgres/__init__.py +0 -0
  443. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/postgres/connection.py +0 -0
  444. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/postgres/records.py +0 -0
  445. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/postgres/reflection.py +0 -0
  446. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/postgres/source.py +0 -0
  447. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/postgres/sql.py +0 -0
  448. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/postgres/types.py +0 -0
  449. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/registry.py +0 -0
  450. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/source.py +0 -0
  451. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/sqlite/__init__.py +0 -0
  452. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/sqlite/connection.py +0 -0
  453. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/sqlite/records.py +0 -0
  454. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/sqlite/reflection.py +0 -0
  455. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/sqlite/source.py +0 -0
  456. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/sqlite/sql.py +0 -0
  457. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/schema/sqlite/types.py +0 -0
  458. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/serving/__init__.py +0 -0
  459. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/serving/databases.py +0 -0
  460. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/serving/opening.py +0 -0
  461. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/snapshots/__init__.py +0 -0
  462. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/snapshots/drift.py +0 -0
  463. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/snapshots/files.py +0 -0
  464. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/snapshots/routing.py +0 -0
  465. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/snapshots/source.py +0 -0
  466. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/tracing/__init__.py +0 -0
  467. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/tracing/spans.py +0 -0
  468. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/src/pyoq/unset.py +0 -0
  469. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/__init__.py +0 -0
  470. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/architecture/__init__.py +0 -0
  471. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/architecture/test_layering.py +0 -0
  472. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/cli/__init__.py +0 -0
  473. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/config/__init__.py +0 -0
  474. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/conftest.py +0 -0
  475. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/__init__.py +0 -0
  476. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/aliasing_contract.py +0 -0
  477. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/array_contract.py +0 -0
  478. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/async_execution_contract.py +0 -0
  479. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/cast_contract.py +0 -0
  480. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/collection_contract.py +0 -0
  481. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/compiler_contract.py +0 -0
  482. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/execution_contract.py +0 -0
  483. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/fetch_contract.py +0 -0
  484. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/joined_contract.py +0 -0
  485. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/json_contract.py +0 -0
  486. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/lateral_contract.py +0 -0
  487. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/locking_contract.py +0 -0
  488. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/null_order_contract.py +0 -0
  489. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/recursion_contract.py +0 -0
  490. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/roundtrip_contract.py +0 -0
  491. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/routine_contract.py +0 -0
  492. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/row_value_contract.py +0 -0
  493. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/select_in_contract.py +0 -0
  494. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/snapshot_contract.py +0 -0
  495. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/support.py +0 -0
  496. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/contracts/window_contract.py +0 -0
  497. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/diagnostics/__init__.py +0 -0
  498. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/diagnostics/test_budget.py +0 -0
  499. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/diagnostics/test_events.py +0 -0
  500. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/diagnostics/test_fingerprint.py +0 -0
  501. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/diagnostics/test_instrumented.py +0 -0
  502. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/diagnostics/test_instrumented_aio.py +0 -0
  503. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/diagnostics/test_metrics.py +0 -0
  504. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/diagnostics/test_observation.py +0 -0
  505. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/diagnostics/test_scoped.py +0 -0
  506. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/distribution/__init__.py +0 -0
  507. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/distribution/test_capability_documentation.py +0 -0
  508. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/distribution/test_ci_contract.py +0 -0
  509. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/distribution/test_cognitive_complexity.py +0 -0
  510. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/distribution/test_every_example_runs.py +0 -0
  511. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/distribution/test_examples_run.py +0 -0
  512. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/distribution/test_fetch_execution_contract.py +0 -0
  513. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/distribution/test_hydration_contract.py +0 -0
  514. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/distribution/test_mysql_application_guide.py +0 -0
  515. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/distribution/test_one_source_of_versions.py +0 -0
  516. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/distribution/test_performance_contract.py +0 -0
  517. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/distribution/test_public_attribution.py +0 -0
  518. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/distribution/test_run_examples.py +0 -0
  519. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/distribution/test_verify_sdist.py +0 -0
  520. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/distribution/test_verify_wheels.py +0 -0
  521. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/django/__init__.py +0 -0
  522. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/django/catalog/__init__.py +0 -0
  523. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/django/catalog/apps.py +0 -0
  524. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/django/catalog/fields.py +0 -0
  525. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/django/catalog/migrations/0001_initial.py +0 -0
  526. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/django/catalog/migrations/__init__.py +0 -0
  527. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/django/catalog/models.py +0 -0
  528. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/django/conftest.py +0 -0
  529. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/django/routing.py +0 -0
  530. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/django/test_execution.py +0 -0
  531. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/django/test_generation_equivalence.py +0 -0
  532. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/django/test_parameters.py +0 -0
  533. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/django/test_timeouts.py +0 -0
  534. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/django/test_transactions.py +0 -0
  535. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/dsl/__init__.py +0 -0
  536. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/dsl/aio_support.py +0 -0
  537. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/dsl/conftest.py +0 -0
  538. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/dsl/test_aio.py +0 -0
  539. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/dsl/test_aio_writes.py +0 -0
  540. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/dsl/test_context.py +0 -0
  541. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/dsl/test_queries.py +0 -0
  542. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/dsl/test_result.py +0 -0
  543. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/dsl/test_writes.py +0 -0
  544. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fastapi/__init__.py +0 -0
  545. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fastapi/conftest.py +0 -0
  546. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fastapi/test_async_routes.py +0 -0
  547. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fastapi/test_lifespan.py +0 -0
  548. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fastapi/test_routes.py +0 -0
  549. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fetching/__init__.py +0 -0
  550. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fetching/test_collection_execution.py +0 -0
  551. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fetching/test_collections.py +0 -0
  552. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fetching/test_dialect_aliasing.py +0 -0
  553. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fetching/test_dialect_fetching.py +0 -0
  554. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fetching/test_dialect_fetching_aio.py +0 -0
  555. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fetching/test_execution.py +0 -0
  556. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fetching/test_joined.py +0 -0
  557. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fetching/test_joined_fetch.py +0 -0
  558. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fetching/test_multi_schema_relations.py +0 -0
  559. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fetching/test_nesting.py +0 -0
  560. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fetching/test_plans.py +0 -0
  561. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fetching/test_select_in.py +0 -0
  562. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fetching/test_select_in_reduction.py +0 -0
  563. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/fetching/test_typed_rows.py +0 -0
  564. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/generation/__init__.py +0 -0
  565. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/generation/test_contracts.py +0 -0
  566. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/generation/test_generated_overloads.py +0 -0
  567. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/generation/test_generated_relations.py +0 -0
  568. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/generation/test_generated_result_types.py +0 -0
  569. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/generation/test_generated_types.py +0 -0
  570. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/generation/test_manifest.py +0 -0
  571. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/hydration/__init__.py +0 -0
  572. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/hydration/test_engine.py +0 -0
  573. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/hydration/test_engine_properties.py +0 -0
  574. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/hydration/test_identity.py +0 -0
  575. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/policies/__init__.py +0 -0
  576. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/policies/test_adapters.py +0 -0
  577. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/policies/test_isolation.py +0 -0
  578. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/policies/test_isolation_aio.py +0 -0
  579. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/policies/test_no_bypass.py +0 -0
  580. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/policies/test_rewriting.py +0 -0
  581. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/__init__.py +0 -0
  582. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/mysql/__init__.py +0 -0
  583. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/mysql/aio/__init__.py +0 -0
  584. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/mysql/aio/test_driver_failures.py +0 -0
  585. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/mysql/aio/test_execution.py +0 -0
  586. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/mysql/aio/test_read_throughput.py +0 -0
  587. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/mysql/test_compiler.py +0 -0
  588. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/mysql/test_driver_failures.py +0 -0
  589. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/mysql/test_driver_recovery.py +0 -0
  590. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/mysql/test_execution.py +0 -0
  591. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/postgres/__init__.py +0 -0
  592. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/postgres/aio/__init__.py +0 -0
  593. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/postgres/aio/test_driver_failures.py +0 -0
  594. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/postgres/aio/test_execution.py +0 -0
  595. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/postgres/aio/test_final_paths.py +0 -0
  596. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/postgres/aio/test_lifecycle.py +0 -0
  597. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/postgres/aio/test_state_guards.py +0 -0
  598. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/postgres/test_command_translation.py +0 -0
  599. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/postgres/test_compiler.py +0 -0
  600. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/postgres/test_driver_failures.py +0 -0
  601. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/postgres/test_driver_recovery.py +0 -0
  602. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/postgres/test_execution.py +0 -0
  603. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/postgres/test_pipeline_bulk.py +0 -0
  604. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/postgres/test_transaction_lifecycle.py +0 -0
  605. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/sqlite/__init__.py +0 -0
  606. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/sqlite/test_bulk_execution.py +0 -0
  607. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/sqlite/test_compiler.py +0 -0
  608. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/sqlite/test_control.py +0 -0
  609. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/sqlite/test_dialect_contracts.py +0 -0
  610. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/sqlite/test_executor.py +0 -0
  611. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/sqlite/test_pool.py +0 -0
  612. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/sqlite/test_streaming.py +0 -0
  613. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/sqlite/test_transactions.py +0 -0
  614. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_advanced_types.py +0 -0
  615. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_arrays.py +0 -0
  616. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_binding.py +0 -0
  617. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_capabilities.py +0 -0
  618. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_casts.py +0 -0
  619. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_choices.py +0 -0
  620. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_collection_execution.py +0 -0
  621. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_collection_rendering.py +0 -0
  622. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_decoding.py +0 -0
  623. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_expressions.py +0 -0
  624. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_json.py +0 -0
  625. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_locking.py +0 -0
  626. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_parameter_styles.py +0 -0
  627. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_recursion.py +0 -0
  628. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_results.py +0 -0
  629. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_routines.py +0 -0
  630. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_rows.py +0 -0
  631. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_select_queries.py +0 -0
  632. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_vendor.py +0 -0
  633. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_watchdog_cancellation.py +0 -0
  634. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/test_windows.py +0 -0
  635. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/writes/__init__.py +0 -0
  636. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/writes/test_insert_statements.py +0 -0
  637. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/writes/test_update_delete_statements.py +0 -0
  638. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/query/writes/test_upsert_statements.py +0 -0
  639. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/relations/__init__.py +0 -0
  640. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/relations/test_batching.py +0 -0
  641. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/relations/test_derivation.py +0 -0
  642. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/relations/test_fetching.py +0 -0
  643. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/relations/test_graph.py +0 -0
  644. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/relations/test_loading.py +0 -0
  645. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/relations/test_planning.py +0 -0
  646. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/runtime/__init__.py +0 -0
  647. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/runtime/test_kernels.py +0 -0
  648. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/runtime/test_runtime.py +0 -0
  649. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/sanic/__init__.py +0 -0
  650. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/sanic/conftest.py +0 -0
  651. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/sanic/notes.py +0 -0
  652. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/sanic/test_attachment.py +0 -0
  653. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/sanic/test_scope.py +0 -0
  654. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/sanic/test_synchronous_scope.py +0 -0
  655. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/sanic/test_workers.py +0 -0
  656. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/sanic/worker_application.py +0 -0
  657. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/schema/__init__.py +0 -0
  658. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/schema/mysql/__init__.py +0 -0
  659. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/schema/mysql/test_catalog_records.py +0 -0
  660. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/schema/mysql/test_dsn.py +0 -0
  661. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/schema/mysql/test_reflection.py +0 -0
  662. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/schema/mysql/test_types.py +0 -0
  663. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/schema/postgres/__init__.py +0 -0
  664. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/schema/postgres/test_catalog_records.py +0 -0
  665. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/schema/postgres/test_reflection.py +0 -0
  666. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/schema/postgres/test_types.py +0 -0
  667. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/schema/sqlite/__init__.py +0 -0
  668. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/schema/sqlite/test_records.py +0 -0
  669. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/schema/sqlite/test_reflection.py +0 -0
  670. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/schema/sqlite/test_source.py +0 -0
  671. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/schema/sqlite/test_sql.py +0 -0
  672. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/schema/sqlite/test_types.py +0 -0
  673. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/schema/test_codec.py +0 -0
  674. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/schema/test_registry.py +0 -0
  675. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/schema/test_schema.py +0 -0
  676. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/serving/__init__.py +0 -0
  677. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/serving/test_opening.py +0 -0
  678. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/serving/test_opening_servers.py +0 -0
  679. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/snapshots/__init__.py +0 -0
  680. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/snapshots/test_alembic_lifecycle.py +0 -0
  681. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/snapshots/test_dialect_snapshots.py +0 -0
  682. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/snapshots/test_drift_and_hooks.py +0 -0
  683. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/snapshots/test_snapshot_files.py +0 -0
  684. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/support/__init__.py +0 -0
  685. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/support/checkers.py +0 -0
  686. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/support/generation_fixtures.py +0 -0
  687. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/support/mysql.py +0 -0
  688. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/support/postgres.py +0 -0
  689. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/support/schema_fixtures.py +0 -0
  690. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/test_descriptors.py +0 -0
  691. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/test_errors.py +0 -0
  692. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/test_naming.py +0 -0
  693. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/test_package.py +0 -0
  694. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/tracing/__init__.py +0 -0
  695. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/tests/tracing/test_spans.py +0 -0
  696. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/typings/cognitive_complexity/__init__.pyi +0 -0
  697. {pyoq_sql-1.0.2 → pyoq_sql-1.0.3}/typings/cognitive_complexity/api.pyi +0 -0
@@ -94,7 +94,7 @@ dependencies = [
94
94
 
95
95
  [[package]]
96
96
  name = "pyoq-native"
97
- version = "1.0.2"
97
+ version = "1.0.3"
98
98
  dependencies = [
99
99
  "pyo3",
100
100
  ]
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "pyoq-native"
3
- version = "1.0.2"
3
+ version = "1.0.3"
4
4
  edition = "2024"
5
5
  description = "Native runtime for the PyOQ SQL toolkit"
6
6
  license = "MPL-2.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: pyoq-sql
3
- Version: 1.0.2
3
+ Version: 1.0.3
4
4
  Summary: A fully typed, database-first SQL toolkit for Python.
5
5
  Project-URL: Homepage, https://teqpod.com/pyoq-sql/
6
6
  Project-URL: Documentation, https://teqpod.com/pyoq-sql/overview/
@@ -166,6 +166,14 @@ structured server or pool value. Any other string is literal. Server profiles
166
166
  may alternatively define one `dsn`, but cannot combine it with structured
167
167
  connection fields.
168
168
 
169
+ The default generation layout is flat and preserves the directory and import
170
+ name above. An application with several databases can set
171
+ `codegen-layout = "profiles"`, use the root output settings as bases, and put a
172
+ `codegen-name` and `schema-snapshot` on each profile. With both output bases set
173
+ to `generated`, a profile named `default` with `codegen-name = "database"`
174
+ produces `generated.database`, while an `analytics` profile produces
175
+ `generated.analytics` by default.
176
+
169
177
  `SecretValue` renders as `[REDACTED]`; access to its underlying value is always
170
178
  explicit. An explicit `Configuration` object takes precedence over the file,
171
179
  and the `selected_profile` argument can override profile selection. Unknown
@@ -1055,6 +1063,27 @@ dsl.select(TITLE_ID, TITLE_NAME, TITLE_PRICE) \
1055
1063
  .to_list()
1056
1064
  ```
1057
1065
 
1066
+ The same bound chain can show what it would send without running it:
1067
+
1068
+ ```python
1069
+ query = (
1070
+ dsl.select(TITLE_ID, TITLE_NAME)
1071
+ .from_(table_source(TITLES))
1072
+ .where(TITLE_PRICE.gt(Decimal("10.00")))
1073
+ )
1074
+
1075
+ print(query.sql())
1076
+ compiled = query.compile()
1077
+ print(compiled.parameters)
1078
+ ```
1079
+
1080
+ `sql()` uses the active database's quoting and placeholder style. It never
1081
+ interpolates values. `compile()` returns the same SQL together with its bound
1082
+ parameters, sensitive-parameter indexes, statement kind, and declared result
1083
+ types. Neither method executes, checks out a connection, records a query-budget
1084
+ use, or emits an execution event. The asynchronous DSL exposes the same two
1085
+ synchronous methods because compilation performs no I/O.
1086
+
1058
1087
  A generated table names its own columns, so a query over all of them does not
1059
1088
  have to list them:
1060
1089
 
@@ -1282,12 +1311,41 @@ python manage.py pyoq_codegen --dry-run
1282
1311
  python manage.py pyoq_codegen --check
1283
1312
  ```
1284
1313
 
1314
+ For multiple Django aliases, use profile layout:
1315
+
1316
+ ```python
1317
+ PYOQ = {
1318
+ "codegen_layout": "profiles",
1319
+ "codegen_directory": "app/generated",
1320
+ "codegen_package": "app.generated",
1321
+ "databases": {
1322
+ "default": {"codegen_name": "database"},
1323
+ "reporting": {},
1324
+ },
1325
+ }
1326
+ ```
1327
+
1328
+ ```bash
1329
+ python manage.py pyoq_codegen --database reporting
1330
+ python manage.py pyoq_codegen --all-databases
1331
+ python manage.py pyoq_codegen --all-databases --check
1332
+ python manage.py pyoq_codegen --all-databases --dry-run
1333
+ ```
1334
+
1335
+ A single-alias run owns only that alias package. An all-database run loads and
1336
+ validates every configured alias before publishing the generated package base
1337
+ once, so one failure leaves every existing alias package unchanged.
1338
+
1285
1339
  The schema comes from the migration files, not from a database. Migrations are
1286
1340
  what the schema is going to be, and a developer generating types has usually
1287
1341
  not applied them yet. Nothing connects: Django answers what column a field
1288
1342
  takes on a backend without consulting a server, so the alias selects the
1289
1343
  dialect rather than opening a socket.
1290
1344
 
1345
+ The selected alias also passes each historical model through Django's
1346
+ `allow_migrate` routers. Profile layout therefore produces a package for the
1347
+ tables eligible for each database, as well as using that alias's dialect.
1348
+
1291
1349
  What that yields is the schema the database will really have, which is not
1292
1350
  always the one the models appear to describe:
1293
1351
 
@@ -1352,6 +1410,12 @@ def open_notes() -> SyncDatabase:
1352
1410
  app = FastAPI(lifespan=database_lifespan(synchronous={"default": open_notes}))
1353
1411
  ```
1354
1412
 
1413
+ For several databases, use profile-organized generation through the shared
1414
+ CLI and give the lifespan mapping the same names as those profiles. Each route
1415
+ then selects the matching alias, such as `database("reporting")`, while imports
1416
+ come from separate packages such as `generated.reporting.tables`. Generation
1417
+ does not run during application startup.
1418
+
1355
1419
  A database that fails to open takes the application down, and the ones already
1356
1420
  open are given back first. Starting up halfway and serving requests against a
1357
1421
  partly opened application is worse than not starting.
@@ -1441,6 +1505,12 @@ async def open_notes() -> AsyncDatabase:
1441
1505
  attach_databases(app, asynchronous={"default": open_notes})
1442
1506
  ```
1443
1507
 
1508
+ For several databases, use profile-organized generation through the shared
1509
+ CLI and give the attachment mapping the same names as those profiles. A handler
1510
+ can then pair `database_of(request, "reporting")` with descriptors imported
1511
+ from `generated.reporting.tables`. Generation happens before server startup,
1512
+ never inside a worker.
1513
+
1444
1514
  A database that fails to open takes the worker down, and the ones already open
1445
1515
  are given back first. Every one a worker opened is closed when it stops.
1446
1516
 
@@ -2954,6 +3024,8 @@ pyoq --version
2954
3024
  pyoq generate --project-root .
2955
3025
  pyoq generate --project-root . --check
2956
3026
  pyoq generate --project-root . --dry-run
3027
+ pyoq generate --project-root . --profile reporting
3028
+ pyoq generate --project-root . --all-profiles
2957
3029
  pyoq inspect --project-root .
2958
3030
  ```
2959
3031
 
@@ -2961,6 +3033,12 @@ Both database commands accept `--config` for a configuration file below the
2961
3033
  project root and `--profile` for explicit profile selection. `--check` and
2962
3034
  `--dry-run` are mutually exclusive.
2963
3035
 
3036
+ Generation defaults to one flat package. Set `codegen-layout = "profiles"` to
3037
+ treat `codegen-directory` and `codegen-package` as bases, then give any profile
3038
+ a `codegen-name` when its profile name is not the desired Python package
3039
+ segment. `--all-profiles` prepares every schema first and atomically publishes
3040
+ all changed profile packages. It cannot be combined with `--profile`.
3041
+
2964
3042
  Command exit codes are stable:
2965
3043
 
2966
3044
  - `0`: success
@@ -2975,7 +3053,7 @@ primary and unique keys, indexes, CHECK constraints, and foreign-key
2975
3053
  relationships. Metadata is normalized before rendering, and the connection is
2976
3054
  closed before generated files are checked or written.
2977
3055
 
2978
- Generation writes six deterministic, fully typed modules and an ownership
3056
+ Generation writes eight deterministic, fully typed modules and an ownership
2979
3057
  manifest into `codegen-directory`. Repeating a write against an unchanged
2980
3058
  database leaves the generated directory untouched. `--check` fails on drift,
2981
3059
  while `--dry-run` reports planned creation, update, removal, and conflict counts
@@ -122,6 +122,14 @@ structured server or pool value. Any other string is literal. Server profiles
122
122
  may alternatively define one `dsn`, but cannot combine it with structured
123
123
  connection fields.
124
124
 
125
+ The default generation layout is flat and preserves the directory and import
126
+ name above. An application with several databases can set
127
+ `codegen-layout = "profiles"`, use the root output settings as bases, and put a
128
+ `codegen-name` and `schema-snapshot` on each profile. With both output bases set
129
+ to `generated`, a profile named `default` with `codegen-name = "database"`
130
+ produces `generated.database`, while an `analytics` profile produces
131
+ `generated.analytics` by default.
132
+
125
133
  `SecretValue` renders as `[REDACTED]`; access to its underlying value is always
126
134
  explicit. An explicit `Configuration` object takes precedence over the file,
127
135
  and the `selected_profile` argument can override profile selection. Unknown
@@ -1011,6 +1019,27 @@ dsl.select(TITLE_ID, TITLE_NAME, TITLE_PRICE) \
1011
1019
  .to_list()
1012
1020
  ```
1013
1021
 
1022
+ The same bound chain can show what it would send without running it:
1023
+
1024
+ ```python
1025
+ query = (
1026
+ dsl.select(TITLE_ID, TITLE_NAME)
1027
+ .from_(table_source(TITLES))
1028
+ .where(TITLE_PRICE.gt(Decimal("10.00")))
1029
+ )
1030
+
1031
+ print(query.sql())
1032
+ compiled = query.compile()
1033
+ print(compiled.parameters)
1034
+ ```
1035
+
1036
+ `sql()` uses the active database's quoting and placeholder style. It never
1037
+ interpolates values. `compile()` returns the same SQL together with its bound
1038
+ parameters, sensitive-parameter indexes, statement kind, and declared result
1039
+ types. Neither method executes, checks out a connection, records a query-budget
1040
+ use, or emits an execution event. The asynchronous DSL exposes the same two
1041
+ synchronous methods because compilation performs no I/O.
1042
+
1014
1043
  A generated table names its own columns, so a query over all of them does not
1015
1044
  have to list them:
1016
1045
 
@@ -1238,12 +1267,41 @@ python manage.py pyoq_codegen --dry-run
1238
1267
  python manage.py pyoq_codegen --check
1239
1268
  ```
1240
1269
 
1270
+ For multiple Django aliases, use profile layout:
1271
+
1272
+ ```python
1273
+ PYOQ = {
1274
+ "codegen_layout": "profiles",
1275
+ "codegen_directory": "app/generated",
1276
+ "codegen_package": "app.generated",
1277
+ "databases": {
1278
+ "default": {"codegen_name": "database"},
1279
+ "reporting": {},
1280
+ },
1281
+ }
1282
+ ```
1283
+
1284
+ ```bash
1285
+ python manage.py pyoq_codegen --database reporting
1286
+ python manage.py pyoq_codegen --all-databases
1287
+ python manage.py pyoq_codegen --all-databases --check
1288
+ python manage.py pyoq_codegen --all-databases --dry-run
1289
+ ```
1290
+
1291
+ A single-alias run owns only that alias package. An all-database run loads and
1292
+ validates every configured alias before publishing the generated package base
1293
+ once, so one failure leaves every existing alias package unchanged.
1294
+
1241
1295
  The schema comes from the migration files, not from a database. Migrations are
1242
1296
  what the schema is going to be, and a developer generating types has usually
1243
1297
  not applied them yet. Nothing connects: Django answers what column a field
1244
1298
  takes on a backend without consulting a server, so the alias selects the
1245
1299
  dialect rather than opening a socket.
1246
1300
 
1301
+ The selected alias also passes each historical model through Django's
1302
+ `allow_migrate` routers. Profile layout therefore produces a package for the
1303
+ tables eligible for each database, as well as using that alias's dialect.
1304
+
1247
1305
  What that yields is the schema the database will really have, which is not
1248
1306
  always the one the models appear to describe:
1249
1307
 
@@ -1308,6 +1366,12 @@ def open_notes() -> SyncDatabase:
1308
1366
  app = FastAPI(lifespan=database_lifespan(synchronous={"default": open_notes}))
1309
1367
  ```
1310
1368
 
1369
+ For several databases, use profile-organized generation through the shared
1370
+ CLI and give the lifespan mapping the same names as those profiles. Each route
1371
+ then selects the matching alias, such as `database("reporting")`, while imports
1372
+ come from separate packages such as `generated.reporting.tables`. Generation
1373
+ does not run during application startup.
1374
+
1311
1375
  A database that fails to open takes the application down, and the ones already
1312
1376
  open are given back first. Starting up halfway and serving requests against a
1313
1377
  partly opened application is worse than not starting.
@@ -1397,6 +1461,12 @@ async def open_notes() -> AsyncDatabase:
1397
1461
  attach_databases(app, asynchronous={"default": open_notes})
1398
1462
  ```
1399
1463
 
1464
+ For several databases, use profile-organized generation through the shared
1465
+ CLI and give the attachment mapping the same names as those profiles. A handler
1466
+ can then pair `database_of(request, "reporting")` with descriptors imported
1467
+ from `generated.reporting.tables`. Generation happens before server startup,
1468
+ never inside a worker.
1469
+
1400
1470
  A database that fails to open takes the worker down, and the ones already open
1401
1471
  are given back first. Every one a worker opened is closed when it stops.
1402
1472
 
@@ -2910,6 +2980,8 @@ pyoq --version
2910
2980
  pyoq generate --project-root .
2911
2981
  pyoq generate --project-root . --check
2912
2982
  pyoq generate --project-root . --dry-run
2983
+ pyoq generate --project-root . --profile reporting
2984
+ pyoq generate --project-root . --all-profiles
2913
2985
  pyoq inspect --project-root .
2914
2986
  ```
2915
2987
 
@@ -2917,6 +2989,12 @@ Both database commands accept `--config` for a configuration file below the
2917
2989
  project root and `--profile` for explicit profile selection. `--check` and
2918
2990
  `--dry-run` are mutually exclusive.
2919
2991
 
2992
+ Generation defaults to one flat package. Set `codegen-layout = "profiles"` to
2993
+ treat `codegen-directory` and `codegen-package` as bases, then give any profile
2994
+ a `codegen-name` when its profile name is not the desired Python package
2995
+ segment. `--all-profiles` prepares every schema first and atomically publishes
2996
+ all changed profile packages. It cannot be combined with `--profile`.
2997
+
2920
2998
  Command exit codes are stable:
2921
2999
 
2922
3000
  - `0`: success
@@ -2931,7 +3009,7 @@ primary and unique keys, indexes, CHECK constraints, and foreign-key
2931
3009
  relationships. Metadata is normalized before rendering, and the connection is
2932
3010
  closed before generated files are checked or written.
2933
3011
 
2934
- Generation writes six deterministic, fully typed modules and an ownership
3012
+ Generation writes eight deterministic, fully typed modules and an ownership
2935
3013
  manifest into `codegen-directory`. Repeating a write against an unchanged
2936
3014
  database leaves the generated directory untouched. `--check` fails on drift,
2937
3015
  while `--dry-run` reports planned creation, update, removal, and conflict counts
@@ -8,6 +8,15 @@ import { remarkLicence } from "./src/remark-licence.mjs";
8
8
  import { remarkMermaid } from "./src/remark-mermaid.mjs";
9
9
  import { remarkPairs } from "./src/remark-pairs.mjs";
10
10
 
11
+ const base = process.env.DOCS_BASE ?? "/";
12
+
13
+ /** Astro puts the base in front of where a redirect comes from, not where it
14
+ * goes, so the destination is built from the same value the rest of the site
15
+ * is. Written plainly it would send a reader to a path the host does not
16
+ * serve. */
17
+ /** @param {string} path */
18
+ const under = (path) => `${base}/${path}`.replace(/\/{2,}/g, "/");
19
+
11
20
  // The site is a directory of files when it is built, so it works from a
12
21
  // bucket, a static host, or a laptop without anything running behind it.
13
22
  export default defineConfig({
@@ -19,6 +28,10 @@ export default defineConfig({
19
28
  site: process.env.DOCS_SITE,
20
29
  base: process.env.DOCS_BASE ?? "/",
21
30
  build: { format: "directory" },
31
+ // The reference index was published at its old address before it moved into
32
+ // the API section. A link that already exists is not a link that can be
33
+ // corrected, so the old address still leads somewhere.
34
+ redirects: { "/reference": under("api/references") },
22
35
  vite: {
23
36
  // The package metadata sits above this directory, and src/project.ts reads
24
37
  // the licence straight out of it.
@@ -2,7 +2,7 @@
2
2
  "name": "pyoq-docs",
3
3
  "private": true,
4
4
  "type": "module",
5
- "version": "1.0.2",
5
+ "version": "1.0.3",
6
6
  "scripts": {
7
7
  "dev": "astro dev",
8
8
  "build": "astro build && pagefind --site dist",
@@ -73,7 +73,7 @@ for every task.
73
73
  | Query limits and observability | `src/pyoq/policies`, `src/pyoq/diagnostics` | [Policies](../policies/) |
74
74
  | Framework lifecycle | `src/pyoq/django`, `src/pyoq/fastapi`, `src/pyoq/sanic` | [Framework routing](#framework-routing) |
75
75
  | Native runtime selection | `src/pyoq/runtime` | [Performance](../performance/) |
76
- | Supported public names | Package `__init__.py` files | [API reference](../reference/) |
76
+ | Supported public names | Package `__init__.py` files | [API reference](../api/references/) |
77
77
 
78
78
  Tests mirror the source layout. Start with the matching directory under
79
79
  `tests`, then inspect `tests/contracts` when behavior must be identical across
@@ -106,6 +106,11 @@ only when the required values have been supplied. Generated files must be
106
106
  changed through the schema model and renderer, never by editing generated
107
107
  output.
108
108
 
109
+ Generation has two layouts. Flat layout writes one package and is the default.
110
+ Profile layout writes one package per database below a shared base. Each has an
111
+ isolated manifest. An all-profile run prepares every schema and publishes the
112
+ base once, so no profile may write before every plan has validated.
113
+
109
114
  See [Generating your types](../generating/), [Inserting rows](../inserting/),
110
115
  and [Updating and deleting](../updating/) for complete application examples.
111
116
 
@@ -184,6 +189,11 @@ Shared reflection, generation, compilation, decoding, pooling, and transaction
184
189
  behavior belongs in the core package. An adapter should translate framework
185
190
  lifecycle and configuration into those shared services.
186
191
 
192
+ Django profile generation maps configured database aliases to core generation
193
+ profiles. One alias owns one generated package and manifest. An all-database
194
+ run must use the shared atomic profile publication path rather than looping
195
+ over single-profile writes.
196
+
187
197
  ## Invariants an agent must preserve
188
198
 
189
199
  - Query trees and schema value objects remain immutable.
@@ -0,0 +1,136 @@
1
+ ---
2
+ title: "Alembic"
3
+ summary: "Keeping the snapshot and the generated package in step with your migrations."
4
+ ---
5
+
6
+ Alembic owns the schema. PyOQ reads it. Nothing about that changes when you use
7
+ both: Alembic writes and applies migrations exactly as it did, and PyOQ needs
8
+ one thing from you, which is to be told when the database has moved.
9
+
10
+ There is no extra to install and no adapter to configure. PyOQ never opens a
11
+ connection through Alembic and never takes part in a migration.
12
+
13
+ ## What has to happen, and in what order
14
+
15
+ After a migration is applied, two things are behind:
16
+
17
+ 1. The recorded schema snapshot, which still describes the old database.
18
+ 2. The generated package, which was generated from that snapshot.
19
+
20
+ They have to catch up in that order, because generation reads the snapshot.
21
+ Doing it the other way regenerates the old package and makes the update look
22
+ complete when it is not.
23
+
24
+ `after_migration_at` does both, in order.
25
+
26
+ ## Where to put it
27
+
28
+ ### In `env.py`, once the migrations have run
29
+
30
+ The project owns `env.py`, so this is the place with the most context.
31
+
32
+ ```python
33
+ from pathlib import Path
34
+
35
+ from alembic import context
36
+ from pyoq.migrations import after_migration_at
37
+
38
+ PROJECT_ROOT = Path(__file__).resolve().parents[2]
39
+
40
+
41
+ def run_migrations_online() -> None:
42
+ connectable = engine_from_config(
43
+ config.get_section(config.config_ini_section, {}),
44
+ prefix="sqlalchemy.",
45
+ poolclass=pool.NullPool,
46
+ )
47
+ with connectable.connect() as connection:
48
+ context.configure(connection=connection, target_metadata=target_metadata)
49
+ with context.begin_transaction():
50
+ context.run_migrations()
51
+
52
+ # The database has moved. Bring the snapshot and the package back in step.
53
+ after_migration_at(PROJECT_ROOT)
54
+ ```
55
+
56
+ Put it after the `with` block, not inside it. Inside, the migration has not
57
+ committed yet, and reflection would read a schema no other connection can see.
58
+
59
+ ### Or as a step of its own
60
+
61
+ ```bash
62
+ alembic upgrade head && pyoq-after-migration
63
+ ```
64
+
65
+ The command takes a project directory, or nothing and uses the working
66
+ directory. `&&` matters: if the upgrade fails there is nothing to catch up to.
67
+
68
+ ## Not as a post-write hook
69
+
70
+ This is the one thing that looks right and is not.
71
+
72
+ ```toml
73
+ # Do not do this.
74
+ [post_write_hooks]
75
+ hooks = pyoq
76
+ pyoq.type = console_scripts
77
+ pyoq.entrypoint = pyoq-after-migration
78
+ ```
79
+
80
+ A post-write hook runs inside `alembic revision`, which **writes a revision
81
+ file**. It does not apply one. The database at that moment is still whatever it
82
+ was, so recording the schema there records the schema the migration is about to
83
+ replace, and generates from it. The package would then describe the old
84
+ database while the migration sits unapplied.
85
+
86
+ Alembic hands a hook the file it has just written, and that is how PyOQ notices:
87
+ being given a file rather than a directory is refused, with a message saying
88
+ so, rather than quietly recording the wrong schema.
89
+
90
+ ## What you get back
91
+
92
+ ```python
93
+ outcome = after_migration_at(PROJECT_ROOT)
94
+ print(outcome.describe())
95
+ ```
96
+
97
+ `MigrationOutcome` carries what each step reported, as `recorded` and
98
+ `generated`, and `describe()` puts both on one line worth logging.
99
+
100
+ If your project has more than one profile, name the one the migration touched:
101
+
102
+ ```python
103
+ after_migration_at(PROJECT_ROOT, selected_profile="primary")
104
+ ```
105
+
106
+ A caller that already holds a `Configuration` can use
107
+ [`after_migration`](../api/migrations/) instead, which takes it directly.
108
+
109
+ ## In a pipeline
110
+
111
+ Where production has no credentials and no code generation, make the snapshot
112
+ and the generated package build artifacts instead:
113
+
114
+ 1. Apply the migration in an integration environment.
115
+ 2. Run `pyoq-after-migration`, or the hook from `env.py`.
116
+ 3. Run `pyoq drift` and `pyoq generate --check`.
117
+ 4. Run the type checks and the tests.
118
+ 5. Ship the reviewed package and snapshot.
119
+
120
+ Steps 3 and 4 are what catch a migration that changed something the code did
121
+ not expect: `--check` fails when the generated package is not what the schema
122
+ now implies, and the type checker fails where code still reads a column that
123
+ moved.
124
+
125
+ ## What can go wrong
126
+
127
+ | Symptom | Cause |
128
+ | --- | --- |
129
+ | The hook refuses, saying it was given a file | It is wired as a post-write hook. Move it after `alembic upgrade`. |
130
+ | The snapshot records the pre-migration schema | The call sits inside the `begin_transaction()` block, before the commit. |
131
+ | `pyoq generate --check` fails in CI after a migration | The catch-up step did not run, or ran before the upgrade. |
132
+ | The package regenerated but is unchanged | Generation ran before the snapshot was re-recorded. `after_migration_at` does both in the right order. |
133
+
134
+ See [Migration lifecycle](../migrations/) for the same ground without Alembic,
135
+ and [pyoq commands](../api/commands/) for what `pyoq-after-migration` exits
136
+ with.
@@ -0,0 +1,79 @@
1
+ ---
2
+ title: "pyoq.cli"
3
+ summary: "Running the command line from Python, and what each exit code means."
4
+ ---
5
+
6
+ The command line as a Python entry point. [Command line](../../cli/) covers the
7
+ commands themselves and their arguments; this is how to invoke them from code,
8
+ which is what a test or a wrapper script wants.
9
+
10
+ The package installs two commands, `pyoq` and `pyoq-after-migration`, and
11
+ `python -m pyoq` runs the same thing through `pyoq.__main__`.
12
+
13
+ ## `main`
14
+
15
+ ```python
16
+ main(
17
+ arguments: Sequence[str] | None = None,
18
+ *,
19
+ services: CommandServices | None = None,
20
+ output: IO[str] | None = None,
21
+ error: IO[str] | None = None,
22
+ ) -> int
23
+ ```
24
+
25
+ Runs one command and **returns** its exit code rather than exiting, which is
26
+ what makes it usable from a test.
27
+
28
+ | Argument | What it is for |
29
+ | --- | --- |
30
+ | `arguments` | The words after `pyoq`. Omitted, it reads `sys.argv`. |
31
+ | `services` | The services the command runs against, so a test can supply its own. |
32
+ | `output` | Where ordinary output goes. Defaults to standard output. |
33
+ | `error` | Where errors go. Defaults to standard error. |
34
+
35
+ ```python
36
+ from pyoq.cli import ExitCode, main
37
+
38
+ assert main(["generate", "--check"]) == ExitCode.SUCCESS
39
+ ```
40
+
41
+ ## `run`
42
+
43
+ ```python
44
+ run(arguments: Sequence[str] | None = None) -> NoReturn
45
+ ```
46
+
47
+ The same, but exits the process with that code rather than returning it. This
48
+ is what the installed `pyoq` command calls, and it never returns.
49
+
50
+ ## `CommandServices`
51
+
52
+ *dataclass* — what a command runs against, in `pyoq.cli.services`. Passing your
53
+ own is how a test drives a command without a database.
54
+
55
+ | Field | What it does |
56
+ | --- | --- |
57
+ | `generation` | Runs `generate`. |
58
+ | `inspection` | Runs `inspect`. |
59
+ | `snapshot` | Runs `snapshot`. |
60
+ | `drift` | Runs `drift`. |
61
+
62
+ The same type is accepted by [`after_migration`](../migrations/), which runs
63
+ two of those steps.
64
+
65
+ ## `ExitCode`
66
+
67
+ *enum of `int`* — what the process exits with, so a shell can tell one failure
68
+ from another.
69
+
70
+ | Member | Value | Means |
71
+ | --- | --- | --- |
72
+ | `SUCCESS` | `0` | The command did what was asked. |
73
+ | `COMMAND_FAILED` | `1` | It ran and reported a failure, such as generated output being out of date. |
74
+ | `USAGE` | `2` | The arguments were wrong. |
75
+ | `CONFIGURATION` | `3` | Configuration was missing, unreadable, or invalid. |
76
+ | `UNAVAILABLE` | `4` | The command is not available for this dialect or this build. |
77
+
78
+ Because the members are integers, `main(...) == 0` works, and a shell reading
79
+ `$?` sees the same numbers.