pyoq-sql 1.0.0__tar.gz → 1.0.2__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 (669) hide show
  1. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/Cargo.lock +1 -1
  2. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/Cargo.toml +1 -1
  3. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/PKG-INFO +32 -16
  4. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/README.md +27 -15
  5. pyoq_sql-1.0.2/docs/web/README.md +83 -0
  6. pyoq_sql-1.0.2/docs/web/astro.config.mjs +50 -0
  7. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/bun.lock +16 -1
  8. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/package.json +4 -0
  9. pyoq_sql-1.0.2/docs/web/public/brand/pyoq-banner.png +0 -0
  10. pyoq_sql-1.0.2/docs/web/public/brand/pyoq-banner.svg +51 -0
  11. pyoq_sql-1.0.2/docs/web/public/brand/pyoq-favicon-32.png +0 -0
  12. pyoq_sql-1.0.2/docs/web/public/brand/pyoq-mark-180.png +0 -0
  13. pyoq_sql-1.0.2/docs/web/public/brand/pyoq-mark-512.png +0 -0
  14. pyoq_sql-1.0.2/docs/web/public/brand/pyoq-mark.svg +15 -0
  15. pyoq_sql-1.0.2/docs/web/src/code-head.mjs +49 -0
  16. pyoq_sql-1.0.2/docs/web/src/components/AppearanceToggle.astro +19 -0
  17. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/components/Assumed.astro +2 -2
  18. pyoq_sql-1.0.2/docs/web/src/components/Brand.astro +27 -0
  19. pyoq_sql-1.0.2/docs/web/src/components/CodeCopy.astro +38 -0
  20. pyoq_sql-1.0.2/docs/web/src/components/CodeEditors.astro +171 -0
  21. pyoq_sql-1.0.2/docs/web/src/components/Diagrams.astro +267 -0
  22. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/components/Pager.astro +2 -3
  23. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/components/Search.astro +11 -4
  24. pyoq_sql-1.0.2/docs/web/src/components/Sidebar.astro +116 -0
  25. pyoq_sql-1.0.2/docs/web/src/components/SiteHead.astro +157 -0
  26. pyoq_sql-1.0.2/docs/web/src/content/docs/agents.md +281 -0
  27. pyoq_sql-1.0.2/docs/web/src/content/docs/async.md +121 -0
  28. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/bulk.md +6 -2
  29. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/cli.md +24 -3
  30. pyoq_sql-1.0.2/docs/web/src/content/docs/configuration.md +262 -0
  31. pyoq_sql-1.0.2/docs/web/src/content/docs/connections.md +187 -0
  32. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/django.md +14 -0
  33. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/errors.md +19 -0
  34. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/expressions.md +2 -2
  35. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/fastapi.md +4 -2
  36. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/first-query.md +32 -63
  37. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/generating.md +50 -6
  38. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/inserting.md +11 -3
  39. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/installing.md +50 -2
  40. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/joins.md +63 -3
  41. pyoq_sql-1.0.2/docs/web/src/content/docs/licence.md +17 -0
  42. pyoq_sql-1.0.2/docs/web/src/content/docs/migrations.md +116 -0
  43. pyoq_sql-1.0.2/docs/web/src/content/docs/mysql-application.md +425 -0
  44. pyoq_sql-1.0.0/docs/web/src/content/docs/index.md → pyoq_sql-1.0.2/docs/web/src/content/docs/overview.md +13 -3
  45. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/performance.md +42 -1
  46. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/reference.md +3 -3
  47. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/releasing.md +1 -1
  48. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/results.md +3 -1
  49. pyoq_sql-1.0.2/docs/web/src/content/docs/routines.md +111 -0
  50. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/sanic.md +3 -1
  51. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/security.md +9 -6
  52. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/selecting.md +10 -7
  53. pyoq_sql-1.0.2/docs/web/src/content/docs/serving.md +69 -0
  54. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/snapshots.md +4 -45
  55. pyoq_sql-1.0.2/docs/web/src/content/docs/testing.md +125 -0
  56. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/transactions.md +42 -68
  57. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/troubleshooting.md +11 -0
  58. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/types.md +15 -4
  59. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/updating.md +19 -0
  60. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/when-to-use.md +6 -4
  61. pyoq_sql-1.0.2/docs/web/src/layouts/Doc.astro +75 -0
  62. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/layouts/app.css +649 -52
  63. pyoq_sql-1.0.2/docs/web/src/layouts/landing.css +687 -0
  64. pyoq_sql-1.0.2/docs/web/src/links.ts +33 -0
  65. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/nav.ts +48 -2
  66. pyoq_sql-1.0.2/docs/web/src/pages/404.astro +88 -0
  67. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/pages/[slug].astro +1 -1
  68. pyoq_sql-1.0.2/docs/web/src/pages/index.astro +272 -0
  69. pyoq_sql-1.0.2/docs/web/src/pages/sitemap.xml.ts +34 -0
  70. pyoq_sql-1.0.2/docs/web/src/project.ts +31 -0
  71. pyoq_sql-1.0.2/docs/web/src/remark-base.mjs +34 -0
  72. pyoq_sql-1.0.2/docs/web/src/remark-code-shell.mjs +54 -0
  73. pyoq_sql-1.0.2/docs/web/src/remark-licence.mjs +33 -0
  74. pyoq_sql-1.0.2/docs/web/src/remark-mermaid.mjs +103 -0
  75. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/remark-pairs.mjs +5 -15
  76. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/pyproject.toml +11 -1
  77. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/scripts/verify_sdist.py +6 -2
  78. pyoq_sql-1.0.2/src/pyoq/__init__.py +10 -0
  79. pyoq_sql-1.0.2/src/pyoq/config/__init__.py +31 -0
  80. pyoq_sql-1.0.2/src/pyoq/config/connection.py +161 -0
  81. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/config/loader.py +86 -1
  82. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/config/models.py +52 -50
  83. pyoq_sql-1.0.2/src/pyoq/config/values.py +142 -0
  84. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/connection.py +4 -3
  85. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/connection.py +4 -3
  86. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/connection.py +4 -4
  87. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/serving/__init__.py +4 -0
  88. pyoq_sql-1.0.2/src/pyoq/serving/opening.py +331 -0
  89. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/config/test_config.py +368 -0
  90. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/distribution/test_ci_contract.py +16 -9
  91. pyoq_sql-1.0.2/tests/distribution/test_mysql_application_guide.py +58 -0
  92. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/distribution/test_one_source_of_versions.py +12 -6
  93. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/distribution/test_public_attribution.py +8 -2
  94. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/distribution/test_verify_sdist.py +7 -4
  95. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/schema/mysql/test_reflection.py +1 -1
  96. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/schema/postgres/test_reflection.py +1 -1
  97. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/schema/sqlite/test_source.py +13 -0
  98. pyoq_sql-1.0.2/tests/serving/__init__.py +1 -0
  99. pyoq_sql-1.0.2/tests/serving/test_opening.py +382 -0
  100. pyoq_sql-1.0.2/tests/serving/test_opening_servers.py +89 -0
  101. pyoq_sql-1.0.2/typings/cognitive_complexity/__init__.pyi +0 -0
  102. pyoq_sql-1.0.0/docs/web/README.md +0 -46
  103. pyoq_sql-1.0.0/docs/web/astro.config.mjs +0 -30
  104. pyoq_sql-1.0.0/docs/web/src/components/Sidebar.astro +0 -44
  105. pyoq_sql-1.0.0/docs/web/src/content/docs/configuration.md +0 -94
  106. pyoq_sql-1.0.0/docs/web/src/content/docs/serving.md +0 -74
  107. pyoq_sql-1.0.0/docs/web/src/layouts/Doc.astro +0 -89
  108. pyoq_sql-1.0.0/docs/web/src/pages/index.astro +0 -13
  109. pyoq_sql-1.0.0/src/pyoq/__init__.py +0 -7
  110. pyoq_sql-1.0.0/src/pyoq/config/__init__.py +0 -19
  111. pyoq_sql-1.0.0/tests/distribution/test_documentation.py +0 -126
  112. pyoq_sql-1.0.0/tests/distribution/test_documentation_imports.py +0 -69
  113. pyoq_sql-1.0.0/tests/distribution/test_documentation_links.py +0 -80
  114. pyoq_sql-1.0.0/tests/distribution/test_documentation_pairs.py +0 -158
  115. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/.gitignore +0 -0
  116. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/LICENSE +0 -0
  117. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/benchmarks/__init__.py +0 -0
  118. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/benchmarks/bulk_planning.py +0 -0
  119. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/benchmarks/fetch_execution.py +0 -0
  120. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/benchmarks/hydration.py +0 -0
  121. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/benchmarks/observability.py +0 -0
  122. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/benchmarks/performance_contract.py +0 -0
  123. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/django.md +0 -0
  124. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/.gitignore +0 -0
  125. /pyoq_sql-1.0.0/examples/django_project/__init__.py → /pyoq_sql-1.0.2/docs/web/public/.nojekyll +0 -0
  126. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/components/Contents.astro +0 -0
  127. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/conflicts.md +0 -0
  128. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/diagnostics.md +0 -0
  129. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/dialects.md +0 -0
  130. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/policies.md +0 -0
  131. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content/docs/relations.md +0 -0
  132. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/src/content.config.ts +0 -0
  133. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/docs/web/tsconfig.json +0 -0
  134. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/__init__.py +0 -0
  135. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/bulk_writes.py +0 -0
  136. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_integration.py +0 -0
  137. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/README.md +0 -0
  138. {pyoq_sql-1.0.0/examples/django_project/analytics → pyoq_sql-1.0.2/examples/django_project}/__init__.py +0 -0
  139. {pyoq_sql-1.0.0/examples/django_project/analytics/migrations → pyoq_sql-1.0.2/examples/django_project/analytics}/__init__.py +0 -0
  140. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/analytics/admin.py +0 -0
  141. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/analytics/apps.py +0 -0
  142. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/analytics/migrations/0001_initial.py +0 -0
  143. {pyoq_sql-1.0.0/examples/django_project/catalog → pyoq_sql-1.0.2/examples/django_project/analytics/migrations}/__init__.py +0 -0
  144. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/analytics/models.py +0 -0
  145. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/analytics/queries.py +0 -0
  146. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/analytics/urls.py +0 -0
  147. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/analytics/views.py +0 -0
  148. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/asgi.py +0 -0
  149. {pyoq_sql-1.0.0/examples/django_project/catalog/migrations → pyoq_sql-1.0.2/examples/django_project/catalog}/__init__.py +0 -0
  150. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/catalog/admin.py +0 -0
  151. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/catalog/apps.py +0 -0
  152. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/catalog/migrations/0001_initial.py +0 -0
  153. {pyoq_sql-1.0.0/src/pyoq/django/management → pyoq_sql-1.0.2/examples/django_project/catalog/migrations}/__init__.py +0 -0
  154. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/catalog/models.py +0 -0
  155. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/catalog/queries.py +0 -0
  156. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/catalog/templates/catalog/title_detail.html +0 -0
  157. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/catalog/urls.py +0 -0
  158. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/catalog/views.py +0 -0
  159. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/manage.py +0 -0
  160. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/routers.py +0 -0
  161. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/settings.py +0 -0
  162. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/urls.py +0 -0
  163. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/django_project/wsgi.py +0 -0
  164. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/dsl_context.py +0 -0
  165. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/expressions.py +0 -0
  166. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/fastapi_application.py +0 -0
  167. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/fetch_plans.py +0 -0
  168. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/generated_types.py +0 -0
  169. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/generation_pipeline.py +0 -0
  170. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/mysql_execution.py +0 -0
  171. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/nested_collections.py +0 -0
  172. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/observability.py +0 -0
  173. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/policies.py +0 -0
  174. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/postgres_execution.py +0 -0
  175. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/relation_model.py +0 -0
  176. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/sanic_application.py +0 -0
  177. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/select_queries.py +0 -0
  178. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/sqlite_compilation.py +0 -0
  179. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/sqlite_execution.py +0 -0
  180. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/sqlite_generation.py +0 -0
  181. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/sqlite_transactions.py +0 -0
  182. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/typed_inserts.py +0 -0
  183. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/typed_updates.py +0 -0
  184. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/examples/typed_upserts.py +0 -0
  185. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/rust/lib.rs +0 -0
  186. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/rust-toolchain.toml +0 -0
  187. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/scripts/__init__.py +0 -0
  188. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/scripts/example_requirements.py +0 -0
  189. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/scripts/examples.py +0 -0
  190. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/scripts/run_examples.py +0 -0
  191. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/scripts/verify_wheels.py +0 -0
  192. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/__main__.py +0 -0
  193. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/_native.pyi +0 -0
  194. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/cli/__init__.py +0 -0
  195. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/cli/commands.py +0 -0
  196. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/cli/defaults.py +0 -0
  197. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/cli/services.py +0 -0
  198. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/descriptors.py +0 -0
  199. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/__init__.py +0 -0
  200. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/budget.py +0 -0
  201. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/events.py +0 -0
  202. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/fingerprint.py +0 -0
  203. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/instrumented.py +0 -0
  204. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/metrics.py +0 -0
  205. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/observation.py +0 -0
  206. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/scoped.py +0 -0
  207. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/django/__init__.py +0 -0
  208. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/django/apps.py +0 -0
  209. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/django/execution.py +0 -0
  210. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/django/generation.py +0 -0
  211. {pyoq_sql-1.0.0/src/pyoq/django/management/commands → pyoq_sql-1.0.2/src/pyoq/django/management}/__init__.py +0 -0
  212. {pyoq_sql-1.0.0/tests/architecture → pyoq_sql-1.0.2/src/pyoq/django/management/commands}/__init__.py +0 -0
  213. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/django/management/commands/makemigrations.py +0 -0
  214. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/django/management/commands/pyoq_codegen.py +0 -0
  215. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/django/parameters.py +0 -0
  216. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/django/schema.py +0 -0
  217. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/django/settings.py +0 -0
  218. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/django/timeouts.py +0 -0
  219. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/dsl/__init__.py +0 -0
  220. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/dsl/aio/__init__.py +0 -0
  221. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/dsl/aio/context.py +0 -0
  222. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/dsl/aio/queries.py +0 -0
  223. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/dsl/aio/writes.py +0 -0
  224. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/dsl/context.py +0 -0
  225. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/dsl/entry.py +0 -0
  226. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/dsl/labels.py +0 -0
  227. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/dsl/queries.py +0 -0
  228. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/dsl/result.py +0 -0
  229. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/dsl/writes.py +0 -0
  230. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/errors.py +0 -0
  231. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/fastapi/__init__.py +0 -0
  232. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/fastapi/dependencies.py +0 -0
  233. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/fastapi/lifespan.py +0 -0
  234. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/fetching/__init__.py +0 -0
  235. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/fetching/collections.py +0 -0
  236. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/fetching/execution.py +0 -0
  237. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/fetching/joined.py +0 -0
  238. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/fetching/nesting.py +0 -0
  239. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/fetching/plans.py +0 -0
  240. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/fetching/select_in.py +0 -0
  241. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/fetching/tables.py +0 -0
  242. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/__init__.py +0 -0
  243. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/cleanup.py +0 -0
  244. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/contracts.py +0 -0
  245. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/drift.py +0 -0
  246. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/lock.py +0 -0
  247. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/manifest.py +0 -0
  248. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/model.py +0 -0
  249. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/pipeline.py +0 -0
  250. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/__init__.py +0 -0
  251. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/domains.py +0 -0
  252. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/enums.py +0 -0
  253. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/exports.py +0 -0
  254. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/imports.py +0 -0
  255. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/package.py +0 -0
  256. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/relations.py +0 -0
  257. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/routines.py +0 -0
  258. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/rows.py +0 -0
  259. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/source.py +0 -0
  260. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/tables.py +0 -0
  261. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/writes.py +0 -0
  262. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/validation.py +0 -0
  263. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/generation/writer.py +0 -0
  264. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/hydration/__init__.py +0 -0
  265. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/hydration/engine.py +0 -0
  266. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/hydration/identity.py +0 -0
  267. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/hydration/plan.py +0 -0
  268. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/migrations/__init__.py +0 -0
  269. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/migrations/alembic.py +0 -0
  270. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/migrations/hooks.py +0 -0
  271. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/naming.py +0 -0
  272. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/policies/__init__.py +0 -0
  273. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/policies/bypass.py +0 -0
  274. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/policies/governed.py +0 -0
  275. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/policies/model.py +0 -0
  276. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/policies/rewriting.py +0 -0
  277. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/py.typed +0 -0
  278. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/__init__.py +0 -0
  279. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/aggregates.py +0 -0
  280. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/arrays.py +0 -0
  281. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/binding.py +0 -0
  282. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/capabilities.py +0 -0
  283. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/casts.py +0 -0
  284. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/choices.py +0 -0
  285. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/decoding.py +0 -0
  286. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/documents.py +0 -0
  287. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/execution/__init__.py +0 -0
  288. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/execution/aio/__init__.py +0 -0
  289. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/execution/aio/operations.py +0 -0
  290. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/execution/aio/pooling.py +0 -0
  291. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/execution/aio/streaming.py +0 -0
  292. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/execution/aio/transactions.py +0 -0
  293. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/execution/batch.py +0 -0
  294. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/execution/binding_style.py +0 -0
  295. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/execution/compilation.py +0 -0
  296. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/execution/context.py +0 -0
  297. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/execution/control.py +0 -0
  298. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/execution/operations.py +0 -0
  299. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/execution/planning.py +0 -0
  300. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/execution/pooling.py +0 -0
  301. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/execution/results.py +0 -0
  302. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/execution/streaming.py +0 -0
  303. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/execution/transactions.py +0 -0
  304. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/expressions.py +0 -0
  305. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/fields.py +0 -0
  306. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/__init__.py +0 -0
  307. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/__init__.py +0 -0
  308. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/commands.py +0 -0
  309. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/driver.py +0 -0
  310. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/executor.py +0 -0
  311. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/factory.py +0 -0
  312. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/operations.py +0 -0
  313. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/pool.py +0 -0
  314. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/transactions.py +0 -0
  315. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/commands.py +0 -0
  316. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/compiler.py +0 -0
  317. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/context.py +0 -0
  318. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/executor.py +0 -0
  319. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/expressions.py +0 -0
  320. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/factory.py +0 -0
  321. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/health.py +0 -0
  322. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/identifiers.py +0 -0
  323. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/model.py +0 -0
  324. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/operations.py +0 -0
  325. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/parameters.py +0 -0
  326. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/planning.py +0 -0
  327. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/pool.py +0 -0
  328. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/transactions.py +0 -0
  329. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/writes.py +0 -0
  330. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/nodes.py +0 -0
  331. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/__init__.py +0 -0
  332. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/__init__.py +0 -0
  333. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/bulk.py +0 -0
  334. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/commands.py +0 -0
  335. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/executor.py +0 -0
  336. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/factory.py +0 -0
  337. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/operations.py +0 -0
  338. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/pool.py +0 -0
  339. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/transactions.py +0 -0
  340. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/bulk.py +0 -0
  341. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/commands.py +0 -0
  342. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/compiler.py +0 -0
  343. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/context.py +0 -0
  344. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/executor.py +0 -0
  345. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/expressions.py +0 -0
  346. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/factory.py +0 -0
  347. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/health.py +0 -0
  348. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/identifiers.py +0 -0
  349. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/model.py +0 -0
  350. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/operations.py +0 -0
  351. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/parameters.py +0 -0
  352. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/planning.py +0 -0
  353. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/pool.py +0 -0
  354. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/transactions.py +0 -0
  355. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/writes.py +0 -0
  356. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/projections.py +0 -0
  357. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/raw.py +0 -0
  358. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/recursion.py +0 -0
  359. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/__init__.py +0 -0
  360. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/expressions.py +0 -0
  361. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/identifiers.py +0 -0
  362. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/projections.py +0 -0
  363. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/queries.py +0 -0
  364. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/sources.py +0 -0
  365. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/writes.py +0 -0
  366. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/results.py +0 -0
  367. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/routines.py +0 -0
  368. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/rows.py +0 -0
  369. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/select.py +0 -0
  370. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/select_nodes.py +0 -0
  371. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/sources.py +0 -0
  372. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/__init__.py +0 -0
  373. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/commands.py +0 -0
  374. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/compiler.py +0 -0
  375. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/context.py +0 -0
  376. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/executor.py +0 -0
  377. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/expressions.py +0 -0
  378. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/factory.py +0 -0
  379. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/health.py +0 -0
  380. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/identifiers.py +0 -0
  381. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/model.py +0 -0
  382. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/operations.py +0 -0
  383. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/parameters.py +0 -0
  384. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/planning.py +0 -0
  385. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/pool.py +0 -0
  386. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/streaming.py +0 -0
  387. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/transactions.py +0 -0
  388. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/writes.py +0 -0
  389. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/statements.py +0 -0
  390. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/values.py +0 -0
  391. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/vendor.py +0 -0
  392. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/windows.py +0 -0
  393. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/write_nodes.py +0 -0
  394. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/query/writes.py +0 -0
  395. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/relations/__init__.py +0 -0
  396. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/relations/batching.py +0 -0
  397. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/relations/derivation.py +0 -0
  398. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/relations/fetching.py +0 -0
  399. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/relations/graph.py +0 -0
  400. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/relations/loading.py +0 -0
  401. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/relations/model.py +0 -0
  402. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/relations/planning.py +0 -0
  403. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/runtime/__init__.py +0 -0
  404. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/runtime/kernels.py +0 -0
  405. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/runtime/python.py +0 -0
  406. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/runtime/selection.py +0 -0
  407. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/sanic/__init__.py +0 -0
  408. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/sanic/scope.py +0 -0
  409. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/sanic/workers.py +0 -0
  410. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/__init__.py +0 -0
  411. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/codec.py +0 -0
  412. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/models.py +0 -0
  413. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/__init__.py +0 -0
  414. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/dsn.py +0 -0
  415. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/records.py +0 -0
  416. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/reflection.py +0 -0
  417. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/source.py +0 -0
  418. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/sql.py +0 -0
  419. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/types.py +0 -0
  420. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/__init__.py +0 -0
  421. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/records.py +0 -0
  422. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/reflection.py +0 -0
  423. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/source.py +0 -0
  424. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/sql.py +0 -0
  425. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/types.py +0 -0
  426. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/registry.py +0 -0
  427. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/source.py +0 -0
  428. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/__init__.py +0 -0
  429. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/records.py +0 -0
  430. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/reflection.py +0 -0
  431. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/source.py +0 -0
  432. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/sql.py +0 -0
  433. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/types.py +0 -0
  434. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/serving/databases.py +0 -0
  435. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/snapshots/__init__.py +0 -0
  436. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/snapshots/drift.py +0 -0
  437. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/snapshots/files.py +0 -0
  438. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/snapshots/routing.py +0 -0
  439. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/snapshots/source.py +0 -0
  440. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/tracing/__init__.py +0 -0
  441. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/tracing/spans.py +0 -0
  442. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/src/pyoq/unset.py +0 -0
  443. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/__init__.py +0 -0
  444. {pyoq_sql-1.0.0/tests/cli → pyoq_sql-1.0.2/tests/architecture}/__init__.py +0 -0
  445. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/architecture/test_layering.py +0 -0
  446. {pyoq_sql-1.0.0/tests/config → pyoq_sql-1.0.2/tests/cli}/__init__.py +0 -0
  447. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/cli/test_cli.py +0 -0
  448. {pyoq_sql-1.0.0/tests/contracts → pyoq_sql-1.0.2/tests/config}/__init__.py +0 -0
  449. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/conftest.py +0 -0
  450. {pyoq_sql-1.0.0/tests/diagnostics → pyoq_sql-1.0.2/tests/contracts}/__init__.py +0 -0
  451. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/aliasing_contract.py +0 -0
  452. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/array_contract.py +0 -0
  453. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/async_execution_contract.py +0 -0
  454. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/cast_contract.py +0 -0
  455. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/collection_contract.py +0 -0
  456. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/compiler_contract.py +0 -0
  457. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/execution_contract.py +0 -0
  458. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/fetch_contract.py +0 -0
  459. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/joined_contract.py +0 -0
  460. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/json_contract.py +0 -0
  461. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/lateral_contract.py +0 -0
  462. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/locking_contract.py +0 -0
  463. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/null_order_contract.py +0 -0
  464. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/recursion_contract.py +0 -0
  465. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/roundtrip_contract.py +0 -0
  466. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/routine_contract.py +0 -0
  467. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/row_value_contract.py +0 -0
  468. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/select_in_contract.py +0 -0
  469. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/snapshot_contract.py +0 -0
  470. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/support.py +0 -0
  471. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/contracts/window_contract.py +0 -0
  472. {pyoq_sql-1.0.0/tests/distribution → pyoq_sql-1.0.2/tests/diagnostics}/__init__.py +0 -0
  473. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/diagnostics/test_budget.py +0 -0
  474. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/diagnostics/test_events.py +0 -0
  475. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/diagnostics/test_fingerprint.py +0 -0
  476. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/diagnostics/test_instrumented.py +0 -0
  477. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/diagnostics/test_instrumented_aio.py +0 -0
  478. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/diagnostics/test_metrics.py +0 -0
  479. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/diagnostics/test_observation.py +0 -0
  480. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/diagnostics/test_scoped.py +0 -0
  481. {pyoq_sql-1.0.0/tests/django → pyoq_sql-1.0.2/tests/distribution}/__init__.py +0 -0
  482. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/distribution/test_api_reference.py +0 -0
  483. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/distribution/test_capability_documentation.py +0 -0
  484. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/distribution/test_cognitive_complexity.py +0 -0
  485. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/distribution/test_every_example_runs.py +0 -0
  486. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/distribution/test_examples_run.py +0 -0
  487. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/distribution/test_fetch_execution_contract.py +0 -0
  488. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/distribution/test_hydration_contract.py +0 -0
  489. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/distribution/test_performance_contract.py +0 -0
  490. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/distribution/test_run_examples.py +0 -0
  491. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/distribution/test_verify_wheels.py +0 -0
  492. {pyoq_sql-1.0.0/tests/django/catalog → pyoq_sql-1.0.2/tests/django}/__init__.py +0 -0
  493. {pyoq_sql-1.0.0/tests/django/catalog/migrations → pyoq_sql-1.0.2/tests/django/catalog}/__init__.py +0 -0
  494. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/django/catalog/apps.py +0 -0
  495. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/django/catalog/fields.py +0 -0
  496. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/django/catalog/migrations/0001_initial.py +0 -0
  497. {pyoq_sql-1.0.0/tests/dsl → pyoq_sql-1.0.2/tests/django/catalog/migrations}/__init__.py +0 -0
  498. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/django/catalog/models.py +0 -0
  499. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/django/conftest.py +0 -0
  500. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/django/routing.py +0 -0
  501. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/django/test_example.py +0 -0
  502. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/django/test_execution.py +0 -0
  503. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/django/test_generation.py +0 -0
  504. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/django/test_generation_equivalence.py +0 -0
  505. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/django/test_makemigrations.py +0 -0
  506. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/django/test_parameters.py +0 -0
  507. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/django/test_settings.py +0 -0
  508. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/django/test_timeouts.py +0 -0
  509. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/django/test_transactions.py +0 -0
  510. {pyoq_sql-1.0.0/tests/fastapi → pyoq_sql-1.0.2/tests/dsl}/__init__.py +0 -0
  511. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/dsl/aio_support.py +0 -0
  512. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/dsl/conftest.py +0 -0
  513. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/dsl/test_aio.py +0 -0
  514. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/dsl/test_aio_writes.py +0 -0
  515. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/dsl/test_context.py +0 -0
  516. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/dsl/test_queries.py +0 -0
  517. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/dsl/test_result.py +0 -0
  518. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/dsl/test_writes.py +0 -0
  519. {pyoq_sql-1.0.0/tests/fetching → pyoq_sql-1.0.2/tests/fastapi}/__init__.py +0 -0
  520. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/fastapi/conftest.py +0 -0
  521. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/fastapi/test_async_routes.py +0 -0
  522. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/fastapi/test_lifespan.py +0 -0
  523. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/fastapi/test_routes.py +0 -0
  524. {pyoq_sql-1.0.0/tests/generation → pyoq_sql-1.0.2/tests/fetching}/__init__.py +0 -0
  525. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/fetching/test_collection_execution.py +0 -0
  526. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/fetching/test_collections.py +0 -0
  527. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/fetching/test_dialect_aliasing.py +0 -0
  528. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/fetching/test_dialect_fetching.py +0 -0
  529. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/fetching/test_dialect_fetching_aio.py +0 -0
  530. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/fetching/test_execution.py +0 -0
  531. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/fetching/test_joined.py +0 -0
  532. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/fetching/test_joined_fetch.py +0 -0
  533. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/fetching/test_multi_schema_relations.py +0 -0
  534. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/fetching/test_nesting.py +0 -0
  535. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/fetching/test_plans.py +0 -0
  536. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/fetching/test_select_in.py +0 -0
  537. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/fetching/test_select_in_reduction.py +0 -0
  538. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/fetching/test_typed_rows.py +0 -0
  539. {pyoq_sql-1.0.0/tests/hydration → pyoq_sql-1.0.2/tests/generation}/__init__.py +0 -0
  540. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/generation/test_contracts.py +0 -0
  541. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/generation/test_filesystem.py +0 -0
  542. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/generation/test_generated_overloads.py +0 -0
  543. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/generation/test_generated_package_imports.py +0 -0
  544. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/generation/test_generated_relations.py +0 -0
  545. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/generation/test_generated_result_types.py +0 -0
  546. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/generation/test_generated_types.py +0 -0
  547. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/generation/test_manifest.py +0 -0
  548. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/generation/test_pipeline.py +0 -0
  549. {pyoq_sql-1.0.0/tests/policies → pyoq_sql-1.0.2/tests/hydration}/__init__.py +0 -0
  550. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/hydration/test_engine.py +0 -0
  551. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/hydration/test_engine_properties.py +0 -0
  552. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/hydration/test_identity.py +0 -0
  553. {pyoq_sql-1.0.0/tests/query → pyoq_sql-1.0.2/tests/policies}/__init__.py +0 -0
  554. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/policies/test_adapters.py +0 -0
  555. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/policies/test_isolation.py +0 -0
  556. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/policies/test_isolation_aio.py +0 -0
  557. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/policies/test_no_bypass.py +0 -0
  558. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/policies/test_rewriting.py +0 -0
  559. {pyoq_sql-1.0.0/tests/query/mysql → pyoq_sql-1.0.2/tests/query}/__init__.py +0 -0
  560. {pyoq_sql-1.0.0/tests/query/mysql/aio → pyoq_sql-1.0.2/tests/query/mysql}/__init__.py +0 -0
  561. {pyoq_sql-1.0.0/tests/query/postgres → pyoq_sql-1.0.2/tests/query/mysql/aio}/__init__.py +0 -0
  562. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/mysql/aio/test_driver_failures.py +0 -0
  563. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/mysql/aio/test_execution.py +0 -0
  564. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/mysql/aio/test_read_throughput.py +0 -0
  565. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/mysql/test_compiler.py +0 -0
  566. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/mysql/test_driver_failures.py +0 -0
  567. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/mysql/test_driver_recovery.py +0 -0
  568. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/mysql/test_execution.py +0 -0
  569. {pyoq_sql-1.0.0/tests/query/postgres/aio → pyoq_sql-1.0.2/tests/query/postgres}/__init__.py +0 -0
  570. {pyoq_sql-1.0.0/tests/query/sqlite → pyoq_sql-1.0.2/tests/query/postgres/aio}/__init__.py +0 -0
  571. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/postgres/aio/test_driver_failures.py +0 -0
  572. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/postgres/aio/test_execution.py +0 -0
  573. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/postgres/aio/test_final_paths.py +0 -0
  574. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/postgres/aio/test_lifecycle.py +0 -0
  575. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/postgres/aio/test_state_guards.py +0 -0
  576. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/postgres/test_command_translation.py +0 -0
  577. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/postgres/test_compiler.py +0 -0
  578. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/postgres/test_driver_failures.py +0 -0
  579. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/postgres/test_driver_recovery.py +0 -0
  580. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/postgres/test_execution.py +0 -0
  581. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/postgres/test_pipeline_bulk.py +0 -0
  582. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/postgres/test_transaction_lifecycle.py +0 -0
  583. {pyoq_sql-1.0.0/tests/query/writes → pyoq_sql-1.0.2/tests/query/sqlite}/__init__.py +0 -0
  584. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/sqlite/test_bulk_execution.py +0 -0
  585. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/sqlite/test_compiler.py +0 -0
  586. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/sqlite/test_control.py +0 -0
  587. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/sqlite/test_dialect_contracts.py +0 -0
  588. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/sqlite/test_executor.py +0 -0
  589. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/sqlite/test_pool.py +0 -0
  590. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/sqlite/test_streaming.py +0 -0
  591. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/sqlite/test_transactions.py +0 -0
  592. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_advanced_types.py +0 -0
  593. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_arrays.py +0 -0
  594. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_binding.py +0 -0
  595. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_capabilities.py +0 -0
  596. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_casts.py +0 -0
  597. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_choices.py +0 -0
  598. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_collection_execution.py +0 -0
  599. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_collection_rendering.py +0 -0
  600. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_decoding.py +0 -0
  601. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_expressions.py +0 -0
  602. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_json.py +0 -0
  603. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_locking.py +0 -0
  604. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_parameter_styles.py +0 -0
  605. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_recursion.py +0 -0
  606. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_results.py +0 -0
  607. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_routines.py +0 -0
  608. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_rows.py +0 -0
  609. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_select_queries.py +0 -0
  610. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_vendor.py +0 -0
  611. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_watchdog_cancellation.py +0 -0
  612. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/test_windows.py +0 -0
  613. {pyoq_sql-1.0.0/tests/relations → pyoq_sql-1.0.2/tests/query/writes}/__init__.py +0 -0
  614. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/writes/test_insert_statements.py +0 -0
  615. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/writes/test_update_delete_statements.py +0 -0
  616. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/query/writes/test_upsert_statements.py +0 -0
  617. {pyoq_sql-1.0.0/tests/runtime → pyoq_sql-1.0.2/tests/relations}/__init__.py +0 -0
  618. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/relations/test_batching.py +0 -0
  619. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/relations/test_derivation.py +0 -0
  620. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/relations/test_fetching.py +0 -0
  621. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/relations/test_graph.py +0 -0
  622. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/relations/test_loading.py +0 -0
  623. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/relations/test_planning.py +0 -0
  624. {pyoq_sql-1.0.0/tests/sanic → pyoq_sql-1.0.2/tests/runtime}/__init__.py +0 -0
  625. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/runtime/test_kernels.py +0 -0
  626. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/runtime/test_runtime.py +0 -0
  627. {pyoq_sql-1.0.0/tests/schema → pyoq_sql-1.0.2/tests/sanic}/__init__.py +0 -0
  628. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/sanic/conftest.py +0 -0
  629. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/sanic/notes.py +0 -0
  630. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/sanic/test_attachment.py +0 -0
  631. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/sanic/test_scope.py +0 -0
  632. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/sanic/test_synchronous_scope.py +0 -0
  633. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/sanic/test_workers.py +0 -0
  634. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/sanic/worker_application.py +0 -0
  635. {pyoq_sql-1.0.0/tests/schema/mysql → pyoq_sql-1.0.2/tests/schema}/__init__.py +0 -0
  636. {pyoq_sql-1.0.0/tests/schema/postgres → pyoq_sql-1.0.2/tests/schema/mysql}/__init__.py +0 -0
  637. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/schema/mysql/test_catalog_records.py +0 -0
  638. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/schema/mysql/test_dsn.py +0 -0
  639. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/schema/mysql/test_types.py +0 -0
  640. {pyoq_sql-1.0.0/tests/schema/sqlite → pyoq_sql-1.0.2/tests/schema/postgres}/__init__.py +0 -0
  641. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/schema/postgres/test_catalog_records.py +0 -0
  642. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/schema/postgres/test_types.py +0 -0
  643. {pyoq_sql-1.0.0/tests/snapshots → pyoq_sql-1.0.2/tests/schema/sqlite}/__init__.py +0 -0
  644. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/schema/sqlite/test_records.py +0 -0
  645. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/schema/sqlite/test_reflection.py +0 -0
  646. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/schema/sqlite/test_sql.py +0 -0
  647. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/schema/sqlite/test_types.py +0 -0
  648. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/schema/test_codec.py +0 -0
  649. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/schema/test_registry.py +0 -0
  650. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/schema/test_schema.py +0 -0
  651. {pyoq_sql-1.0.0/tests/support → pyoq_sql-1.0.2/tests/snapshots}/__init__.py +0 -0
  652. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/snapshots/test_alembic_lifecycle.py +0 -0
  653. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/snapshots/test_dialect_snapshots.py +0 -0
  654. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/snapshots/test_drift_and_hooks.py +0 -0
  655. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/snapshots/test_offline_generation.py +0 -0
  656. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/snapshots/test_snapshot_files.py +0 -0
  657. {pyoq_sql-1.0.0/tests/tracing → pyoq_sql-1.0.2/tests/support}/__init__.py +0 -0
  658. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/support/checkers.py +0 -0
  659. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/support/generation_fixtures.py +0 -0
  660. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/support/mysql.py +0 -0
  661. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/support/postgres.py +0 -0
  662. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/support/schema_fixtures.py +0 -0
  663. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/test_descriptors.py +0 -0
  664. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/test_errors.py +0 -0
  665. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/test_naming.py +0 -0
  666. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/test_package.py +0 -0
  667. /pyoq_sql-1.0.0/typings/cognitive_complexity/__init__.pyi → /pyoq_sql-1.0.2/tests/tracing/__init__.py +0 -0
  668. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/tests/tracing/test_spans.py +0 -0
  669. {pyoq_sql-1.0.0 → pyoq_sql-1.0.2}/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.0"
97
+ version = "1.0.2"
98
98
  dependencies = [
99
99
  "pyo3",
100
100
  ]
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "pyoq-native"
3
- version = "1.0.0"
3
+ version = "1.0.2"
4
4
  edition = "2024"
5
5
  description = "Native runtime for the PyOQ SQL toolkit"
6
6
  license = "MPL-2.0"
@@ -1,7 +1,11 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: pyoq-sql
3
- Version: 1.0.0
3
+ Version: 1.0.2
4
4
  Summary: A fully typed, database-first SQL toolkit for Python.
5
+ Project-URL: Homepage, https://teqpod.com/pyoq-sql/
6
+ Project-URL: Documentation, https://teqpod.com/pyoq-sql/overview/
7
+ Project-URL: Issues, https://github.com/Teqpod/pyoq-sql/issues
8
+ Project-URL: Security, https://github.com/Teqpod/pyoq-sql/security/advisories/new
5
9
  License-Expression: MPL-2.0
6
10
  License-File: LICENSE
7
11
  Keywords: database,query-builder,sql,typing
@@ -99,6 +103,7 @@ flowchart TD
99
103
  Package --> Query[query]
100
104
  Package --> Runtime[runtime]
101
105
  Package --> Schema[schema]
106
+ Package --> Serving[serving]
102
107
  Package --> Errors[errors]
103
108
  Package --> Naming[naming]
104
109
  Runtime --> Native[private native extension]
@@ -112,8 +117,8 @@ surfaces.
112
117
  ## Configuration
113
118
 
114
119
  Configuration is read from `pyproject.toml`. Generated code always lives in a
115
- dedicated directory below the project root. Database credentials are referenced
116
- by environment variable name and are never stored in the configuration file.
120
+ dedicated directory below the project root. Use a complete environment
121
+ reference when a data source name contains credentials.
117
122
 
118
123
  ```toml
119
124
  [tool.pyoq]
@@ -123,32 +128,43 @@ selected-profile = "default"
123
128
 
124
129
  [tool.pyoq.profiles.default]
125
130
  dialect = "postgres"
126
- dsn-environment = "DATABASE_URL"
131
+ host = "localhost"
132
+ port = 5432
133
+ database = "${POSTGRES_DATABASE}"
134
+ username = "${POSTGRES_USERNAME}"
135
+ password = "${POSTGRES_PASSWORD}"
136
+ minimum-pool-size = 1
137
+ maximum-pool-size = 8
138
+ pool-checkout-timeout = 3.0
127
139
 
128
140
  [tool.pyoq.profiles.testing]
129
141
  dialect = "sqlite"
130
142
  database-path = "database/testing.sqlite"
131
143
  ```
132
144
 
133
- Load the selected profile through the fully typed configuration API:
145
+ Open the selected profile through the fully typed lifecycle API:
134
146
 
135
147
  ```python
136
- from pathlib import Path
148
+ from pyoq import connect
149
+ from application.database.tables import ACCOUNT
137
150
 
138
- from pyoq.config import load_configuration
139
151
 
140
- configuration = load_configuration(Path.cwd())
141
- profile = configuration.active_profile
142
-
143
- if profile.dsn_environment is not None:
144
- database_url = profile.dsn_environment.resolve()
145
- connect_value = database_url.reveal()
152
+ with connect(profile="default") as database:
153
+ rows = database.select_from(ACCOUNT).limit(10).fetch_all()
146
154
  ```
147
155
 
156
+ Omit `profile` to use `selected-profile`. The context creates one process-owned
157
+ pool from the profile limits and closes it on exit. A framework-free
158
+ application can instead pass a data source directly with
159
+ `connect(dsn, dialect=Dialect.MYSQL)`. An explicit `pool_policy` replaces the
160
+ complete profile pool policy for one call.
161
+
148
162
  SQLite file paths use `database-path`. They are resolved relative to the project
149
163
  root, must remain inside it, and are opened read-only during inspection. An
150
- environment reference may be used instead when the database location should be
151
- supplied by the process environment. A profile cannot define both settings.
164
+ environment reference in the exact `${VARIABLE_NAME}` form may be used for any
165
+ structured server or pool value. Any other string is literal. Server profiles
166
+ may alternatively define one `dsn`, but cannot combine it with structured
167
+ connection fields.
152
168
 
153
169
  `SecretValue` renders as `[REDACTED]`; access to its underlying value is always
154
170
  explicit. An explicit `Configuration` object takes precedence over the file,
@@ -317,7 +333,7 @@ python -m pip install "pyoq-sql[mysql-async]"
317
333
  Without them, PostgreSQL and MySQL query construction and compilation still
318
334
  work because they are pure Python. Only connecting requires a driver, and its
319
335
  absence raises an explicit error naming the extra to install. PostgreSQL and
320
- MySQL profiles supply their connection string through `dsn-environment`, and
336
+ PostgreSQL and MySQL profiles supply their connection string through `dsn`, and
321
337
  inspection opens the connection read-only.
322
338
 
323
339
  A MySQL connection string names one database, which is reflected as the
@@ -59,6 +59,7 @@ flowchart TD
59
59
  Package --> Query[query]
60
60
  Package --> Runtime[runtime]
61
61
  Package --> Schema[schema]
62
+ Package --> Serving[serving]
62
63
  Package --> Errors[errors]
63
64
  Package --> Naming[naming]
64
65
  Runtime --> Native[private native extension]
@@ -72,8 +73,8 @@ surfaces.
72
73
  ## Configuration
73
74
 
74
75
  Configuration is read from `pyproject.toml`. Generated code always lives in a
75
- dedicated directory below the project root. Database credentials are referenced
76
- by environment variable name and are never stored in the configuration file.
76
+ dedicated directory below the project root. Use a complete environment
77
+ reference when a data source name contains credentials.
77
78
 
78
79
  ```toml
79
80
  [tool.pyoq]
@@ -83,32 +84,43 @@ selected-profile = "default"
83
84
 
84
85
  [tool.pyoq.profiles.default]
85
86
  dialect = "postgres"
86
- dsn-environment = "DATABASE_URL"
87
+ host = "localhost"
88
+ port = 5432
89
+ database = "${POSTGRES_DATABASE}"
90
+ username = "${POSTGRES_USERNAME}"
91
+ password = "${POSTGRES_PASSWORD}"
92
+ minimum-pool-size = 1
93
+ maximum-pool-size = 8
94
+ pool-checkout-timeout = 3.0
87
95
 
88
96
  [tool.pyoq.profiles.testing]
89
97
  dialect = "sqlite"
90
98
  database-path = "database/testing.sqlite"
91
99
  ```
92
100
 
93
- Load the selected profile through the fully typed configuration API:
101
+ Open the selected profile through the fully typed lifecycle API:
94
102
 
95
103
  ```python
96
- from pathlib import Path
104
+ from pyoq import connect
105
+ from application.database.tables import ACCOUNT
97
106
 
98
- from pyoq.config import load_configuration
99
107
 
100
- configuration = load_configuration(Path.cwd())
101
- profile = configuration.active_profile
102
-
103
- if profile.dsn_environment is not None:
104
- database_url = profile.dsn_environment.resolve()
105
- connect_value = database_url.reveal()
108
+ with connect(profile="default") as database:
109
+ rows = database.select_from(ACCOUNT).limit(10).fetch_all()
106
110
  ```
107
111
 
112
+ Omit `profile` to use `selected-profile`. The context creates one process-owned
113
+ pool from the profile limits and closes it on exit. A framework-free
114
+ application can instead pass a data source directly with
115
+ `connect(dsn, dialect=Dialect.MYSQL)`. An explicit `pool_policy` replaces the
116
+ complete profile pool policy for one call.
117
+
108
118
  SQLite file paths use `database-path`. They are resolved relative to the project
109
119
  root, must remain inside it, and are opened read-only during inspection. An
110
- environment reference may be used instead when the database location should be
111
- supplied by the process environment. A profile cannot define both settings.
120
+ environment reference in the exact `${VARIABLE_NAME}` form may be used for any
121
+ structured server or pool value. Any other string is literal. Server profiles
122
+ may alternatively define one `dsn`, but cannot combine it with structured
123
+ connection fields.
112
124
 
113
125
  `SecretValue` renders as `[REDACTED]`; access to its underlying value is always
114
126
  explicit. An explicit `Configuration` object takes precedence over the file,
@@ -277,7 +289,7 @@ python -m pip install "pyoq-sql[mysql-async]"
277
289
  Without them, PostgreSQL and MySQL query construction and compilation still
278
290
  work because they are pure Python. Only connecting requires a driver, and its
279
291
  absence raises an explicit error naming the extra to install. PostgreSQL and
280
- MySQL profiles supply their connection string through `dsn-environment`, and
292
+ PostgreSQL and MySQL profiles supply their connection string through `dsn`, and
281
293
  inspection opens the connection read-only.
282
294
 
283
295
  A MySQL connection string names one database, which is reflected as the
@@ -0,0 +1,83 @@
1
+ # PyOQ documentation site
2
+
3
+ The landing page lives in `src/pages/index.astro`. Documentation is Markdown
4
+ in `src/content/docs`, one file per guide. Its reading order lives in
5
+ `src/nav.ts`, because a reader following the site from the top is walking a
6
+ path somebody chose rather than a directory listing.
7
+
8
+ ## Running it
9
+
10
+ ```bash
11
+ bun install
12
+ bun run dev # http://localhost:4321, with reload
13
+ bun run build # static site into dist/, then the search index
14
+ bun run preview # serve what was built
15
+ bun run check # types across the Astro components
16
+ ```
17
+
18
+ Search is built by Pagefind from the finished HTML, so `bun run dev` has no
19
+ index and the field says so. Run `bun run build` to search.
20
+
21
+ ## Adding a page
22
+
23
+ 1. Write `src/content/docs/<name>.md` with `title` and `summary` at the top.
24
+ 2. Add it to the right group in `src/nav.ts`, with the same title and summary.
25
+ 3. Link it from the nearest existing guide so a reader has a reason to find it.
26
+ 4. Add checked SQL and Python pairs where rendered SQL is part of the lesson.
27
+
28
+ A page that exists but is not in the navigation is not built, which is
29
+ deliberate: an unreachable page is worse than a missing one, because nobody
30
+ finds out it went stale.
31
+
32
+ ## Writing a guide
33
+
34
+ Start with the reader's task and the smallest complete example. Explain
35
+ ownership, failure behavior, and dialect limits beside the feature rather than
36
+ in a distant caveat. Use supported public imports and show bound values outside
37
+ SQL text.
38
+
39
+ Cross-link concepts instead of copying their full explanation into several
40
+ pages. A page may summarize a related contract, but its authoritative details
41
+ should have one home. Use Mermaid when a process or state transition needs a
42
+ diagram.
43
+
44
+ The Python suite validates local links, documented imports, and every adjacent
45
+ `sql pair` and Python block. The site check validates components and routes.
46
+ Both are required because either one alone can miss a broken guide.
47
+
48
+ ## Where things are
49
+
50
+ | Path | Holds |
51
+ | --- | --- |
52
+ | `src/pages/index.astro` | the product landing page |
53
+ | `src/content/docs` | every page, as Markdown |
54
+ | `src/nav.ts` | the order, and which group each page is in |
55
+ | `src/layouts/Doc.astro` | the page shell |
56
+ | `src/layouts/app.css` | the whole design |
57
+ | `src/components` | sidebar, search, on-this-page, prev and next |
58
+
59
+ ## Checking a change
60
+
61
+ From this directory:
62
+
63
+ ```bash
64
+ bun run check
65
+ bun run build
66
+ ```
67
+
68
+ From the repository root:
69
+
70
+ ```bash
71
+ uv run --no-sync pytest tests/distribution/test_documentation_links.py \
72
+ tests/distribution/test_documentation_imports.py \
73
+ tests/distribution/test_documentation_pairs.py
74
+ ```
75
+
76
+ ## Deploying
77
+
78
+ `dist/` is a directory of files. It needs no server of its own, so any static
79
+ host will do. Set `DOCS_BASE` when it is served from a subdirectory:
80
+
81
+ ```bash
82
+ DOCS_BASE=/docs/ bun run build
83
+ ```
@@ -0,0 +1,50 @@
1
+ // @ts-check
2
+ import { unified } from "@astrojs/markdown-remark";
3
+ import { defineConfig } from "astro/config";
4
+
5
+ import { remarkBase } from "./src/remark-base.mjs";
6
+ import { remarkCodeShell } from "./src/remark-code-shell.mjs";
7
+ import { remarkLicence } from "./src/remark-licence.mjs";
8
+ import { remarkMermaid } from "./src/remark-mermaid.mjs";
9
+ import { remarkPairs } from "./src/remark-pairs.mjs";
10
+
11
+ // The site is a directory of files when it is built, so it works from a
12
+ // bucket, a static host, or a laptop without anything running behind it.
13
+ export default defineConfig({
14
+ // Both are read from the environment and neither is written down here, so
15
+ // the build carries no host and no assumption about where it is served.
16
+ // DOCS_BASE is the path the site is published under; every internal link is
17
+ // built from it through src/links.ts. Unset means the root, which is what a
18
+ // local `astro dev` wants.
19
+ site: process.env.DOCS_SITE,
20
+ base: process.env.DOCS_BASE ?? "/",
21
+ build: { format: "directory" },
22
+ vite: {
23
+ // The package metadata sits above this directory, and src/project.ts reads
24
+ // the licence straight out of it.
25
+ server: { fs: { allow: [".", "../.."] } },
26
+ build: {
27
+ rollupOptions: {
28
+ // Astro names a bundled asset after the specifier that imported it,
29
+ // and a relative one leaves ".." in the filename. Static servers read
30
+ // that as a walk out of the directory and refuse to serve it.
31
+ output: { assetFileNames: "_astro/[name].[hash][extname]" },
32
+ },
33
+ },
34
+ },
35
+ markdown: {
36
+ processor: unified({ remarkPlugins: [
37
+ remarkMermaid,
38
+ remarkLicence,
39
+ remarkCodeShell,
40
+ remarkPairs,
41
+ remarkBase,
42
+ ] }),
43
+ shikiConfig: {
44
+ // The themes the editor this UI is modelled on renders with, so a
45
+ // snippet here is coloured exactly as it is there.
46
+ themes: { light: "light-plus", dark: "dark-plus" },
47
+ wrap: false,
48
+ },
49
+ },
50
+ });
@@ -7,12 +7,15 @@
7
7
  "dependencies": {
8
8
  "@astrojs/markdown-remark": "^7.2.4",
9
9
  "@fontsource/cascadia-code": "^5.3.0",
10
+ "@monaco-editor/loader": "^1.7.0",
10
11
  "astro": "^7.2.6",
12
+ "beautiful-mermaid": "^1.1.3",
11
13
  "pagefind": "^1.5.2",
12
14
  },
13
15
  "devDependencies": {
14
16
  "@astrojs/check": "^0.9.10",
15
17
  "@types/node": "^26.3.0",
18
+ "monaco-editor": "^0.52.2",
16
19
  "typescript": "^6",
17
20
  },
18
21
  },
@@ -220,6 +223,8 @@
220
223
 
221
224
  "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="],
222
225
 
226
+ "@monaco-editor/loader": ["@monaco-editor/loader@1.7.0", "", { "dependencies": { "state-local": "^1.0.6" } }, "sha512-gIwR1HrJrrx+vfyOhYmCZ0/JcWqG5kbfG7+d3f/C1LXk2EvzAbHSg3MQ5lO2sMlo9izoAZ04shohfKLVT6crVA=="],
227
+
223
228
  "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.2.3", "", { "dependencies": { "@tybys/wasm-util": "^0.10.3" }, "peerDependencies": { "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" } }, "sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q=="],
224
229
 
225
230
  "@oslojs/encoding": ["@oslojs/encoding@1.1.0", "", {}, "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ=="],
@@ -352,6 +357,8 @@
352
357
 
353
358
  "bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="],
354
359
 
360
+ "beautiful-mermaid": ["beautiful-mermaid@1.1.3", "", { "dependencies": { "elkjs": "^0.11.0", "entities": "^7.0.1" } }, "sha512-TItrtrAyHp1vwFfFVYauWGrquouk/6SS21Aq3RsxindSYZODcN4xYrPZD6BiZRU+o5mKJzDPz9MUSMvELdylyg=="],
361
+
355
362
  "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="],
356
363
 
357
364
  "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="],
@@ -424,11 +431,13 @@
424
431
 
425
432
  "dset": ["dset@3.1.4", "", {}, "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA=="],
426
433
 
434
+ "elkjs": ["elkjs@0.11.1", "", {}, "sha512-zxxR9k+rx5ktMwT/FwyLdPCrq7xN6e4VGGHH8hA01vVYKjTFik7nHOxBnAYtrgYUB1RpAiLvA1/U2YraWxyKKg=="],
435
+
427
436
  "emmet": ["emmet@2.4.11", "", { "dependencies": { "@emmetio/abbreviation": "^2.3.3", "@emmetio/css-abbreviation": "^2.1.8" } }, "sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ=="],
428
437
 
429
438
  "emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="],
430
439
 
431
- "entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="],
440
+ "entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="],
432
441
 
433
442
  "es-module-lexer": ["es-module-lexer@2.3.2", "", {}, "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw=="],
434
443
 
@@ -636,6 +645,8 @@
636
645
 
637
646
  "micromark-util-types": ["micromark-util-types@2.0.2", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="],
638
647
 
648
+ "monaco-editor": ["monaco-editor@0.52.2", "", {}, "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ=="],
649
+
639
650
  "mrmime": ["mrmime@2.0.1", "", {}, "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ=="],
640
651
 
641
652
  "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
@@ -756,6 +767,8 @@
756
767
 
757
768
  "space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="],
758
769
 
770
+ "state-local": ["state-local@1.0.7", "", {}, "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w=="],
771
+
759
772
  "string-width": ["string-width@8.2.2", "", { "dependencies": { "get-east-asian-width": "^1.5.0", "strip-ansi": "^7.1.2" } }, "sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg=="],
760
773
 
761
774
  "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="],
@@ -898,6 +911,8 @@
898
911
 
899
912
  "dom-serializer/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="],
900
913
 
914
+ "parse5/entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="],
915
+
901
916
  "svgo/commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="],
902
917
 
903
918
  "unstorage/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="],
@@ -2,6 +2,7 @@
2
2
  "name": "pyoq-docs",
3
3
  "private": true,
4
4
  "type": "module",
5
+ "version": "1.0.2",
5
6
  "scripts": {
6
7
  "dev": "astro dev",
7
8
  "build": "astro build && pagefind --site dist",
@@ -11,12 +12,15 @@
11
12
  "dependencies": {
12
13
  "@astrojs/markdown-remark": "^7.2.4",
13
14
  "@fontsource/cascadia-code": "^5.3.0",
15
+ "@monaco-editor/loader": "^1.7.0",
14
16
  "astro": "^7.2.6",
17
+ "beautiful-mermaid": "^1.1.3",
15
18
  "pagefind": "^1.5.2"
16
19
  },
17
20
  "devDependencies": {
18
21
  "@astrojs/check": "^0.9.10",
19
22
  "@types/node": "^26.3.0",
23
+ "monaco-editor": "^0.52.2",
20
24
  "typescript": "^6"
21
25
  }
22
26
  }
@@ -0,0 +1,51 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1200" height="630" viewBox="0 0 1200 630" role="img" aria-labelledby="banner-title">
2
+ <title id="banner-title">PyOQ, fully typed database-first SQL for Python</title>
3
+ <defs>
4
+ <linearGradient id="ground" x1="0" y1="0" x2="1" y2="1">
5
+ <stop offset="0" stop-color="#0c1220" />
6
+ <stop offset="1" stop-color="#131c2f" />
7
+ </linearGradient>
8
+ <radialGradient id="glow" cx="0.5" cy="0.5" r="0.5">
9
+ <stop offset="0" stop-color="#1b6ef3" stop-opacity="0.42" />
10
+ <stop offset="0.55" stop-color="#1b6ef3" stop-opacity="0.13" />
11
+ <stop offset="1" stop-color="#1b6ef3" stop-opacity="0" />
12
+ </radialGradient>
13
+ <linearGradient id="rule" x1="0" y1="0" x2="1" y2="0">
14
+ <stop offset="0" stop-color="#1b6ef3" />
15
+ <stop offset="1" stop-color="#1b6ef3" stop-opacity="0" />
16
+ </linearGradient>
17
+ </defs>
18
+
19
+ <rect width="1200" height="630" fill="url(#ground)" />
20
+ <circle cx="1046" cy="118" r="392" fill="url(#glow)" />
21
+ <rect x="0" y="0" width="1200" height="6" fill="url(#rule)" />
22
+
23
+ <g transform="translate(96 128) scale(1.75)">
24
+ <rect x="2" y="2" width="60" height="60" rx="14" fill="#1b6ef3" />
25
+ <g fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="7">
26
+ <path d="M18 49V16h17" />
27
+ <circle cx="35" cy="31" r="15" />
28
+ <path d="m45 42 7 7" />
29
+ </g>
30
+ <g fill="#fff">
31
+ <rect x="28" y="24" width="5" height="5" rx="1" />
32
+ <rect x="36" y="24" width="5" height="5" rx="1" />
33
+ <rect x="28" y="32" width="5" height="5" rx="1" />
34
+ <rect x="36" y="32" width="5" height="5" rx="1" />
35
+ </g>
36
+ </g>
37
+
38
+ <text x="232" y="196" font-family="Helvetica Neue, Helvetica, Arial, sans-serif" font-size="92" font-weight="700" fill="#ffffff" letter-spacing="-2">PyOQ</text>
39
+ <text x="236" y="238" font-family="Menlo, Consolas, monospace" font-size="21" fill="#7c9bd6" letter-spacing="3">PIP INSTALL PYOQ-SQL</text>
40
+
41
+ <text x="96" y="352" font-family="Helvetica Neue, Helvetica, Arial, sans-serif" font-size="52" font-weight="600" fill="#eef2f9" letter-spacing="-1">Fully typed, database-first SQL</text>
42
+ <text x="96" y="416" font-family="Helvetica Neue, Helvetica, Arial, sans-serif" font-size="52" font-weight="600" fill="#eef2f9" letter-spacing="-1">for Python.</text>
43
+
44
+ <rect x="96" y="470" width="1008" height="1" fill="#26324a" />
45
+
46
+ <text x="96" y="533" font-family="Menlo, Consolas, monospace" font-size="25" fill="#7f8ba3"
47
+ >dsl.<tspan fill="#6fb0ff">select</tspan>(TITLES.NAME).<tspan fill="#6fb0ff">from_</tspan>(TITLES)</text>
48
+
49
+ <text x="96" y="586" font-family="Helvetica Neue, Helvetica, Arial, sans-serif" font-size="23" fill="#5f6f8c"
50
+ >Generated types<tspan dx="20" fill="#3d4a63">·</tspan><tspan dx="20">Explicit execution</tspan><tspan dx="20" fill="#3d4a63">·</tspan><tspan dx="20">Native acceleration</tspan></text>
51
+ </svg>
@@ -0,0 +1,15 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-labelledby="title">
2
+ <title id="title">PyOQ</title>
3
+ <rect x="2" y="2" width="60" height="60" rx="14" fill="#1b6ef3" />
4
+ <g fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="7">
5
+ <path d="M18 49V16h17" />
6
+ <circle cx="35" cy="31" r="15" />
7
+ <path d="m45 42 7 7" />
8
+ </g>
9
+ <g fill="#fff">
10
+ <rect x="28" y="24" width="5" height="5" rx="1" />
11
+ <rect x="36" y="24" width="5" height="5" rx="1" />
12
+ <rect x="28" y="32" width="5" height="5" rx="1" />
13
+ <rect x="36" y="32" width="5" height="5" rx="1" />
14
+ </g>
15
+ </svg>
@@ -0,0 +1,49 @@
1
+ /**
2
+ * The bar above a code block, written once.
3
+ *
4
+ * A snippet is labelled the same way whether it stands alone or sits beside
5
+ * the SQL it compiles to, so both the plugin that wraps a lone fence and the
6
+ * one that pairs two of them build their head from here.
7
+ */
8
+ const LABELS = {
9
+ bash: "Shell",
10
+ console: "Console",
11
+ json: "JSON",
12
+ python: "Python",
13
+ sql: "SQL",
14
+ text: "Text",
15
+ toml: "Configuration",
16
+ yaml: "YAML",
17
+ };
18
+
19
+ const COPY_ICON =
20
+ '<svg class="i-copy" viewBox="0 0 16 16" aria-hidden="true"><rect x="5.6" y="5.6" width="7.9" height="7.9" rx="1.6" fill="none" stroke="currentColor" stroke-width="1.3"/><path d="M10.4 5.6V4.1A1.6 1.6 0 0 0 8.8 2.5H4.1A1.6 1.6 0 0 0 2.5 4.1v4.7a1.6 1.6 0 0 0 1.6 1.6h1.5" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"/></svg>';
21
+
22
+ const DONE_ICON =
23
+ '<svg class="i-done" viewBox="0 0 16 16" aria-hidden="true"><path d="m3.5 8.4 3 3 6-6.4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>';
24
+
25
+ /** Languages that are a session at a prompt rather than a file of code. */
26
+ const TERMINALS = new Set(["bash", "sh", "shell", "zsh", "console"]);
27
+
28
+ export function isTerminal(language) {
29
+ return TERMINALS.has((language ?? "").toLowerCase());
30
+ }
31
+
32
+ export function label(language) {
33
+ if (isTerminal(language)) return "Terminal";
34
+ if (!language) return "Text";
35
+ return LABELS[language] ?? language.toUpperCase();
36
+ }
37
+
38
+ export function codeHead(language) {
39
+ const named = label(language);
40
+ return (
41
+ '<div class="code-head">' +
42
+ `<span class="code-lang">${named}</span>` +
43
+ `<button class="code-copy" type="button" data-copy aria-label="Copy ${named} code">` +
44
+ COPY_ICON +
45
+ DONE_ICON +
46
+ "<span data-copy-label>Copy</span></button>" +
47
+ "</div>"
48
+ );
49
+ }
@@ -0,0 +1,19 @@
1
+ <button id="appearance" type="button" aria-label="Switch appearance">
2
+ <svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true">
3
+ <path
4
+ fill="currentColor"
5
+ d="M10 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm0 1.6V16.4a6.4 6.4 0 0 1 0-12.8Z"
6
+ ></path>
7
+ </svg>
8
+ </button>
9
+
10
+ <script>
11
+ const root = document.documentElement;
12
+ document.getElementById("appearance")?.addEventListener("click", () => {
13
+ const next = root.dataset.appearance === "dark" ? "light" : "dark";
14
+ root.dataset.appearance = next;
15
+ try {
16
+ localStorage.setItem("pyoq-appearance", next);
17
+ } catch {}
18
+ });
19
+ </script>
@@ -2,7 +2,7 @@
2
2
  // What every example on a page takes as already there. Written once, shown
3
3
  // on the pages that rely on it, so no example begins with a name the reader
4
4
  // has not met.
5
- const base = import.meta.env.BASE_URL;
5
+ import { linkTo } from "../links";
6
6
  ---
7
7
 
8
8
  <aside class="assumed">
@@ -18,7 +18,7 @@ const base = import.meta.env.BASE_URL;
18
18
  </li>
19
19
  </ul>
20
20
  <p>
21
- <a href={`${base}first-query/`.replace(/\/\/+/g, "/")}
21
+ <a href={linkTo("first-query/")}
22
22
  >Your first query</a
23
23
  > builds all three from nothing.
24
24
  </p>
@@ -0,0 +1,27 @@
1
+ ---
2
+ interface Props {
3
+ variant: "landing" | "documentation";
4
+ }
5
+
6
+ import { linkTo } from "../links";
7
+
8
+ const { variant } = Astro.props;
9
+
10
+ const documentation = variant === "documentation";
11
+ ---
12
+
13
+ <a
14
+ class={documentation ? "wordmark" : "landing-wordmark"}
15
+ href={linkTo()}
16
+ aria-label={documentation ? "PyOQ documentation home" : "PyOQ home"}
17
+ >
18
+ <img
19
+ class="brand-image"
20
+ src={linkTo("brand/pyoq-mark.svg")}
21
+ width="30"
22
+ height="30"
23
+ alt=""
24
+ />
25
+ <span class="brand-name">PyOQ</span>
26
+ {documentation && <span class="brand-context">docs</span>}
27
+ </a>