pyoq-sql 1.0.1__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 (659) hide show
  1. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/Cargo.lock +1 -1
  2. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/Cargo.toml +1 -1
  3. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/PKG-INFO +18 -12
  4. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/README.md +17 -11
  5. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/package.json +1 -1
  6. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/code-head.mjs +8 -0
  7. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/CodeEditors.astro +6 -1
  8. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/agents.md +4 -1
  9. pyoq_sql-1.0.2/docs/web/src/content/docs/configuration.md +262 -0
  10. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/connections.md +23 -15
  11. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/installing.md +38 -1
  12. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/mysql-application.md +27 -39
  13. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/reference.md +1 -1
  14. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/security.md +4 -2
  15. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/layouts/app.css +49 -4
  16. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/layouts/landing.css +6 -3
  17. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/remark-code-shell.mjs +7 -2
  18. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/remark-pairs.mjs +3 -3
  19. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/pyproject.toml +1 -1
  20. pyoq_sql-1.0.2/src/pyoq/config/__init__.py +31 -0
  21. pyoq_sql-1.0.2/src/pyoq/config/connection.py +161 -0
  22. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/config/loader.py +83 -1
  23. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/config/models.py +31 -79
  24. pyoq_sql-1.0.2/src/pyoq/config/values.py +142 -0
  25. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/serving/opening.py +33 -2
  26. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/config/test_config.py +260 -1
  27. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_mysql_application_guide.py +2 -0
  28. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/serving/test_opening.py +60 -0
  29. pyoq_sql-1.0.2/tests/serving/test_opening_servers.py +89 -0
  30. pyoq_sql-1.0.1/docs/web/src/content/docs/configuration.md +0 -163
  31. pyoq_sql-1.0.1/src/pyoq/config/__init__.py +0 -23
  32. pyoq_sql-1.0.1/tests/serving/test_opening_servers.py +0 -45
  33. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/.gitignore +0 -0
  34. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/LICENSE +0 -0
  35. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/benchmarks/__init__.py +0 -0
  36. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/benchmarks/bulk_planning.py +0 -0
  37. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/benchmarks/fetch_execution.py +0 -0
  38. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/benchmarks/hydration.py +0 -0
  39. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/benchmarks/observability.py +0 -0
  40. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/benchmarks/performance_contract.py +0 -0
  41. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/django.md +0 -0
  42. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/.gitignore +0 -0
  43. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/README.md +0 -0
  44. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/astro.config.mjs +0 -0
  45. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/bun.lock +0 -0
  46. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/public/.nojekyll +0 -0
  47. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/public/brand/pyoq-banner.png +0 -0
  48. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/public/brand/pyoq-banner.svg +0 -0
  49. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/public/brand/pyoq-favicon-32.png +0 -0
  50. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/public/brand/pyoq-mark-180.png +0 -0
  51. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/public/brand/pyoq-mark-512.png +0 -0
  52. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/public/brand/pyoq-mark.svg +0 -0
  53. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/AppearanceToggle.astro +0 -0
  54. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/Assumed.astro +0 -0
  55. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/Brand.astro +0 -0
  56. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/CodeCopy.astro +0 -0
  57. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/Contents.astro +0 -0
  58. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/Diagrams.astro +0 -0
  59. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/Pager.astro +0 -0
  60. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/Search.astro +0 -0
  61. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/Sidebar.astro +0 -0
  62. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/SiteHead.astro +0 -0
  63. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/async.md +0 -0
  64. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/bulk.md +0 -0
  65. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/cli.md +0 -0
  66. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/conflicts.md +0 -0
  67. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/diagnostics.md +0 -0
  68. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/dialects.md +0 -0
  69. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/django.md +0 -0
  70. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/errors.md +0 -0
  71. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/expressions.md +0 -0
  72. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/fastapi.md +0 -0
  73. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/first-query.md +0 -0
  74. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/generating.md +0 -0
  75. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/inserting.md +0 -0
  76. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/joins.md +0 -0
  77. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/licence.md +0 -0
  78. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/migrations.md +0 -0
  79. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/overview.md +0 -0
  80. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/performance.md +0 -0
  81. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/policies.md +0 -0
  82. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/relations.md +0 -0
  83. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/releasing.md +0 -0
  84. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/results.md +0 -0
  85. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/routines.md +0 -0
  86. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/sanic.md +0 -0
  87. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/selecting.md +0 -0
  88. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/serving.md +0 -0
  89. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/snapshots.md +0 -0
  90. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/testing.md +0 -0
  91. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/transactions.md +0 -0
  92. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/troubleshooting.md +0 -0
  93. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/types.md +0 -0
  94. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/updating.md +0 -0
  95. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/when-to-use.md +0 -0
  96. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content.config.ts +0 -0
  97. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/layouts/Doc.astro +0 -0
  98. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/links.ts +0 -0
  99. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/nav.ts +0 -0
  100. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/pages/404.astro +0 -0
  101. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/pages/[slug].astro +0 -0
  102. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/pages/index.astro +0 -0
  103. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/pages/sitemap.xml.ts +0 -0
  104. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/project.ts +0 -0
  105. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/remark-base.mjs +0 -0
  106. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/remark-licence.mjs +0 -0
  107. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/remark-mermaid.mjs +0 -0
  108. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/tsconfig.json +0 -0
  109. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/__init__.py +0 -0
  110. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/bulk_writes.py +0 -0
  111. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_integration.py +0 -0
  112. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/README.md +0 -0
  113. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/__init__.py +0 -0
  114. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/analytics/__init__.py +0 -0
  115. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/analytics/admin.py +0 -0
  116. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/analytics/apps.py +0 -0
  117. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/analytics/migrations/0001_initial.py +0 -0
  118. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/analytics/migrations/__init__.py +0 -0
  119. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/analytics/models.py +0 -0
  120. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/analytics/queries.py +0 -0
  121. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/analytics/urls.py +0 -0
  122. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/analytics/views.py +0 -0
  123. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/asgi.py +0 -0
  124. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/__init__.py +0 -0
  125. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/admin.py +0 -0
  126. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/apps.py +0 -0
  127. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/migrations/0001_initial.py +0 -0
  128. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/migrations/__init__.py +0 -0
  129. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/models.py +0 -0
  130. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/queries.py +0 -0
  131. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/templates/catalog/title_detail.html +0 -0
  132. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/urls.py +0 -0
  133. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/views.py +0 -0
  134. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/manage.py +0 -0
  135. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/routers.py +0 -0
  136. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/settings.py +0 -0
  137. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/urls.py +0 -0
  138. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/wsgi.py +0 -0
  139. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/dsl_context.py +0 -0
  140. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/expressions.py +0 -0
  141. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/fastapi_application.py +0 -0
  142. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/fetch_plans.py +0 -0
  143. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/generated_types.py +0 -0
  144. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/generation_pipeline.py +0 -0
  145. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/mysql_execution.py +0 -0
  146. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/nested_collections.py +0 -0
  147. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/observability.py +0 -0
  148. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/policies.py +0 -0
  149. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/postgres_execution.py +0 -0
  150. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/relation_model.py +0 -0
  151. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/sanic_application.py +0 -0
  152. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/select_queries.py +0 -0
  153. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/sqlite_compilation.py +0 -0
  154. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/sqlite_execution.py +0 -0
  155. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/sqlite_generation.py +0 -0
  156. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/sqlite_transactions.py +0 -0
  157. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/typed_inserts.py +0 -0
  158. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/typed_updates.py +0 -0
  159. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/typed_upserts.py +0 -0
  160. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/rust/lib.rs +0 -0
  161. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/rust-toolchain.toml +0 -0
  162. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/scripts/__init__.py +0 -0
  163. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/scripts/example_requirements.py +0 -0
  164. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/scripts/examples.py +0 -0
  165. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/scripts/run_examples.py +0 -0
  166. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/scripts/verify_sdist.py +0 -0
  167. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/scripts/verify_wheels.py +0 -0
  168. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/__init__.py +0 -0
  169. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/__main__.py +0 -0
  170. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/_native.pyi +0 -0
  171. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/cli/__init__.py +0 -0
  172. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/cli/commands.py +0 -0
  173. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/cli/defaults.py +0 -0
  174. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/cli/services.py +0 -0
  175. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/descriptors.py +0 -0
  176. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/__init__.py +0 -0
  177. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/budget.py +0 -0
  178. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/events.py +0 -0
  179. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/fingerprint.py +0 -0
  180. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/instrumented.py +0 -0
  181. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/metrics.py +0 -0
  182. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/observation.py +0 -0
  183. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/scoped.py +0 -0
  184. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/__init__.py +0 -0
  185. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/apps.py +0 -0
  186. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/execution.py +0 -0
  187. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/generation.py +0 -0
  188. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/management/__init__.py +0 -0
  189. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/management/commands/__init__.py +0 -0
  190. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/management/commands/makemigrations.py +0 -0
  191. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/management/commands/pyoq_codegen.py +0 -0
  192. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/parameters.py +0 -0
  193. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/schema.py +0 -0
  194. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/settings.py +0 -0
  195. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/timeouts.py +0 -0
  196. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/__init__.py +0 -0
  197. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/aio/__init__.py +0 -0
  198. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/aio/context.py +0 -0
  199. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/aio/queries.py +0 -0
  200. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/aio/writes.py +0 -0
  201. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/context.py +0 -0
  202. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/entry.py +0 -0
  203. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/labels.py +0 -0
  204. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/queries.py +0 -0
  205. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/result.py +0 -0
  206. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/writes.py +0 -0
  207. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/errors.py +0 -0
  208. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fastapi/__init__.py +0 -0
  209. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fastapi/dependencies.py +0 -0
  210. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fastapi/lifespan.py +0 -0
  211. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fetching/__init__.py +0 -0
  212. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fetching/collections.py +0 -0
  213. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fetching/execution.py +0 -0
  214. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fetching/joined.py +0 -0
  215. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fetching/nesting.py +0 -0
  216. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fetching/plans.py +0 -0
  217. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fetching/select_in.py +0 -0
  218. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fetching/tables.py +0 -0
  219. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/__init__.py +0 -0
  220. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/cleanup.py +0 -0
  221. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/contracts.py +0 -0
  222. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/drift.py +0 -0
  223. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/lock.py +0 -0
  224. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/manifest.py +0 -0
  225. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/model.py +0 -0
  226. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/pipeline.py +0 -0
  227. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/__init__.py +0 -0
  228. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/domains.py +0 -0
  229. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/enums.py +0 -0
  230. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/exports.py +0 -0
  231. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/imports.py +0 -0
  232. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/package.py +0 -0
  233. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/relations.py +0 -0
  234. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/routines.py +0 -0
  235. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/rows.py +0 -0
  236. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/source.py +0 -0
  237. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/tables.py +0 -0
  238. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/writes.py +0 -0
  239. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/validation.py +0 -0
  240. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/writer.py +0 -0
  241. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/hydration/__init__.py +0 -0
  242. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/hydration/engine.py +0 -0
  243. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/hydration/identity.py +0 -0
  244. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/hydration/plan.py +0 -0
  245. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/migrations/__init__.py +0 -0
  246. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/migrations/alembic.py +0 -0
  247. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/migrations/hooks.py +0 -0
  248. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/naming.py +0 -0
  249. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/policies/__init__.py +0 -0
  250. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/policies/bypass.py +0 -0
  251. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/policies/governed.py +0 -0
  252. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/policies/model.py +0 -0
  253. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/policies/rewriting.py +0 -0
  254. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/py.typed +0 -0
  255. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/__init__.py +0 -0
  256. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/aggregates.py +0 -0
  257. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/arrays.py +0 -0
  258. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/binding.py +0 -0
  259. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/capabilities.py +0 -0
  260. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/casts.py +0 -0
  261. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/choices.py +0 -0
  262. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/decoding.py +0 -0
  263. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/documents.py +0 -0
  264. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/__init__.py +0 -0
  265. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/aio/__init__.py +0 -0
  266. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/aio/operations.py +0 -0
  267. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/aio/pooling.py +0 -0
  268. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/aio/streaming.py +0 -0
  269. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/aio/transactions.py +0 -0
  270. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/batch.py +0 -0
  271. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/binding_style.py +0 -0
  272. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/compilation.py +0 -0
  273. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/context.py +0 -0
  274. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/control.py +0 -0
  275. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/operations.py +0 -0
  276. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/planning.py +0 -0
  277. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/pooling.py +0 -0
  278. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/results.py +0 -0
  279. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/streaming.py +0 -0
  280. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/transactions.py +0 -0
  281. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/expressions.py +0 -0
  282. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/fields.py +0 -0
  283. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/__init__.py +0 -0
  284. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/__init__.py +0 -0
  285. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/commands.py +0 -0
  286. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/driver.py +0 -0
  287. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/executor.py +0 -0
  288. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/factory.py +0 -0
  289. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/operations.py +0 -0
  290. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/pool.py +0 -0
  291. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/transactions.py +0 -0
  292. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/commands.py +0 -0
  293. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/compiler.py +0 -0
  294. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/context.py +0 -0
  295. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/executor.py +0 -0
  296. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/expressions.py +0 -0
  297. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/factory.py +0 -0
  298. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/health.py +0 -0
  299. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/identifiers.py +0 -0
  300. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/model.py +0 -0
  301. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/operations.py +0 -0
  302. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/parameters.py +0 -0
  303. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/planning.py +0 -0
  304. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/pool.py +0 -0
  305. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/transactions.py +0 -0
  306. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/writes.py +0 -0
  307. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/nodes.py +0 -0
  308. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/__init__.py +0 -0
  309. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/__init__.py +0 -0
  310. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/bulk.py +0 -0
  311. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/commands.py +0 -0
  312. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/executor.py +0 -0
  313. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/factory.py +0 -0
  314. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/operations.py +0 -0
  315. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/pool.py +0 -0
  316. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/transactions.py +0 -0
  317. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/bulk.py +0 -0
  318. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/commands.py +0 -0
  319. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/compiler.py +0 -0
  320. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/context.py +0 -0
  321. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/executor.py +0 -0
  322. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/expressions.py +0 -0
  323. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/factory.py +0 -0
  324. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/health.py +0 -0
  325. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/identifiers.py +0 -0
  326. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/model.py +0 -0
  327. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/operations.py +0 -0
  328. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/parameters.py +0 -0
  329. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/planning.py +0 -0
  330. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/pool.py +0 -0
  331. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/transactions.py +0 -0
  332. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/writes.py +0 -0
  333. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/projections.py +0 -0
  334. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/raw.py +0 -0
  335. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/recursion.py +0 -0
  336. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/__init__.py +0 -0
  337. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/expressions.py +0 -0
  338. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/identifiers.py +0 -0
  339. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/projections.py +0 -0
  340. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/queries.py +0 -0
  341. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/sources.py +0 -0
  342. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/writes.py +0 -0
  343. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/results.py +0 -0
  344. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/routines.py +0 -0
  345. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/rows.py +0 -0
  346. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/select.py +0 -0
  347. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/select_nodes.py +0 -0
  348. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sources.py +0 -0
  349. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/__init__.py +0 -0
  350. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/commands.py +0 -0
  351. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/compiler.py +0 -0
  352. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/context.py +0 -0
  353. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/executor.py +0 -0
  354. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/expressions.py +0 -0
  355. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/factory.py +0 -0
  356. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/health.py +0 -0
  357. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/identifiers.py +0 -0
  358. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/model.py +0 -0
  359. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/operations.py +0 -0
  360. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/parameters.py +0 -0
  361. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/planning.py +0 -0
  362. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/pool.py +0 -0
  363. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/streaming.py +0 -0
  364. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/transactions.py +0 -0
  365. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/writes.py +0 -0
  366. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/statements.py +0 -0
  367. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/values.py +0 -0
  368. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/vendor.py +0 -0
  369. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/windows.py +0 -0
  370. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/write_nodes.py +0 -0
  371. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/writes.py +0 -0
  372. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/relations/__init__.py +0 -0
  373. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/relations/batching.py +0 -0
  374. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/relations/derivation.py +0 -0
  375. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/relations/fetching.py +0 -0
  376. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/relations/graph.py +0 -0
  377. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/relations/loading.py +0 -0
  378. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/relations/model.py +0 -0
  379. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/relations/planning.py +0 -0
  380. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/runtime/__init__.py +0 -0
  381. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/runtime/kernels.py +0 -0
  382. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/runtime/python.py +0 -0
  383. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/runtime/selection.py +0 -0
  384. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/sanic/__init__.py +0 -0
  385. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/sanic/scope.py +0 -0
  386. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/sanic/workers.py +0 -0
  387. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/__init__.py +0 -0
  388. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/codec.py +0 -0
  389. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/models.py +0 -0
  390. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/__init__.py +0 -0
  391. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/connection.py +0 -0
  392. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/dsn.py +0 -0
  393. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/records.py +0 -0
  394. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/reflection.py +0 -0
  395. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/source.py +0 -0
  396. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/sql.py +0 -0
  397. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/types.py +0 -0
  398. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/__init__.py +0 -0
  399. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/connection.py +0 -0
  400. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/records.py +0 -0
  401. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/reflection.py +0 -0
  402. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/source.py +0 -0
  403. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/sql.py +0 -0
  404. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/types.py +0 -0
  405. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/registry.py +0 -0
  406. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/source.py +0 -0
  407. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/__init__.py +0 -0
  408. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/connection.py +0 -0
  409. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/records.py +0 -0
  410. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/reflection.py +0 -0
  411. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/source.py +0 -0
  412. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/sql.py +0 -0
  413. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/types.py +0 -0
  414. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/serving/__init__.py +0 -0
  415. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/serving/databases.py +0 -0
  416. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/snapshots/__init__.py +0 -0
  417. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/snapshots/drift.py +0 -0
  418. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/snapshots/files.py +0 -0
  419. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/snapshots/routing.py +0 -0
  420. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/snapshots/source.py +0 -0
  421. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/tracing/__init__.py +0 -0
  422. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/tracing/spans.py +0 -0
  423. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/unset.py +0 -0
  424. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/__init__.py +0 -0
  425. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/architecture/__init__.py +0 -0
  426. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/architecture/test_layering.py +0 -0
  427. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/cli/__init__.py +0 -0
  428. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/cli/test_cli.py +0 -0
  429. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/config/__init__.py +0 -0
  430. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/conftest.py +0 -0
  431. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/__init__.py +0 -0
  432. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/aliasing_contract.py +0 -0
  433. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/array_contract.py +0 -0
  434. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/async_execution_contract.py +0 -0
  435. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/cast_contract.py +0 -0
  436. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/collection_contract.py +0 -0
  437. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/compiler_contract.py +0 -0
  438. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/execution_contract.py +0 -0
  439. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/fetch_contract.py +0 -0
  440. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/joined_contract.py +0 -0
  441. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/json_contract.py +0 -0
  442. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/lateral_contract.py +0 -0
  443. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/locking_contract.py +0 -0
  444. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/null_order_contract.py +0 -0
  445. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/recursion_contract.py +0 -0
  446. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/roundtrip_contract.py +0 -0
  447. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/routine_contract.py +0 -0
  448. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/row_value_contract.py +0 -0
  449. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/select_in_contract.py +0 -0
  450. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/snapshot_contract.py +0 -0
  451. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/support.py +0 -0
  452. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/window_contract.py +0 -0
  453. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/diagnostics/__init__.py +0 -0
  454. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/diagnostics/test_budget.py +0 -0
  455. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/diagnostics/test_events.py +0 -0
  456. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/diagnostics/test_fingerprint.py +0 -0
  457. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/diagnostics/test_instrumented.py +0 -0
  458. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/diagnostics/test_instrumented_aio.py +0 -0
  459. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/diagnostics/test_metrics.py +0 -0
  460. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/diagnostics/test_observation.py +0 -0
  461. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/diagnostics/test_scoped.py +0 -0
  462. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/__init__.py +0 -0
  463. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_api_reference.py +0 -0
  464. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_capability_documentation.py +0 -0
  465. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_ci_contract.py +0 -0
  466. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_cognitive_complexity.py +0 -0
  467. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_every_example_runs.py +0 -0
  468. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_examples_run.py +0 -0
  469. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_fetch_execution_contract.py +0 -0
  470. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_hydration_contract.py +0 -0
  471. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_one_source_of_versions.py +0 -0
  472. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_performance_contract.py +0 -0
  473. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_public_attribution.py +0 -0
  474. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_run_examples.py +0 -0
  475. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_verify_sdist.py +0 -0
  476. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_verify_wheels.py +0 -0
  477. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/__init__.py +0 -0
  478. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/catalog/__init__.py +0 -0
  479. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/catalog/apps.py +0 -0
  480. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/catalog/fields.py +0 -0
  481. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/catalog/migrations/0001_initial.py +0 -0
  482. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/catalog/migrations/__init__.py +0 -0
  483. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/catalog/models.py +0 -0
  484. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/conftest.py +0 -0
  485. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/routing.py +0 -0
  486. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/test_example.py +0 -0
  487. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/test_execution.py +0 -0
  488. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/test_generation.py +0 -0
  489. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/test_generation_equivalence.py +0 -0
  490. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/test_makemigrations.py +0 -0
  491. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/test_parameters.py +0 -0
  492. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/test_settings.py +0 -0
  493. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/test_timeouts.py +0 -0
  494. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/test_transactions.py +0 -0
  495. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/dsl/__init__.py +0 -0
  496. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/dsl/aio_support.py +0 -0
  497. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/dsl/conftest.py +0 -0
  498. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/dsl/test_aio.py +0 -0
  499. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/dsl/test_aio_writes.py +0 -0
  500. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/dsl/test_context.py +0 -0
  501. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/dsl/test_queries.py +0 -0
  502. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/dsl/test_result.py +0 -0
  503. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/dsl/test_writes.py +0 -0
  504. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fastapi/__init__.py +0 -0
  505. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fastapi/conftest.py +0 -0
  506. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fastapi/test_async_routes.py +0 -0
  507. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fastapi/test_lifespan.py +0 -0
  508. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fastapi/test_routes.py +0 -0
  509. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/__init__.py +0 -0
  510. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_collection_execution.py +0 -0
  511. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_collections.py +0 -0
  512. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_dialect_aliasing.py +0 -0
  513. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_dialect_fetching.py +0 -0
  514. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_dialect_fetching_aio.py +0 -0
  515. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_execution.py +0 -0
  516. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_joined.py +0 -0
  517. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_joined_fetch.py +0 -0
  518. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_multi_schema_relations.py +0 -0
  519. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_nesting.py +0 -0
  520. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_plans.py +0 -0
  521. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_select_in.py +0 -0
  522. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_select_in_reduction.py +0 -0
  523. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_typed_rows.py +0 -0
  524. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/__init__.py +0 -0
  525. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/test_contracts.py +0 -0
  526. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/test_filesystem.py +0 -0
  527. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/test_generated_overloads.py +0 -0
  528. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/test_generated_package_imports.py +0 -0
  529. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/test_generated_relations.py +0 -0
  530. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/test_generated_result_types.py +0 -0
  531. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/test_generated_types.py +0 -0
  532. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/test_manifest.py +0 -0
  533. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/test_pipeline.py +0 -0
  534. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/hydration/__init__.py +0 -0
  535. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/hydration/test_engine.py +0 -0
  536. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/hydration/test_engine_properties.py +0 -0
  537. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/hydration/test_identity.py +0 -0
  538. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/policies/__init__.py +0 -0
  539. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/policies/test_adapters.py +0 -0
  540. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/policies/test_isolation.py +0 -0
  541. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/policies/test_isolation_aio.py +0 -0
  542. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/policies/test_no_bypass.py +0 -0
  543. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/policies/test_rewriting.py +0 -0
  544. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/__init__.py +0 -0
  545. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/mysql/__init__.py +0 -0
  546. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/mysql/aio/__init__.py +0 -0
  547. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/mysql/aio/test_driver_failures.py +0 -0
  548. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/mysql/aio/test_execution.py +0 -0
  549. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/mysql/aio/test_read_throughput.py +0 -0
  550. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/mysql/test_compiler.py +0 -0
  551. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/mysql/test_driver_failures.py +0 -0
  552. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/mysql/test_driver_recovery.py +0 -0
  553. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/mysql/test_execution.py +0 -0
  554. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/__init__.py +0 -0
  555. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/aio/__init__.py +0 -0
  556. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/aio/test_driver_failures.py +0 -0
  557. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/aio/test_execution.py +0 -0
  558. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/aio/test_final_paths.py +0 -0
  559. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/aio/test_lifecycle.py +0 -0
  560. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/aio/test_state_guards.py +0 -0
  561. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/test_command_translation.py +0 -0
  562. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/test_compiler.py +0 -0
  563. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/test_driver_failures.py +0 -0
  564. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/test_driver_recovery.py +0 -0
  565. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/test_execution.py +0 -0
  566. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/test_pipeline_bulk.py +0 -0
  567. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/test_transaction_lifecycle.py +0 -0
  568. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/sqlite/__init__.py +0 -0
  569. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/sqlite/test_bulk_execution.py +0 -0
  570. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/sqlite/test_compiler.py +0 -0
  571. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/sqlite/test_control.py +0 -0
  572. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/sqlite/test_dialect_contracts.py +0 -0
  573. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/sqlite/test_executor.py +0 -0
  574. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/sqlite/test_pool.py +0 -0
  575. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/sqlite/test_streaming.py +0 -0
  576. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/sqlite/test_transactions.py +0 -0
  577. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_advanced_types.py +0 -0
  578. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_arrays.py +0 -0
  579. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_binding.py +0 -0
  580. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_capabilities.py +0 -0
  581. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_casts.py +0 -0
  582. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_choices.py +0 -0
  583. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_collection_execution.py +0 -0
  584. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_collection_rendering.py +0 -0
  585. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_decoding.py +0 -0
  586. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_expressions.py +0 -0
  587. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_json.py +0 -0
  588. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_locking.py +0 -0
  589. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_parameter_styles.py +0 -0
  590. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_recursion.py +0 -0
  591. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_results.py +0 -0
  592. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_routines.py +0 -0
  593. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_rows.py +0 -0
  594. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_select_queries.py +0 -0
  595. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_vendor.py +0 -0
  596. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_watchdog_cancellation.py +0 -0
  597. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_windows.py +0 -0
  598. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/writes/__init__.py +0 -0
  599. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/writes/test_insert_statements.py +0 -0
  600. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/writes/test_update_delete_statements.py +0 -0
  601. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/writes/test_upsert_statements.py +0 -0
  602. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/relations/__init__.py +0 -0
  603. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/relations/test_batching.py +0 -0
  604. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/relations/test_derivation.py +0 -0
  605. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/relations/test_fetching.py +0 -0
  606. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/relations/test_graph.py +0 -0
  607. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/relations/test_loading.py +0 -0
  608. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/relations/test_planning.py +0 -0
  609. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/runtime/__init__.py +0 -0
  610. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/runtime/test_kernels.py +0 -0
  611. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/runtime/test_runtime.py +0 -0
  612. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/sanic/__init__.py +0 -0
  613. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/sanic/conftest.py +0 -0
  614. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/sanic/notes.py +0 -0
  615. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/sanic/test_attachment.py +0 -0
  616. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/sanic/test_scope.py +0 -0
  617. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/sanic/test_synchronous_scope.py +0 -0
  618. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/sanic/test_workers.py +0 -0
  619. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/sanic/worker_application.py +0 -0
  620. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/__init__.py +0 -0
  621. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/mysql/__init__.py +0 -0
  622. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/mysql/test_catalog_records.py +0 -0
  623. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/mysql/test_dsn.py +0 -0
  624. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/mysql/test_reflection.py +0 -0
  625. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/mysql/test_types.py +0 -0
  626. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/postgres/__init__.py +0 -0
  627. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/postgres/test_catalog_records.py +0 -0
  628. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/postgres/test_reflection.py +0 -0
  629. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/postgres/test_types.py +0 -0
  630. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/sqlite/__init__.py +0 -0
  631. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/sqlite/test_records.py +0 -0
  632. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/sqlite/test_reflection.py +0 -0
  633. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/sqlite/test_source.py +0 -0
  634. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/sqlite/test_sql.py +0 -0
  635. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/sqlite/test_types.py +0 -0
  636. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/test_codec.py +0 -0
  637. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/test_registry.py +0 -0
  638. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/test_schema.py +0 -0
  639. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/serving/__init__.py +0 -0
  640. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/snapshots/__init__.py +0 -0
  641. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/snapshots/test_alembic_lifecycle.py +0 -0
  642. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/snapshots/test_dialect_snapshots.py +0 -0
  643. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/snapshots/test_drift_and_hooks.py +0 -0
  644. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/snapshots/test_offline_generation.py +0 -0
  645. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/snapshots/test_snapshot_files.py +0 -0
  646. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/support/__init__.py +0 -0
  647. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/support/checkers.py +0 -0
  648. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/support/generation_fixtures.py +0 -0
  649. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/support/mysql.py +0 -0
  650. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/support/postgres.py +0 -0
  651. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/support/schema_fixtures.py +0 -0
  652. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/test_descriptors.py +0 -0
  653. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/test_errors.py +0 -0
  654. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/test_naming.py +0 -0
  655. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/test_package.py +0 -0
  656. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/tracing/__init__.py +0 -0
  657. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/tracing/test_spans.py +0 -0
  658. {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/typings/cognitive_complexity/__init__.pyi +0 -0
  659. {pyoq_sql-1.0.1 → 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.1"
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.1"
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,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: pyoq-sql
3
- Version: 1.0.1
3
+ Version: 1.0.2
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/
@@ -128,7 +128,14 @@ selected-profile = "default"
128
128
 
129
129
  [tool.pyoq.profiles.default]
130
130
  dialect = "postgres"
131
- dsn = "${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
132
139
 
133
140
  [tool.pyoq.profiles.testing]
134
141
  dialect = "sqlite"
@@ -139,26 +146,25 @@ Open the selected profile through the fully typed lifecycle API:
139
146
 
140
147
  ```python
141
148
  from pyoq import connect
142
- from pyoq.query.execution import PoolPolicy
143
149
  from application.database.tables import ACCOUNT
144
150
 
145
151
 
146
- with connect(
147
- profile="default",
148
- pool_policy=PoolPolicy(maximum_size=8),
149
- ) as database:
152
+ with connect(profile="default") as database:
150
153
  rows = database.select_from(ACCOUNT).limit(10).fetch_all()
151
154
  ```
152
155
 
153
156
  Omit `profile` to use `selected-profile`. The context creates one process-owned
154
- pool and closes it on exit. A framework-free application can instead pass a
155
- data source directly with `connect(dsn, dialect=Dialect.MYSQL)`.
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.
156
161
 
157
162
  SQLite file paths use `database-path`. They are resolved relative to the project
158
163
  root, must remain inside it, and are opened read-only during inspection. An
159
- environment reference in the exact `${VARIABLE_NAME}` form may be used instead
160
- when the database location should be supplied by the process environment. Any
161
- other `dsn` value is literal. 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.
162
168
 
163
169
  `SecretValue` renders as `[REDACTED]`; access to its underlying value is always
164
170
  explicit. An explicit `Configuration` object takes precedence over the file,
@@ -84,7 +84,14 @@ selected-profile = "default"
84
84
 
85
85
  [tool.pyoq.profiles.default]
86
86
  dialect = "postgres"
87
- dsn = "${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
88
95
 
89
96
  [tool.pyoq.profiles.testing]
90
97
  dialect = "sqlite"
@@ -95,26 +102,25 @@ Open the selected profile through the fully typed lifecycle API:
95
102
 
96
103
  ```python
97
104
  from pyoq import connect
98
- from pyoq.query.execution import PoolPolicy
99
105
  from application.database.tables import ACCOUNT
100
106
 
101
107
 
102
- with connect(
103
- profile="default",
104
- pool_policy=PoolPolicy(maximum_size=8),
105
- ) as database:
108
+ with connect(profile="default") as database:
106
109
  rows = database.select_from(ACCOUNT).limit(10).fetch_all()
107
110
  ```
108
111
 
109
112
  Omit `profile` to use `selected-profile`. The context creates one process-owned
110
- pool and closes it on exit. A framework-free application can instead pass a
111
- data source directly with `connect(dsn, dialect=Dialect.MYSQL)`.
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.
112
117
 
113
118
  SQLite file paths use `database-path`. They are resolved relative to the project
114
119
  root, must remain inside it, and are opened read-only during inspection. An
115
- environment reference in the exact `${VARIABLE_NAME}` form may be used instead
116
- when the database location should be supplied by the process environment. Any
117
- other `dsn` value is literal. 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.
118
124
 
119
125
  `SecretValue` renders as `[REDACTED]`; access to its underlying value is always
120
126
  explicit. An explicit `Configuration` object takes precedence over the file,
@@ -2,7 +2,7 @@
2
2
  "name": "pyoq-docs",
3
3
  "private": true,
4
4
  "type": "module",
5
- "version": "1.0.1",
5
+ "version": "1.0.2",
6
6
  "scripts": {
7
7
  "dev": "astro dev",
8
8
  "build": "astro build && pagefind --site dist",
@@ -22,7 +22,15 @@ const COPY_ICON =
22
22
  const DONE_ICON =
23
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
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
+
25
32
  export function label(language) {
33
+ if (isTerminal(language)) return "Terminal";
26
34
  if (!language) return "Text";
27
35
  return LABELS[language] ?? language.toUpperCase();
28
36
  }
@@ -145,7 +145,12 @@
145
145
 
146
146
  async function enhance() {
147
147
  const shells = [
148
- ...document.querySelectorAll<HTMLElement>(".code-shell:not([data-ready])"),
148
+ // A terminal keeps the block it was built with. An editor would give a
149
+ // typed command line numbers and a folding margin, which is a file's
150
+ // furniture, not a prompt's.
151
+ ...document.querySelectorAll<HTMLElement>(
152
+ ".code-shell:not([data-ready]):not([data-terminal])",
153
+ ),
149
154
  ];
150
155
  if (!shells.length) return;
151
156
 
@@ -121,7 +121,10 @@ Framework-free synchronous applications should enter `connect()` once at their
121
121
  composition root. It can load the selected `pyproject.toml` profile or accept a
122
122
  direct data source with `Dialect`. The yielded `Database` is a `DslContext` with
123
123
  transactions, streaming, and pool statistics. The context owns and closes its
124
- pool. Do not enter it for every repository operation.
124
+ pool. Structured server profiles keep host, port, database, username, password,
125
+ and pool limits in one configuration source. A complete `${VARIABLE_NAME}`
126
+ value resolves from the process environment; every other string is literal.
127
+ Do not enter the context for every repository operation.
125
128
 
126
129
  Use the pure query API for reusable statements, compilation tests, advanced
127
130
  features, and code that should not know how connections are owned. Use the
@@ -0,0 +1,262 @@
1
+ ---
2
+ title: "Configuration"
3
+ summary: "Every setting PyOQ reads, and where it reads it from."
4
+ ---
5
+
6
+ Configuration lives in `pyproject.toml`, under `[tool.pyoq]`. A server profile
7
+ can keep its connection and pool settings as separate values. Each value is
8
+ literal unless the entire value has the `${VARIABLE_NAME}` form.
9
+
10
+ ```toml
11
+ [tool.pyoq]
12
+ codegen-directory = "generated/database"
13
+ codegen-package = "application.database"
14
+ selected-profile = "default"
15
+
16
+ [tool.pyoq.profiles.default]
17
+ dialect = "postgres"
18
+ host = "database.internal"
19
+ port = 5432
20
+ database = "${POSTGRES_DATABASE}"
21
+ username = "${POSTGRES_USERNAME}"
22
+ password = "${POSTGRES_PASSWORD}"
23
+ minimum-pool-size = 1
24
+ maximum-pool-size = 8
25
+ pool-checkout-timeout = 3.0
26
+
27
+ [tool.pyoq.profiles.testing]
28
+ dialect = "sqlite"
29
+ database-path = "database/testing.sqlite"
30
+ ```
31
+
32
+ ## Top level
33
+
34
+ | Setting | Means |
35
+ | --- | --- |
36
+ | `codegen-directory` | where the generated package is written, relative to the project root |
37
+ | `codegen-package` | its importable name |
38
+ | `selected-profile` | which profile a command uses when none is named |
39
+ | `schema-snapshot` | where the recorded schema is kept, relative to the project root, and inside it |
40
+ | `profiles` | the profiles themselves |
41
+
42
+ When omitted, `codegen-directory` and `codegen-package` both default to
43
+ `pyoq_generated`, and `selected-profile` defaults to `default`. Profiles are
44
+ never invented; at least one must be configured.
45
+
46
+ `codegen-directory` must stay inside the project root. A path that escapes it
47
+ is refused, because generation replaces what is there and a path that walks
48
+ out of the project is a way to replace something else.
49
+
50
+ ## A profile
51
+
52
+ | Setting | Means |
53
+ | --- | --- |
54
+ | `dialect` | `sqlite`, `postgres`, or `mysql` |
55
+ | `dsn` | a literal connection string, or a complete `${VARIABLE_NAME}` environment reference |
56
+ | `dsn-environment` | the legacy form containing only an environment variable name |
57
+ | `database-path` | a SQLite file, relative to the project root |
58
+ | `host` | server host, defaulting to `localhost` |
59
+ | `port` | server port, defaulting to `5432` for PostgreSQL or `3306` for MySQL |
60
+ | `database` | server database name |
61
+ | `username` | server user name |
62
+ | `password` | optional server password |
63
+ | `minimum-pool-size` | connections opened with the pool, defaulting to `0` |
64
+ | `maximum-pool-size` | maximum connections in this process, defaulting to `5` |
65
+ | `pool-checkout-timeout` | seconds to wait for a connection, defaulting to `30.0` |
66
+
67
+ ### Every way to name a database
68
+
69
+ A profile names its database in exactly one of the ways below. They cannot be
70
+ combined: a profile that mixes them is refused rather than resolved in some
71
+ order you would have to know.
72
+
73
+ **Every part named separately.** What a deployment that already holds its parts
74
+ separately can use directly.
75
+
76
+ ```toml
77
+ [tool.pyoq.profiles.default]
78
+ dialect = "postgres"
79
+ host = "database.internal"
80
+ port = 5432
81
+ database = "shop"
82
+ username = "shop_service"
83
+ password = "${POSTGRES_PASSWORD}"
84
+ ```
85
+
86
+ `database` and `username` are required once any structured field is present.
87
+ `host` defaults to `localhost`, and `port` to `5432` for PostgreSQL or `3306`
88
+ for MySQL. PyOQ percent-encodes the credentials and the database name while
89
+ building the connection, so a password containing `@`, `#` or `/` needs no
90
+ escaping from you.
91
+
92
+ **One connection string.**
93
+
94
+ ```toml
95
+ [tool.pyoq.profiles.default]
96
+ dialect = "mysql"
97
+ dsn = "mysql://shop_service:p%40ssw0rd@localhost:3306/shop"
98
+ ```
99
+
100
+ Here the escaping is yours: those same characters divide a URL, so a password
101
+ containing one has to be percent-encoded before it goes in.
102
+
103
+ **A connection string kept out of the file.** The same thing, with nothing
104
+ secret committed:
105
+
106
+ ```toml
107
+ [tool.pyoq.profiles.default]
108
+ dialect = "mysql"
109
+ dsn = "${MYSQL_DATABASE_URL}"
110
+ ```
111
+
112
+ **A variable name, the older form.** `dsn-environment` holds the *name* of a
113
+ variable and never a connection string:
114
+
115
+ ```toml
116
+ [tool.pyoq.profiles.default]
117
+ dialect = "mysql"
118
+ dsn-environment = "MYSQL_DATABASE_URL"
119
+ ```
120
+
121
+ It stays accepted for projects already using it. `dsn = "${MYSQL_DATABASE_URL}"`
122
+ says the same thing in the form every other setting uses.
123
+
124
+ **A SQLite file.**
125
+
126
+ ```toml
127
+ [tool.pyoq.profiles.testing]
128
+ dialect = "sqlite"
129
+ database-path = "database/testing.sqlite"
130
+ ```
131
+
132
+ The path is resolved against the project root, must stay inside it, and is
133
+ opened read-only while inspecting. A SQLite profile can use `dsn` instead, and
134
+ cannot use the structured fields. A schema source provided by an integration,
135
+ such as Django migration state, can use a profile that names no database at
136
+ all, because it never inspects a live one.
137
+
138
+ ### Literal, or read from the environment
139
+
140
+ Every profile setting is a literal unless the whole value has the
141
+ `${VARIABLE_NAME}` form. Nothing is looked up unless it asks to be.
142
+
143
+ | Written | Used as |
144
+ | --- | --- |
145
+ | `"shop_service"` | that text |
146
+ | `"PATH"` | that text, not the variable of that name |
147
+ | `"${DB_USER}"` | the value of `DB_USER` |
148
+ | `"$DB_USER"` | that text, because there are no braces |
149
+ | `"pre${DB_USER}"` | refused |
150
+
151
+ A value that is part reference and part text is refused rather than read as a
152
+ literal. Read as a literal it would be used as typed, so a password meant to
153
+ come from the environment would be sent as the text that asks for it, and the
154
+ first sign of the mistake would be a server refusing the connection.
155
+
156
+ A reference to a variable that is not set is an error, not an empty value.
157
+ PyOQ does not load `.env` files: export the variables before running a command.
158
+ Do not commit a literal that carries credentials.
159
+
160
+ ### Pool settings
161
+
162
+ Pool settings are per profile, and take a number or a reference resolving to
163
+ one. They apply to whichever way the database was named.
164
+
165
+ ```toml
166
+ [tool.pyoq.profiles.default]
167
+ dialect = "postgres"
168
+ dsn = "${POSTGRES_DATABASE_URL}"
169
+ minimum-pool-size = 1
170
+ maximum-pool-size = "${POSTGRES_POOL_SIZE}"
171
+ pool-checkout-timeout = 3.0
172
+ ```
173
+
174
+ The [framework-free MySQL application](../mysql-application/) follows this
175
+ profile through generation, runtime settings, pool ownership, repositories,
176
+ transactions, and process shutdown.
177
+
178
+ ## Opening the selected profile
179
+
180
+ The same profile can own the application database lifecycle:
181
+
182
+ ```python
183
+ from pathlib import Path
184
+
185
+ from pyoq import connect
186
+ with connect(
187
+ profile="default",
188
+ project_root=Path.cwd(),
189
+ ) as database:
190
+ run_application(database)
191
+ ```
192
+
193
+ Omit `profile` to use `selected-profile`. Pool settings from that profile are
194
+ used automatically. An explicit `pool_policy=PoolPolicy(...)` replaces all
195
+ profile pool settings for that call. This synchronous convenience API supports
196
+ all three dialects. Framework integrations and asynchronous applications use
197
+ their dedicated lifecycle APIs.
198
+
199
+ ## The project root
200
+
201
+ The project root is the containment boundary, not a search result. PyOQ does
202
+ not walk upward looking for configuration. Commands default it to the current
203
+ working directory and read `pyproject.toml` there unless `--config` names
204
+ another file inside the same root.
205
+
206
+ Configured output, snapshots, SQLite database paths, and relative configuration
207
+ paths must stay inside this directory. This prevents a mistaken command from
208
+ replacing files in a parent or unrelated project.
209
+
210
+ ## Selecting a profile
211
+
212
+ `selected-profile` is the default for every command. Override it for one run:
213
+
214
+ ```bash
215
+ pyoq inspect --project-root . --profile testing
216
+ ```
217
+
218
+ The override does not edit configuration. It only selects one of the profiles
219
+ already declared in the file.
220
+
221
+ ## Reading it yourself
222
+
223
+ ```python
224
+ from pathlib import Path
225
+ from pyoq.config import load_configuration
226
+
227
+ configuration = load_configuration(Path.cwd())
228
+ database_url = configuration.active_profile.resolve_dsn()
229
+ if database_url is not None:
230
+ connect_value = database_url.reveal()
231
+ ```
232
+
233
+ A resolved secret is a value you have to ask to see. `reveal()` is a
234
+ deliberate call, so a connection string never lands in a log through an
235
+ ordinary `repr`.
236
+
237
+ ## Unknown settings are refused
238
+
239
+ A setting PyOQ does not recognise raises
240
+ `UnknownConfigurationSettingError` rather than being ignored. A misspelled
241
+ key that is quietly skipped is a setting that silently does nothing, and the
242
+ usual way to find out is in production.
243
+
244
+ ## Under Django
245
+
246
+ There is no TOML. Django settings hold the same facts:
247
+
248
+ ```python
249
+ PYOQ = {
250
+ "codegen_directory": "app/schema",
251
+ "codegen_package": "app.schema",
252
+ }
253
+ ```
254
+
255
+ See [Django](/django/) for the full list.
256
+
257
+ ## What is deliberately not configurable
258
+
259
+ Generated output is not formatted to taste, and the generated directory is
260
+ owned entirely by the generator. Both are so that regenerating is safe: a
261
+ directory PyOQ shares with hand-written files is a directory it cannot
262
+ replace.
@@ -9,21 +9,25 @@ application process, then leave its context during application shutdown.
9
9
 
10
10
  ## Connect from a profile
11
11
 
12
- With a profile in the current project's `pyproject.toml`, connection ownership
13
- is one context:
12
+ With a profile in the current project's `pyproject.toml`, connection and pool
13
+ ownership are one context:
14
+
15
+ ```toml
16
+ [tool.pyoq.profiles.default]
17
+ dialect = "mysql"
18
+ host = "localhost"
19
+ port = 3306
20
+ database = "${MYSQL_DATABASE}"
21
+ username = "${MYSQL_USERNAME}"
22
+ password = "${MYSQL_PASSWORD}"
23
+ minimum-pool-size = 1
24
+ maximum-pool-size = 8
25
+ pool-checkout-timeout = 2.0
26
+ ```
14
27
 
15
28
  ```python
16
29
  from pyoq import connect
17
- from pyoq.query.execution import PoolPolicy
18
-
19
-
20
- policy = PoolPolicy(
21
- minimum_size=1,
22
- maximum_size=8,
23
- checkout_timeout=2.0,
24
- )
25
-
26
- with connect(profile="default", pool_policy=policy) as database:
30
+ with connect(profile="default") as database:
27
31
  rows = database.select_from(TITLES).fetch_all()
28
32
  ```
29
33
 
@@ -32,8 +36,10 @@ Omit `profile` to use `selected-profile`. Configuration is read from
32
36
  the application starts elsewhere, or `config=Path("config/database.toml")`
33
37
  for another file inside that root.
34
38
 
35
- The same profile drives generation and runtime, so its dialect and data source
36
- are not repeated in application code.
39
+ The same profile drives generation and runtime, so its dialect, connection,
40
+ and pool policy are not repeated in application code. Pass an explicit
41
+ `pool_policy=PoolPolicy(...)` only when one process needs to replace the entire
42
+ profile policy.
37
43
 
38
44
  ## Connect directly
39
45
 
@@ -42,8 +48,10 @@ Programs that do not have a project configuration can supply both values:
42
48
  ```python
43
49
  from pyoq import Dialect, connect
44
50
  from pyoq.config import DataSourceName
51
+ from pyoq.query.execution import PoolPolicy
45
52
 
46
53
 
54
+ policy = PoolPolicy(maximum_size=8)
47
55
  with connect(
48
56
  DataSourceName("${DATABASE_URL}"),
49
57
  dialect=Dialect.POSTGRES,
@@ -106,7 +114,7 @@ operations, and where transactions and shutdown belong.
106
114
  application run:
107
115
 
108
116
  ```python
109
- with connect(profile="default", pool_policy=policy) as database:
117
+ with connect(profile="default") as database:
110
118
  rows = database.select_from(TITLES).fetch_all()
111
119
  ```
112
120
 
@@ -5,10 +5,22 @@ summary: "The distribution, the extras, and what each one pulls in."
5
5
 
6
6
  PyOQ is published as **`pyoq-sql`** and imported as **`pyoq`**.
7
7
 
8
+ With uv:
9
+
10
+ ```bash
11
+ uv add pyoq-sql
12
+ ```
13
+
14
+ With pip:
15
+
8
16
  ```bash
9
17
  pip install pyoq-sql
10
18
  ```
11
19
 
20
+ `uv add` records it in `pyproject.toml` and the lockfile. To install into an
21
+ environment without recording anything, `uv pip install pyoq-sql` takes the
22
+ same arguments pip does.
23
+
12
24
  A plain install has **no dependencies at all**. SQLite works immediately,
13
25
  because Python already ships it.
14
26
 
@@ -26,7 +38,16 @@ Everything else is opt in, so a project pulls in only the drivers it uses.
26
38
  | `sanic` | `sanic` | the Sanic integration |
27
39
  | `tracing` | `opentelemetry-api` | reporting statements to OpenTelemetry |
28
40
 
29
- Combine them as needed:
41
+ Combine them as needed. Quote the name: a shell reads square brackets itself.
42
+
43
+ With uv:
44
+
45
+ ```bash
46
+ uv add "pyoq-sql[postgres,fastapi]"
47
+ uv add "pyoq-sql[django,mysql]"
48
+ ```
49
+
50
+ With pip:
30
51
 
31
52
  ```bash
32
53
  pip install "pyoq-sql[postgres,fastapi]"
@@ -39,11 +60,27 @@ turns out to speak it.
39
60
 
40
61
  ## Checking what you have
41
62
 
63
+ Inside a uv project:
64
+
65
+ ```bash
66
+ uv run python -c "import pyoq; print(pyoq.__version__)"
67
+ uv run pyoq --version
68
+ ```
69
+
70
+ Or in an activated environment:
71
+
42
72
  ```bash
43
73
  python -c "import pyoq; print(pyoq.__version__)"
44
74
  pyoq --version
45
75
  ```
46
76
 
77
+ The command line can also be run without installing PyOQ into the project at
78
+ all, which is enough to read its help or check a version:
79
+
80
+ ```bash
81
+ uvx --from pyoq-sql pyoq --version
82
+ ```
83
+
47
84
  ## Python
48
85
 
49
86
  3.11 and later. The typed builders lean on `TypeVarTuple` and modern union