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.
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/Cargo.lock +1 -1
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/Cargo.toml +1 -1
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/PKG-INFO +18 -12
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/README.md +17 -11
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/package.json +1 -1
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/code-head.mjs +8 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/CodeEditors.astro +6 -1
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/agents.md +4 -1
- pyoq_sql-1.0.2/docs/web/src/content/docs/configuration.md +262 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/connections.md +23 -15
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/installing.md +38 -1
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/mysql-application.md +27 -39
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/reference.md +1 -1
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/security.md +4 -2
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/layouts/app.css +49 -4
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/layouts/landing.css +6 -3
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/remark-code-shell.mjs +7 -2
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/remark-pairs.mjs +3 -3
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/pyproject.toml +1 -1
- pyoq_sql-1.0.2/src/pyoq/config/__init__.py +31 -0
- pyoq_sql-1.0.2/src/pyoq/config/connection.py +161 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/config/loader.py +83 -1
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/config/models.py +31 -79
- pyoq_sql-1.0.2/src/pyoq/config/values.py +142 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/serving/opening.py +33 -2
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/config/test_config.py +260 -1
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_mysql_application_guide.py +2 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/serving/test_opening.py +60 -0
- pyoq_sql-1.0.2/tests/serving/test_opening_servers.py +89 -0
- pyoq_sql-1.0.1/docs/web/src/content/docs/configuration.md +0 -163
- pyoq_sql-1.0.1/src/pyoq/config/__init__.py +0 -23
- pyoq_sql-1.0.1/tests/serving/test_opening_servers.py +0 -45
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/.gitignore +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/LICENSE +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/benchmarks/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/benchmarks/bulk_planning.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/benchmarks/fetch_execution.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/benchmarks/hydration.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/benchmarks/observability.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/benchmarks/performance_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/django.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/.gitignore +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/README.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/astro.config.mjs +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/bun.lock +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/public/.nojekyll +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/public/brand/pyoq-banner.png +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/public/brand/pyoq-banner.svg +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/public/brand/pyoq-favicon-32.png +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/public/brand/pyoq-mark-180.png +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/public/brand/pyoq-mark-512.png +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/public/brand/pyoq-mark.svg +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/AppearanceToggle.astro +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/Assumed.astro +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/Brand.astro +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/CodeCopy.astro +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/Contents.astro +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/Diagrams.astro +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/Pager.astro +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/Search.astro +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/Sidebar.astro +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/components/SiteHead.astro +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/async.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/bulk.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/cli.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/conflicts.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/diagnostics.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/dialects.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/django.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/errors.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/expressions.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/fastapi.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/first-query.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/generating.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/inserting.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/joins.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/licence.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/migrations.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/overview.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/performance.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/policies.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/relations.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/releasing.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/results.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/routines.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/sanic.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/selecting.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/serving.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/snapshots.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/testing.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/transactions.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/troubleshooting.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/types.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/updating.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content/docs/when-to-use.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/content.config.ts +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/layouts/Doc.astro +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/links.ts +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/nav.ts +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/pages/404.astro +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/pages/[slug].astro +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/pages/index.astro +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/pages/sitemap.xml.ts +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/project.ts +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/remark-base.mjs +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/remark-licence.mjs +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/src/remark-mermaid.mjs +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/docs/web/tsconfig.json +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/bulk_writes.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_integration.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/README.md +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/analytics/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/analytics/admin.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/analytics/apps.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/analytics/migrations/0001_initial.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/analytics/migrations/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/analytics/models.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/analytics/queries.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/analytics/urls.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/analytics/views.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/asgi.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/admin.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/apps.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/migrations/0001_initial.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/migrations/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/models.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/queries.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/templates/catalog/title_detail.html +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/urls.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/catalog/views.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/manage.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/routers.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/settings.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/urls.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/django_project/wsgi.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/dsl_context.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/expressions.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/fastapi_application.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/fetch_plans.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/generated_types.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/generation_pipeline.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/mysql_execution.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/nested_collections.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/observability.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/policies.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/postgres_execution.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/relation_model.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/sanic_application.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/select_queries.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/sqlite_compilation.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/sqlite_execution.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/sqlite_generation.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/sqlite_transactions.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/typed_inserts.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/typed_updates.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/examples/typed_upserts.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/rust/lib.rs +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/rust-toolchain.toml +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/scripts/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/scripts/example_requirements.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/scripts/examples.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/scripts/run_examples.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/scripts/verify_sdist.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/scripts/verify_wheels.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/__main__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/_native.pyi +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/cli/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/cli/commands.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/cli/defaults.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/cli/services.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/descriptors.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/budget.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/events.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/fingerprint.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/instrumented.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/metrics.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/observation.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/diagnostics/scoped.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/apps.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/execution.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/generation.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/management/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/management/commands/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/management/commands/makemigrations.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/management/commands/pyoq_codegen.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/parameters.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/schema.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/settings.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/django/timeouts.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/aio/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/aio/context.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/aio/queries.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/aio/writes.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/context.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/entry.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/labels.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/queries.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/result.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/dsl/writes.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/errors.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fastapi/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fastapi/dependencies.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fastapi/lifespan.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fetching/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fetching/collections.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fetching/execution.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fetching/joined.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fetching/nesting.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fetching/plans.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fetching/select_in.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/fetching/tables.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/cleanup.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/contracts.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/drift.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/lock.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/manifest.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/model.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/pipeline.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/domains.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/enums.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/exports.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/imports.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/package.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/relations.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/routines.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/rows.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/source.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/tables.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/rendering/writes.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/validation.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/generation/writer.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/hydration/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/hydration/engine.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/hydration/identity.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/hydration/plan.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/migrations/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/migrations/alembic.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/migrations/hooks.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/naming.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/policies/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/policies/bypass.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/policies/governed.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/policies/model.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/policies/rewriting.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/py.typed +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/aggregates.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/arrays.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/binding.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/capabilities.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/casts.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/choices.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/decoding.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/documents.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/aio/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/aio/operations.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/aio/pooling.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/aio/streaming.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/aio/transactions.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/batch.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/binding_style.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/compilation.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/context.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/control.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/operations.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/planning.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/pooling.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/results.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/streaming.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/execution/transactions.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/expressions.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/fields.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/commands.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/driver.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/executor.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/factory.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/operations.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/pool.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/aio/transactions.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/commands.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/compiler.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/context.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/executor.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/expressions.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/factory.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/health.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/identifiers.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/model.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/operations.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/parameters.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/planning.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/pool.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/transactions.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/mysql/writes.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/nodes.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/bulk.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/commands.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/executor.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/factory.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/operations.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/pool.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/aio/transactions.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/bulk.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/commands.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/compiler.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/context.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/executor.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/expressions.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/factory.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/health.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/identifiers.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/model.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/operations.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/parameters.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/planning.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/pool.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/transactions.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/postgres/writes.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/projections.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/raw.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/recursion.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/expressions.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/identifiers.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/projections.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/queries.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/sources.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/rendering/writes.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/results.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/routines.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/rows.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/select.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/select_nodes.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sources.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/commands.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/compiler.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/context.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/executor.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/expressions.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/factory.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/health.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/identifiers.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/model.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/operations.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/parameters.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/planning.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/pool.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/streaming.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/transactions.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/sqlite/writes.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/statements.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/values.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/vendor.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/windows.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/write_nodes.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/query/writes.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/relations/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/relations/batching.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/relations/derivation.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/relations/fetching.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/relations/graph.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/relations/loading.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/relations/model.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/relations/planning.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/runtime/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/runtime/kernels.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/runtime/python.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/runtime/selection.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/sanic/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/sanic/scope.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/sanic/workers.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/codec.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/models.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/connection.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/dsn.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/records.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/reflection.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/source.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/sql.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/mysql/types.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/connection.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/records.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/reflection.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/source.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/sql.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/postgres/types.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/registry.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/source.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/connection.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/records.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/reflection.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/source.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/sql.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/schema/sqlite/types.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/serving/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/serving/databases.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/snapshots/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/snapshots/drift.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/snapshots/files.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/snapshots/routing.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/snapshots/source.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/tracing/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/tracing/spans.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/src/pyoq/unset.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/architecture/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/architecture/test_layering.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/cli/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/cli/test_cli.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/config/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/conftest.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/aliasing_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/array_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/async_execution_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/cast_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/collection_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/compiler_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/execution_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/fetch_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/joined_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/json_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/lateral_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/locking_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/null_order_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/recursion_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/roundtrip_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/routine_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/row_value_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/select_in_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/snapshot_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/support.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/contracts/window_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/diagnostics/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/diagnostics/test_budget.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/diagnostics/test_events.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/diagnostics/test_fingerprint.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/diagnostics/test_instrumented.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/diagnostics/test_instrumented_aio.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/diagnostics/test_metrics.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/diagnostics/test_observation.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/diagnostics/test_scoped.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_api_reference.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_capability_documentation.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_ci_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_cognitive_complexity.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_every_example_runs.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_examples_run.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_fetch_execution_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_hydration_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_one_source_of_versions.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_performance_contract.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_public_attribution.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_run_examples.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_verify_sdist.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/distribution/test_verify_wheels.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/catalog/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/catalog/apps.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/catalog/fields.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/catalog/migrations/0001_initial.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/catalog/migrations/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/catalog/models.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/conftest.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/routing.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/test_example.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/test_execution.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/test_generation.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/test_generation_equivalence.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/test_makemigrations.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/test_parameters.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/test_settings.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/test_timeouts.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/django/test_transactions.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/dsl/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/dsl/aio_support.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/dsl/conftest.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/dsl/test_aio.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/dsl/test_aio_writes.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/dsl/test_context.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/dsl/test_queries.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/dsl/test_result.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/dsl/test_writes.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fastapi/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fastapi/conftest.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fastapi/test_async_routes.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fastapi/test_lifespan.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fastapi/test_routes.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_collection_execution.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_collections.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_dialect_aliasing.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_dialect_fetching.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_dialect_fetching_aio.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_execution.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_joined.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_joined_fetch.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_multi_schema_relations.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_nesting.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_plans.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_select_in.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_select_in_reduction.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/fetching/test_typed_rows.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/test_contracts.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/test_filesystem.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/test_generated_overloads.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/test_generated_package_imports.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/test_generated_relations.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/test_generated_result_types.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/test_generated_types.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/test_manifest.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/generation/test_pipeline.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/hydration/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/hydration/test_engine.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/hydration/test_engine_properties.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/hydration/test_identity.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/policies/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/policies/test_adapters.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/policies/test_isolation.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/policies/test_isolation_aio.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/policies/test_no_bypass.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/policies/test_rewriting.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/mysql/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/mysql/aio/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/mysql/aio/test_driver_failures.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/mysql/aio/test_execution.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/mysql/aio/test_read_throughput.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/mysql/test_compiler.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/mysql/test_driver_failures.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/mysql/test_driver_recovery.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/mysql/test_execution.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/aio/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/aio/test_driver_failures.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/aio/test_execution.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/aio/test_final_paths.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/aio/test_lifecycle.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/aio/test_state_guards.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/test_command_translation.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/test_compiler.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/test_driver_failures.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/test_driver_recovery.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/test_execution.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/test_pipeline_bulk.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/postgres/test_transaction_lifecycle.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/sqlite/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/sqlite/test_bulk_execution.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/sqlite/test_compiler.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/sqlite/test_control.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/sqlite/test_dialect_contracts.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/sqlite/test_executor.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/sqlite/test_pool.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/sqlite/test_streaming.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/sqlite/test_transactions.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_advanced_types.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_arrays.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_binding.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_capabilities.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_casts.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_choices.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_collection_execution.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_collection_rendering.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_decoding.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_expressions.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_json.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_locking.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_parameter_styles.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_recursion.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_results.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_routines.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_rows.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_select_queries.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_vendor.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_watchdog_cancellation.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/test_windows.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/writes/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/writes/test_insert_statements.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/writes/test_update_delete_statements.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/query/writes/test_upsert_statements.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/relations/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/relations/test_batching.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/relations/test_derivation.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/relations/test_fetching.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/relations/test_graph.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/relations/test_loading.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/relations/test_planning.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/runtime/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/runtime/test_kernels.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/runtime/test_runtime.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/sanic/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/sanic/conftest.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/sanic/notes.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/sanic/test_attachment.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/sanic/test_scope.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/sanic/test_synchronous_scope.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/sanic/test_workers.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/sanic/worker_application.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/mysql/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/mysql/test_catalog_records.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/mysql/test_dsn.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/mysql/test_reflection.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/mysql/test_types.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/postgres/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/postgres/test_catalog_records.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/postgres/test_reflection.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/postgres/test_types.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/sqlite/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/sqlite/test_records.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/sqlite/test_reflection.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/sqlite/test_source.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/sqlite/test_sql.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/sqlite/test_types.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/test_codec.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/test_registry.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/schema/test_schema.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/serving/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/snapshots/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/snapshots/test_alembic_lifecycle.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/snapshots/test_dialect_snapshots.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/snapshots/test_drift_and_hooks.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/snapshots/test_offline_generation.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/snapshots/test_snapshot_files.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/support/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/support/checkers.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/support/generation_fixtures.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/support/mysql.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/support/postgres.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/support/schema_fixtures.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/test_descriptors.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/test_errors.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/test_naming.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/test_package.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/tracing/__init__.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/tests/tracing/test_spans.py +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/typings/cognitive_complexity/__init__.pyi +0 -0
- {pyoq_sql-1.0.1 → pyoq_sql-1.0.2}/typings/cognitive_complexity/api.pyi +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: pyoq-sql
|
|
3
|
-
Version: 1.0.
|
|
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
|
-
|
|
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
|
|
155
|
-
data source directly with
|
|
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
|
|
160
|
-
|
|
161
|
-
|
|
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
|
-
|
|
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
|
|
111
|
-
data source directly with
|
|
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
|
|
116
|
-
|
|
117
|
-
|
|
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,
|
|
@@ -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
|
-
|
|
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.
|
|
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
|
|
13
|
-
|
|
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
|
-
|
|
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
|
|
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"
|
|
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
|