querysource 4.5.16__tar.gz → 5.0.0__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.
- {querysource-4.5.16 → querysource-5.0.0}/.claude/agents/sdd-coder.md +3 -1
- {querysource-4.5.16 → querysource-5.0.0}/.claude/agents/sdd-worker.md +6 -1
- {querysource-4.5.16 → querysource-5.0.0}/.claude/commands/sdd-done.md +30 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/commands/sdd-spec.md +12 -4
- {querysource-4.5.16 → querysource-5.0.0}/.claude/commands/sdd-task.md +59 -9
- {querysource-4.5.16 → querysource-5.0.0}/CHANGES.rst +19 -0
- {querysource-4.5.16/querysource.egg-info → querysource-5.0.0}/PKG-INFO +1 -1
- {querysource-4.5.16 → querysource-5.0.0}/generated/Query.json +13 -1
- {querysource-4.5.16 → querysource-5.0.0}/policies/defaults.yaml +2 -0
- {querysource-4.5.16 → querysource-5.0.0}/pyproject.toml +63 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/_version.py +3 -3
- querysource-5.0.0/querysource/auth/slug_visibility.py +471 -0
- querysource-5.0.0/querysource/cache_identity.py +94 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/conf.py +12 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/connections.py +40 -18
- {querysource-4.5.16 → querysource-5.0.0}/querysource/handlers/__init__.py +12 -9
- {querysource-4.5.16 → querysource-5.0.0}/querysource/handlers/_pagination.py +90 -10
- {querysource-4.5.16 → querysource-5.0.0}/querysource/handlers/abstract.py +117 -4
- querysource-5.0.0/querysource/handlers/describe.py +354 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/handlers/log.py +35 -10
- querysource-5.0.0/querysource/handlers/manager.py +890 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/handlers/multi.py +145 -10
- {querysource-4.5.16 → querysource-5.0.0}/querysource/handlers/scheduler.py +60 -16
- {querysource-4.5.16 → querysource-5.0.0}/querysource/handlers/service.py +106 -24
- querysource-5.0.0/querysource/handlers/tenant.py +277 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/interfaces/connections.py +83 -38
- {querysource-4.5.16 → querysource-5.0.0}/querysource/interfaces/queries.py +106 -38
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/output.py +29 -12
- querysource-5.0.0/querysource/ownership_logging.py +124 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/abstract.py +37 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/cassandra.py +3 -1
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/default.py +3 -1
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/documentdb.py +3 -1
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/mysql.py +3 -1
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/pg.py +27 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sql.py +6 -2
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sqlserver.py +3 -1
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/base.py +10 -9
- querysource-5.0.0/querysource/queries/describe.py +260 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/__init__.py +151 -26
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/sources/executors.py +79 -25
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/sources/query.catalog.yaml +9 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/sources/query.py +6 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/obj.py +30 -22
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/qs.py +51 -25
- querysource-5.0.0/querysource/repositories/__init__.py +4 -0
- querysource-5.0.0/querysource/repositories/definitions.py +496 -0
- querysource-5.0.0/querysource/scheduler/jobs.py +204 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/scheduler/scheduler.py +298 -94
- {querysource-4.5.16 → querysource-5.0.0}/querysource/services.py +144 -21
- querysource-5.0.0/querysource/tenant_errors.py +20 -0
- querysource-5.0.0/querysource/tenant_models.py +69 -0
- querysource-5.0.0/querysource/tenants.py +439 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/types/validators.cpp +4086 -2466
- {querysource-4.5.16 → querysource-5.0.0}/querysource/types/validators.pyx +55 -6
- querysource-5.0.0/querysource/utils/vocabulary.py +211 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/version.py +1 -1
- {querysource-4.5.16 → querysource-5.0.0/querysource.egg-info}/PKG-INFO +1 -1
- {querysource-4.5.16 → querysource-5.0.0}/querysource.egg-info/SOURCES.txt +44 -1
- {querysource-4.5.16 → querysource-5.0.0}/querysource.egg-info/scm_file_list.json +116 -0
- querysource-5.0.0/querysource.egg-info/scm_version.json +8 -0
- querysource-5.0.0/scripts/sdd/check_task_graph.py +334 -0
- querysource-5.0.0/tests/auth/test_slug_visibility.py +316 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/handlers/conftest.py +13 -2
- querysource-5.0.0/tests/handlers/test_describe_columns.py +281 -0
- querysource-5.0.0/tests/handlers/test_describe_detail.py +174 -0
- querysource-5.0.0/tests/handlers/test_describe_list.py +186 -0
- querysource-5.0.0/tests/handlers/test_describe_tenant.py +428 -0
- querysource-5.0.0/tests/handlers/test_describe_vocabulary.py +69 -0
- querysource-5.0.0/tests/handlers/test_pagination_describe_helpers.py +58 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/handlers/test_queryservice_pbac_smoke.py +51 -1
- {querysource-4.5.16 → querysource-5.0.0}/tests/integration/test_multiquery_output_errors.py +48 -6
- {querysource-4.5.16 → querysource-5.0.0}/tests/policies/test_default_policies_load.py +18 -0
- querysource-5.0.0/tests/tenants/conftest.py +152 -0
- querysource-5.0.0/tests/tenants/test_integration.py +457 -0
- querysource-5.0.0/tests/tenants/test_tenant_bootstrap_lookup.py +274 -0
- querysource-5.0.0/tests/tenants/test_tenant_child_execution.py +456 -0
- querysource-5.0.0/tests/tenants/test_tenant_definition_model.py +117 -0
- querysource-5.0.0/tests/tenants/test_tenant_execution_context.py +198 -0
- querysource-5.0.0/tests/tenants/test_tenant_http_routes.py +233 -0
- querysource-5.0.0/tests/tenants/test_tenant_management_reads.py +430 -0
- querysource-5.0.0/tests/tenants/test_tenant_management_writes.py +270 -0
- querysource-5.0.0/tests/tenants/test_tenant_observability_outputs.py +237 -0
- querysource-5.0.0/tests/tenants/test_tenant_policy_preflight.py +276 -0
- querysource-5.0.0/tests/tenants/test_tenant_registry.py +404 -0
- querysource-5.0.0/tests/tenants/test_tenant_remote_protocol.py +238 -0
- querysource-5.0.0/tests/tenants/test_tenant_repository_reads.py +270 -0
- querysource-5.0.0/tests/tenants/test_tenant_repository_writes.py +325 -0
- querysource-5.0.0/tests/tenants/test_tenant_result_cache.py +240 -0
- querysource-5.0.0/tests/tenants/test_tenant_rollout_documentation.py +129 -0
- querysource-5.0.0/tests/tenants/test_tenant_scheduler_api_jobs.py +352 -0
- querysource-5.0.0/tests/tenants/test_tenant_scheduler_registry.py +309 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_multiqs_remote_dispatch.py +23 -3
- querysource-5.0.0/tests/test_route_registration.py +316 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_scheduler_core.py +9 -2
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_scheduler_handler_unit.py +81 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_scheduler_jobs.py +83 -4
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_scheduler_multi_routing.py +6 -3
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_threadquery_executor.py +9 -4
- {querysource-4.5.16 → querysource-5.0.0}/tests/unit/test_multiqs_output_raise.py +27 -2
- querysource-5.0.0/tests/unit/test_provider_describe_columns.py +149 -0
- querysource-5.0.0/tests/unit/test_slug_describer.py +196 -0
- querysource-5.0.0/tests/unit/test_udf_keyword_resolution.py +109 -0
- querysource-5.0.0/tests/unit/test_vocabulary.py +70 -0
- querysource-4.5.16/querysource/handlers/manager.py +0 -521
- querysource-4.5.16/querysource/scheduler/jobs.py +0 -122
- querysource-4.5.16/querysource.egg-info/scm_version.json +0 -8
- querysource-4.5.16/tests/test_route_registration.py +0 -100
- {querysource-4.5.16 → querysource-5.0.0}/.agent/rules/async-programming-expert.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.agent/rules/code-reviewer.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.agent/rules/cython-development.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.agent/rules/prompt-expert.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.agent/rules/python-development.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.agent/rules/rust-development.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.agent/workflows/create-parrot-tool.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.agent/workflows/create-workflow.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.agent/workflows/debug-regressions-with-git-bisect-binary-search.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.agent/workflows/generate-tests.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.agent/workflows/git-new-feature.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.agent/workflows/parrot-mcp-server.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.agent/workflows/release_package.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.agent/workflows/start-flow.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.bumpversion.cfg +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/agents/code-review.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/agents/code-reviewer.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/agents/qa-runner.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/agents/sdd-autopilot.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/agents/sdd-feedback.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/agents/sdd-ideation.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/agents/sdd-planner.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/agents/sdd-qa.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/agents/sdd-research.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/agents/sdd-secondopinion.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/commands/bookstore.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/commands/parrotwiki.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/commands/pr-review.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/commands/release.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/commands/remove-worktree.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/commands/sdd-brainstorm.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/commands/sdd-codereview.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/commands/sdd-explain.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/commands/sdd-fromjira.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/commands/sdd-insight.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/commands/sdd-next.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/commands/sdd-proposal.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/commands/sdd-start.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/commands/sdd-status.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/commands/sdd-tojira.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/commands/security-check.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/hooks/dangerous-actions-blocker.sh +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/hooks/sdd-worker-format.sh +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/rules/aws-cost-optimization.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/rules/code-reviewer.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/rules/codebase-conventions.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/rules/cython-development.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/rules/python-development.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/rules/rust-development.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/rules/using-git-worktrees.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/rules/worktree-pr-and-clean.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/rules/worktree-start-feature.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/rules/worktree-status.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/skills/bookstore/SKILL.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/skills/meta-prompting/SKILL.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/skills/meta-prompting/analyze-complexity/SKILL.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/skills/meta-prompting/assess-quality/SKILL.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/skills/meta-prompting/extract-context/SKILL.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/skills/meta-prompting/meta-prompt-iterate/SKILL.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.claude/workflows/sdd-insight.js +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.github/dependabot.yml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.github/workflows/codeql-analysis.yml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.github/workflows/release.yml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.isort.cfg +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.jupyter/jupyter_notebook_config.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.parrot/wiki.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.parrot/wiki.local.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.pre-commit-config.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/.pylintrc +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/CODE_OF_CONDUCT.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/CONTRIBUTING.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/INSTALL +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/JOIN_CONDITIONS_FEATURE.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/JOIN_CONDITIONS_SUMMARY.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/LICENSE +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/MANIFEST.in +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/Makefile +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/README.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/app.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/bin/README.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/conftest.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/AirtableSource.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/Concat.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/DWHDestination.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/DropCols.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/FileSource.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/Filter.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/FilterCols.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/Forecast.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/GoogleMaps.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/GroupBy.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/Info.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/Join.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/Map.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/Melt.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/Merge.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/NormalizeColumns.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/PluckCols.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/S3Source.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/SharepointSource.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/SmartSheetSource.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/Table.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/TableDestination.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/TableOutput.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/TableOutputAdapter.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/TableSource.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/ToS3.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/ToSharepoint.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/correlation.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/crosstab.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/pivot.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/tExplode.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/tOrder.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/generated/tPandas.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/gunicorn_config.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/mypy.ini +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/nav.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/policies/HARDENING.md +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/policies/authorized.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/policies/baseline.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/policies/datasources.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/policies/drivers.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/policies/raw_queries.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/policies/slugs.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/policies/superusers.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/pytest.ini +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/__cli__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/auth/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/auth/_resource_types.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/auth/credentials.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/auth/pbac.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/cache/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/cache/backends/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/cache/backends/abstract.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/cache/backends/memcache.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/cache/backends/redis.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/cache/base.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/cli/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/cli/generate_docs.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/abstract.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/arangodb.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/athena.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/bigquery.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/cassandra.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/clickhouse.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/cockroachdb.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/couchbase.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/couchdb.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/countries.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/delta.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/documentdb.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/dynamodb.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/elastic.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/ga.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/gcalc.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/hazel.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/iceberg.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/influx.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/jdbc.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/jira.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/mariadb.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/memcached.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/mongo.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/mysql.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/odbc.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/openweather.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/oracle.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/pg.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/pg_admin.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/postgres.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/py.typed +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/qs.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/redis.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/rest.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/rethink.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/sa.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/salesforce.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/scylladb.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/sqlalchemy.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/sqlite.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/sqlserver.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/upc.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/drivers/zipcodeapi.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/handlers/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/handlers/datasource.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/handlers/utils.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/introspection.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/datasources/models.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/events/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/exceptions.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/handlers/components.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/handlers/executor.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/handlers/integrations/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/handlers/integrations/airtable.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/handlers/outputs/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/handlers/outputs/tableOutput/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/handlers/outputs/tableOutput/postgres.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/handlers/outputs/tableOutput/table.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/handlers/variables.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/interfaces/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/interfaces/airtable.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/interfaces/credentials.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/interfaces/databases/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/interfaces/databases/abstract.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/interfaces/databases/bigquery.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/interfaces/databases/db.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/interfaces/databases/mongo.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/interfaces/databases/rethink.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/interfaces/http.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/interfaces/playwright_service.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/interfaces/selenium_service.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/libs/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/libs/encoders.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/libs/functions/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/libs/py.typed +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/models.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/destinations/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/destinations/abstract.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/destinations/dwh.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/destinations/s3.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/destinations/sharepoint.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/destinations/table.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/dt/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/dt/abstract.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/dt/arrow.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/dt/dt.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/dt/factory.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/dt/iter.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/dt/modin.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/dt/pandas.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/dt/polars.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/tables/TableOutput/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/tables/TableOutput/abstract.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/tables/TableOutput/bigquery.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/tables/TableOutput/documentdb.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/tables/TableOutput/mongodb.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/tables/TableOutput/mysql.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/tables/TableOutput/postgres.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/tables/TableOutput/rethink.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/tables/TableOutput/sa.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/tables/TableOutput/table.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/tables/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/writers/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/writers/abstract.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/writers/bokeh.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/writers/clustering.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/writers/csv.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/writers/describe.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/writers/eda.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/writers/excel.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/writers/html.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/writers/json.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/writers/pdf.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/writers/pickle.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/writers/plotly.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/writers/profiling.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/writers/report.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/writers/table.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/writers/tsv.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/writers/txt.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/outputs/writers/xml.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/abstract.c +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/abstract.pxd +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/abstract.pyx +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/arangodb.c +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/arangodb.pxd +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/arangodb.pyx +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/bigquery.c +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/bigquery.pxd +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/bigquery.pyx +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/cql.c +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/cql.pxd +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/cql.pyx +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/deltatbl.c +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/deltatbl.pxd +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/deltatbl.pyx +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/elastic.cpp +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/elastic.pxd +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/elastic.pyx +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/iceberg.c +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/iceberg.pxd +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/iceberg.pyx +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/influx.c +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/influx.pxd +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/influx.pyx +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/mongo.cpp +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/mongo.pxd +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/mongo.pyx +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/parser.c +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/parser.pxd +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/parser.pyx +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/pgsql.c +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/pgsql.pxd +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/pgsql.pyx +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/rethink.c +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/rethink.pxd +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/rethink.pyx +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/sosql.c +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/sosql.pxd +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/sosql.pyx +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/sql.c +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/sql.pxd +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/sql.pyx +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/sqlserver.c +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/sqlserver.pxd +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/parsers/sqlserver.pyx +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/plugins/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/plugins/importer.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/plugins/sources/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/arangodb.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/bigquery.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/db.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/deltatbl.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/dummy.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/elastic.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/external.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/http.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/iceberg.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/influx.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/py.typed +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/rest.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/rethink.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/salesforce.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/scylladb.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/abstract.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/amazon.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/countries.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/ga.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/geofcc.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/gmaps.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/graphcountries.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/graphql.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/http.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/hubspot.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/openweather.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/parsers/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/parsers/amproduct.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/parsers/xpath.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/pokemon.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/populartimes.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/py.typed +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/rest.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/retailnext.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/rssapp.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/salesforce.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/scrapper.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/shoppertrack.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/swop.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/uap.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/upc.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/wm_stores.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/zammad.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/providers/sources/zipcodeapi.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/py.typed +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/qs_parsers/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/executor.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/models.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/_introspect.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/abstract.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/components/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/components/abstract.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/destinations/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/destinations/dwh.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/destinations/s3.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/destinations/sharepoint.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/destinations/table.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/operators/Concat.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/operators/GroupBy.catalog.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/operators/GroupBy.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/operators/Info.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/operators/Join.catalog.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/operators/Join.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/operators/Melt.catalog.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/operators/Melt.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/operators/Merge.catalog.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/operators/Merge.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/operators/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/operators/abstract.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/operators/filter/Filter.catalog.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/operators/filter/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/operators/filter/flt.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/registry.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/sources/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/sources/airtable.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/sources/base.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/sources/file.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/sources/s3.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/sources/sharepoint.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/sources/smartsheet.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/sources/table.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/DropCols.catalog.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/DropCols.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/FilterCols.catalog.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/FilterCols.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/Forecast.catalog.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/Forecast.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/Map.catalog.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/Map.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/NormalizeColumns.catalog.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/NormalizeColumns.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/PluckCols.catalog.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/PluckCols.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/abstract.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/correlation.catalog.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/correlation.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/crosstab.catalog.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/crosstab.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/google/GoogleMaps.catalog.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/google/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/google/maps.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/pivot.catalog.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/pivot.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/tExplode.catalog.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/tExplode.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/tOrder.catalog.yaml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/tOrder.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/queries/multi/transformations/tPandas.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/scheduler/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/scheduler/notifications.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/template/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/template/parser.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/types/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/types/converters.cpp +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/types/converters.pyx +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/types/dt/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/types/dt/filters.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/types/dt/transforms.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/types/py.typed +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/types/typedefs.c +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/types/typedefs.pyx +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/utils/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/utils/cache_serialization.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/utils/dataframes.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/utils/errors.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/utils/events.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/utils/fn.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/utils/functions.cpp +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/utils/functions.pyx +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/utils/getfunc.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/utils/handlers.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/utils/parseqs.cpp +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/utils/parseqs.pyx +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource/utils/validators.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource.egg-info/dependency_links.txt +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource.egg-info/entry_points.txt +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource.egg-info/not-zip-safe +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource.egg-info/requires.txt +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/querysource.egg-info/top_level.txt +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/run.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/rust/Cargo.lock +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/rust/Cargo.toml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/rust/pyproject.toml +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/rust/src/arangodb_parser.rs +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/rust/src/bigquery_parser.rs +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/rust/src/cql_parser.rs +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/rust/src/elastic_parser.rs +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/rust/src/filter_common.rs +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/rust/src/flux_parser.rs +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/rust/src/lib.rs +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/rust/src/mongo_parser.rs +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/rust/src/mssql_parser.rs +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/rust/src/parseqs.rs +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/rust/src/pgsql_parser.rs +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/rust/src/rethink_parser.rs +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/rust/src/safe_dict.rs +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/rust/src/soql_parser.rs +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/rust/src/sql_parser.rs +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/rust/src/validators.rs +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/scripts/remove_worktree.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/scripts/sdd/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/scripts/sdd/check_id_collisions.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/scripts/sdd/close_task.sh +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/scripts/sdd/ensure_worktree.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/scripts/sdd/heal_orphans.sh +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/scripts/sdd/id_ledger.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/scripts/sdd/insight.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/scripts/sdd/lint_new.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/scripts/sdd/migrate_index.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/scripts/sdd/reserve_ids.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/scripts/sdd/sdd_meta.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/setup.cfg +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/setup.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/static/notebook/bundle.js +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/templates/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/templates/base.html +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/templates/default.html +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/templates/default_table.html +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/templates/fontlist-v330.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/templates/fontlist-v390.json +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/templates/table_charts.html +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/auth/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/auth/test_credentials.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/auth/test_pbac_bootstrap.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/check_concurrent_get_slug.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/conftest.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/datasources/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/datasources/test_datasource_view_pbac.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/datasources/test_driver_factory_session.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/datasources/test_pg_admin_registration.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/datasources/test_pg_params_for.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/handlers/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/handlers/test_abstract_pbac_helpers.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/handlers/test_airtable_oauth.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/handlers/test_multiquery_pbac_smoke.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/handlers/test_query_param_exclusion.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/handlers/test_queryexecutor_pbac_smoke.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/handlers/test_querymanager_pagination.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/integration/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/integration/test_csv_stream_response.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/integration/test_datasource_endpoint.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/integration/test_pbac_credentials.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/integration/test_pbac_enforcement.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/integration/test_pbac_listing.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/integration/test_slug_injection.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/integration/test_slug_regression.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/interfaces/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/interfaces/test_airtable_interface.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/multi/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/multi/sources/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/multi/sources/test_airtable_source.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/multi/sources/test_registry.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/perf/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/perf/test_pbac_overhead.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/policies/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/policies/test_authorized_policy.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/scheduler/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/scheduler/test_parse_trigger_shorthands.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/scheduler/test_shorthand_loaders.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/services/__init__.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/services/test_querysource_setup_pbac.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_abstract_multi.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_abstract_refactor.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_api.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_arangodb_parser.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_catalog_colcols.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_catalog_correlation.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_catalog_filter.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_catalog_forecast.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_catalog_googlemaps.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_catalog_groupby.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_catalog_map.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_catalog_pivot.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_catalog_remote.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_catalog_texplode.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_catalog_torder.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_cli_generate_docs.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_column_filters.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_component_handler.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_component_registry.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_conf_airtable.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_destination_base.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_destination_dwh.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_destination_integration.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_destination_s3.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_destination_sharepoint.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_destination_table.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_destinations_documentation_endpoint.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_elastic_parser.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_error_formatter.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_eval.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_feat102_error_redaction.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_filters_drop_duplicates.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_grouping_sync.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_info_eda.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_info_eda_e2e.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_info_eda_integration.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_join_conditions.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_join_with_column_filter.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_local_executor.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_multi_destinations_subpackage.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_multiqs_column_transforms.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_multiqs_destination_dispatch.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_multiqs_slug_sources_normalize.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_multiqs_sources_integration.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_queryslug_concurrency.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_querysource_setup_airtable.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_qworker_config.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_remote_executor.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_rss.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_rust_parsers.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_scheduler_handler_integration.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_scheduler_integration.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_scheduler_notifications.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_schema_introspectable.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_source_registry.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_source_s3.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_source_sharepoint.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_source_smartsheet.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_source_table.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_sql_parser_combinations.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_table_output_postgres.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_texplode.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_thread_file_refactor.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_thread_query_refactor.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_thread_source_base.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/test_zammad_search.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/unit/test_csv_writer_dataframe.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/unit/test_cython_filter_fallback.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/unit/test_datasource_redaction.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/unit/test_error_payload.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/unit/test_handler_output_status.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/unit/test_iter_format_dataframe.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/unit/test_output_error.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/unit/test_provider_raw_query_validated.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/unit/test_qs_parsers_validated.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tests/unit/test_raw_query_cond_definition_wiring.py +0 -0
- {querysource-4.5.16 → querysource-5.0.0}/tox.ini +0 -0
|
@@ -121,7 +121,9 @@ VERIFICATION CHECKLIST for TASK-<NNN>:
|
|
|
121
121
|
If ANY check fails, fix it or STOP and report.
|
|
122
122
|
|
|
123
123
|
### e) Validate
|
|
124
|
-
-
|
|
124
|
+
- Do NOT run `ruff`/`black` or spend turns on style: the engine runs `ruff check --fix` plus the
|
|
125
|
+
repo formatter on your committed files at merge time and commits the result itself. Style debt
|
|
126
|
+
that remains is fixed once, feature-wide, by `/sdd-done`.
|
|
125
127
|
- Run THIS task's acceptance-criteria tests.
|
|
126
128
|
- If stuck after 3 attempts, stop and report the failure clearly instead of
|
|
127
129
|
committing broken code — the orchestrator treats an unresolved failure as
|
|
@@ -244,6 +244,9 @@ consolidate, and own SDD state. Coders (`sdd-coder`) run one task each in their
|
|
|
244
244
|
green → step (g) of the Fallback loop for this task, with a Completion Note that ends with
|
|
245
245
|
`Seat: <seat_label> · Backend: <backend> · Model: <model> · Attempts: <n> · Duration: <sum duration_s> · Tokens: <usage>`
|
|
246
246
|
taken from `attempts[*]`; red → treat as `failed`.
|
|
247
|
+
The engine already ran `ruff check --fix` + the repo formatter and committed it (`lint.commit`). Fix ONLY
|
|
248
|
+
`lint.errors` (syntax errors / undefined names) in this worktree; ignore `lint.residual` — style debt is
|
|
249
|
+
fixed once, feature-wide, by `/sdd-done`. Never run `ruff`/`black` per task yourself.
|
|
247
250
|
- `merge_conflict` → `git merge <branch>` in this worktree, resolve, commit, then `coder_merge(task_id)` again.
|
|
248
251
|
- `failed` with `diagnostics` starting `branch_not_merged:` → the engine merged nothing (it never answers
|
|
249
252
|
`merged` unless the branch is an ancestor of the feature branch). Run
|
|
@@ -295,7 +298,9 @@ VERIFICATION CHECKLIST for TASK-<NNN>:
|
|
|
295
298
|
If ANY check fails, fix or STOP.
|
|
296
299
|
|
|
297
300
|
### e) Validate (in worktree)
|
|
298
|
-
-
|
|
301
|
+
- Lint mechanically, never by hand (this path has no engine to do it): `ruff check --fix <task .py files>`, then
|
|
302
|
+
`black <task .py files>` only if `pyproject.toml` has `[tool.black]`. Fix only syntax errors / undefined names
|
|
303
|
+
(`ruff check --select E9,F63,F7,F82`); leave remaining style findings to `/sdd-done`.
|
|
299
304
|
- Run acceptance-criteria tests.
|
|
300
305
|
- If stuck after 3 attempts, mark as `"done-with-issues"`.
|
|
301
306
|
|
|
@@ -115,6 +115,35 @@ test -f <worktree-path>/<filepath>
|
|
|
115
115
|
its acceptance-criteria tests during `/sdd-start` or `sdd-worker` execution.
|
|
116
116
|
Re-running them at close time adds latency without new signal.
|
|
117
117
|
|
|
118
|
+
### 4.5. Full Lint Pass (once per feature)
|
|
119
|
+
|
|
120
|
+
Per-task lint is engine-owned and only auto-fixes (`sdd-coder` engine, merge
|
|
121
|
+
boundary). This step is the ONE place the repo's full ruff rule set is enforced
|
|
122
|
+
for the feature — never per task. With `--dry-run`, run only the final
|
|
123
|
+
`ruff check` and report; do not fix or commit.
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
WT="<worktree-path>"
|
|
127
|
+
git -C "$WT" fetch origin <base_branch>
|
|
128
|
+
mapfile -t PY < <(git -C "$WT" diff --name-only --diff-filter=ACMR "origin/<base_branch>...HEAD" -- '*.py')
|
|
129
|
+
if [ ${#PY[@]} -gt 0 ]; then
|
|
130
|
+
(cd "$WT" && ruff check --fix --exit-zero --quiet "${PY[@]}")
|
|
131
|
+
if grep -q '^\[tool\.black\]' "$WT/pyproject.toml"; then (cd "$WT" && black -q "${PY[@]}"); fi
|
|
132
|
+
git -C "$WT" add -- "${PY[@]}"
|
|
133
|
+
git -C "$WT" diff --cached --quiet || git -C "$WT" commit -m "style(<slug>): FEAT-<ID> — full lint pass"
|
|
134
|
+
(cd "$WT" && ruff check --output-format concise "${PY[@]}")
|
|
135
|
+
fi
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Then fix what `ruff check` still reports, in those files only (pre-existing
|
|
139
|
+
violations in a touched file included — that is deliberate code improvement):
|
|
140
|
+
- Keep each fix behavior-neutral; when one is not (e.g. narrowing a blind
|
|
141
|
+
`except Exception`), run the tests of the touched module before committing.
|
|
142
|
+
- Commit as `style(<slug>): FEAT-<ID> — lint fixes`.
|
|
143
|
+
- A finding you cannot fix safely goes under **Lint residual** in the report.
|
|
144
|
+
Residual syntax errors / undefined names (`E9`, `F63`, `F7`, `F82`) are merge
|
|
145
|
+
blockers: they turn Step 6 into the "issues" branch. Other residue does not.
|
|
146
|
+
|
|
118
147
|
### 5. Build Verification Report
|
|
119
148
|
Classify each task:
|
|
120
149
|
|
|
@@ -130,6 +159,7 @@ Worktree: .claude/worktrees/feat-<ID>-<slug>
|
|
|
130
159
|
Branch: feat-<ID>-<slug>
|
|
131
160
|
Commits found: <N>
|
|
132
161
|
Tasks: <total> total, <verified> verified, <partial> partial, <missing> missing
|
|
162
|
+
Lint: <autofixed files> auto-fixed, <fixed> hand-fixed, <residual> residual (<blocking> blocking)
|
|
133
163
|
|
|
134
164
|
✅ TASK-096 — Scene Editor Refactor
|
|
135
165
|
Commits: feat(videoreel): TASK-096 — Scene Editor Refactor (abc1234)
|
|
@@ -537,9 +537,17 @@ stay with the thinking model — eligibility never delegates a design choice.
|
|
|
537
537
|
|
|
538
538
|
**Worktree hint (new section in spec):**
|
|
539
539
|
Include a `## Worktree Strategy` section in the spec with:
|
|
540
|
-
-
|
|
541
|
-
|
|
542
|
-
|
|
540
|
+
- Isolation: always ONE feature worktree per spec; the `sdd-coder` engine gives
|
|
541
|
+
each task its own sub-worktree inside it. Do not write "tasks run
|
|
542
|
+
sequentially" — that is not an isolation choice, and `/sdd-task` must not
|
|
543
|
+
turn it into a dependency chain.
|
|
544
|
+
- Module dependency graph: which modules need which (M2 → M1 because M2 imports
|
|
545
|
+
M1's `<symbol>`), with the evidence. Modules without an edge between them
|
|
546
|
+
are expected to run concurrently.
|
|
547
|
+
- Shared files: files more than one module modifies (their tasks get serialized).
|
|
548
|
+
- Exclusive resources: steps that mutate shared state outside a module's own
|
|
549
|
+
files (extension rebuild, lockfile, migration) — their tasks become
|
|
550
|
+
`parallel: false`.
|
|
543
551
|
- Cross-feature dependencies: list any specs that must be merged first.
|
|
544
552
|
|
|
545
553
|
### 6. Commit the Spec
|
|
@@ -588,7 +596,7 @@ git commit -m "sdd: add spec for FEAT-<ID> — <feature-name>"
|
|
|
588
596
|
✅ Spec created and committed: sdd/specs/<feature-name>.spec.md
|
|
589
597
|
|
|
590
598
|
Feature ID: FEAT-<ID>
|
|
591
|
-
|
|
599
|
+
Module graph: <M> modules, <E> dependency edges, exclusive: <modules or "none">
|
|
592
600
|
Design research: <N> suggestions — <C> confirmed / <R> rejected / <E> escalated (model <MODEL>)
|
|
593
601
|
# or: Design research: skipped (<SKIP_REASON>)
|
|
594
602
|
|
|
@@ -16,7 +16,9 @@ Decompose an approved Feature Specification into atomic, assignable implementati
|
|
|
16
16
|
**Implementation Blueprint** (executor-ready per-file code blocks + why +
|
|
17
17
|
`FILL IN` checklist, see §3). Blueprints stop at the mechanical parts;
|
|
18
18
|
branches, edge cases and test bodies stay as `FILL IN` stubs.
|
|
19
|
-
-
|
|
19
|
+
- Build the task graph by §3's **Task graph rules** — `depends_on` is the only
|
|
20
|
+
ordering, `parallel: false` means *exclusive* — and run
|
|
21
|
+
`scripts/sdd/check_task_graph.py` on the index before committing (§4b).
|
|
20
22
|
- **`TASK-<NNN>` numbers are reserved via `scripts/sdd/reserve_ids.py`
|
|
21
23
|
(FEAT-387), never hand-computed by scanning existing files for the
|
|
22
24
|
highest number in use.** That scan-and-increment approach has no lock
|
|
@@ -93,11 +95,37 @@ Analyze the spec and identify atomic tasks:
|
|
|
93
95
|
- Order tasks to respect implementation dependencies.
|
|
94
96
|
- Aim for tasks completable in 1–4 hours each.
|
|
95
97
|
|
|
96
|
-
**
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
**Task graph rules (`depends_on`, `parallel`, `parallelism_notes`):**
|
|
99
|
+
|
|
100
|
+
Every task runs in its own sub-worktree, dispatched by the `sdd-coder` engine as
|
|
101
|
+
soon as its `depends_on` are done; tasks whose dependencies are met run
|
|
102
|
+
**concurrently**. So the graph, not the prose, decides how long a feature takes
|
|
103
|
+
(querysource FEAT-147: 18 tasks chained 1→2→…→18 with one copy-pasted
|
|
104
|
+
rationale ran strictly in series for ~7 h).
|
|
105
|
+
|
|
106
|
+
- **`depends_on` is the ONLY ordering.** Add `B depends_on A` only with evidence:
|
|
107
|
+
- B imports, calls, extends or tests a symbol A **creates**; or
|
|
108
|
+
- B consumes a file/table/config/fixture A creates; or
|
|
109
|
+
- B and A both **modify the same file** (serialize them: the lower id first).
|
|
110
|
+
|
|
111
|
+
Never add an edge because tasks share a module, a spec section or a "phase", or
|
|
112
|
+
"to be safe". A spec that says tasks run *sequentially* or *per-spec* means ONE
|
|
113
|
+
feature worktree — it is NOT a dependency chain. Transitive edges may be
|
|
114
|
+
omitted.
|
|
115
|
+
- **`parallel` defaults to `true`.** Set `parallel: false` (*exclusive* — never
|
|
116
|
+
dispatched alongside any other task, even with its dependencies met) only when
|
|
117
|
+
the task mutates shared state **outside its declared files**: rebuilding
|
|
118
|
+
compiled extensions (Cython `make build-inplace`, maturin), editing dependency
|
|
119
|
+
manifests or lockfiles (`pyproject.toml`, `uv.lock`), running DDL/migrations
|
|
120
|
+
against a shared database, regenerating shared generated code, or changing a
|
|
121
|
+
`conftest.py` other tasks' tests load.
|
|
122
|
+
- **`parallelism_notes` is per task and names its evidence**: for each
|
|
123
|
+
`depends_on` edge, the dependency id plus the symbol/file it needs
|
|
124
|
+
(`"imports TenantRegistry from TASK-716 (querysource/tenants.py)"`); for an
|
|
125
|
+
exclusive task, the shared resource. Identical notes on several tasks is a
|
|
126
|
+
defect.
|
|
127
|
+
- Write `"parallel_semantics": "exclusive"` in the index header (see schema) —
|
|
128
|
+
without it the engine ignores every `parallel` flag.
|
|
101
129
|
|
|
102
130
|
**CRITICAL — Codebase Contract per Task (Anti-Hallucination):**
|
|
103
131
|
For EACH task, you MUST populate its `## Codebase Contract` section:
|
|
@@ -225,6 +253,7 @@ and ignored by all FEAT-145 commands). Schema:
|
|
|
225
253
|
"base_branch": "dev",
|
|
226
254
|
"created_at": "<ISO-8601>",
|
|
227
255
|
"completed_at": null,
|
|
256
|
+
"parallel_semantics": "exclusive",
|
|
228
257
|
"tasks": [
|
|
229
258
|
{
|
|
230
259
|
"id": "TASK-<NNN>",
|
|
@@ -237,8 +266,8 @@ and ignored by all FEAT-145 commands). Schema:
|
|
|
237
266
|
"priority": "<high|medium|low>",
|
|
238
267
|
"effort": "<S|M|L|XL>",
|
|
239
268
|
"depends_on": [],
|
|
240
|
-
"parallel":
|
|
241
|
-
"parallelism_notes": "<
|
|
269
|
+
"parallel": true,
|
|
270
|
+
"parallelism_notes": "<per-task evidence: 'needs <symbol> from TASK-<X> (<file>)' | exclusive resource>",
|
|
242
271
|
"assigned_to": null,
|
|
243
272
|
"started_at": null,
|
|
244
273
|
"completed_at": null,
|
|
@@ -251,7 +280,9 @@ and ignored by all FEAT-145 commands). Schema:
|
|
|
251
280
|
**Header fields (`type`, `base_branch`)** are populated from the spec's
|
|
252
281
|
frontmatter (resolved in §1 above). If `sdd/tasks/index/<feature>.json`
|
|
253
282
|
already exists (created by the migration script for older specs), append
|
|
254
|
-
the new tasks to its `tasks[]` array — do NOT overwrite the header.
|
|
283
|
+
the new tasks to its `tasks[]` array — do NOT overwrite the header. Do not add
|
|
284
|
+
`parallel_semantics` to an existing header whose tasks were written before these
|
|
285
|
+
rules: their `parallel: false` meant something else and would serialize them.
|
|
255
286
|
|
|
256
287
|
**Index location helper:**
|
|
257
288
|
```bash
|
|
@@ -285,6 +316,24 @@ complete. `design_complete: true` is a declaration the task author signs.
|
|
|
285
316
|
- Omit the section entirely when the task is not eligible. Most tasks are not,
|
|
286
317
|
and that is the normal, expected route.
|
|
287
318
|
|
|
319
|
+
### 4b. Validate the Task Graph
|
|
320
|
+
|
|
321
|
+
Run the deterministic graph check on the index you just wrote:
|
|
322
|
+
|
|
323
|
+
```bash
|
|
324
|
+
python -m scripts.sdd.check_task_graph sdd/tasks/index/<feature-slug>.json
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
- **Errors** (exit 1) block the commit: `file-overlap` (two tasks declare the
|
|
328
|
+
same file with no dependency path between them — they would run concurrently
|
|
329
|
+
and conflict), `unknown-dependency`, `cycle`. Fix the graph, re-run.
|
|
330
|
+
- **Every warning is resolved, not ignored**: `unjustified-edge` → remove the
|
|
331
|
+
edge, or write its evidence in `parallelism_notes` (naming the dependency id);
|
|
332
|
+
`possible-missing-dependency` → add the edge or confirm the reference is not
|
|
333
|
+
a use; `duplicate-notes` / `exclusive-without-notes` → write per-task notes.
|
|
334
|
+
- Copy the report's first line (`<N> tasks, <W> waves, max width <M>`) into the
|
|
335
|
+
§6 output. A width of 1 on a multi-task feature needs a one-line justification.
|
|
336
|
+
|
|
288
337
|
### 5. Commit Tasks and Per-Spec Index to `<BASE>`
|
|
289
338
|
|
|
290
339
|
> **CRITICAL — Only commit the per-spec index and the new task files. NEVER
|
|
@@ -331,6 +380,7 @@ Tasks created:
|
|
|
331
380
|
HOTFIX-<JIRA-KEY>-<N> — <title> [<priority>/<effort>] # hotfix
|
|
332
381
|
|
|
333
382
|
Blueprints: <N>/<N> tasks carry an Implementation Blueprint
|
|
383
|
+
Graph: <N> tasks, <W> waves, max width <M>; exclusive: <ids or "none">
|
|
334
384
|
Delegated: <D>/<N> tasks carry a Delegation Contract (targeted writer)
|
|
335
385
|
TASK-<NNN>, TASK-<NNN> # list them, or "none"
|
|
336
386
|
|
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
Unreleased
|
|
2
2
|
==========
|
|
3
3
|
|
|
4
|
+
Describe API for query slugs (FEAT-148)
|
|
5
|
+
---------------------------------------
|
|
6
|
+
|
|
7
|
+
New read-only endpoints for discovering stored query slugs without executing them:
|
|
8
|
+
``GET /api/v1/queries/describe`` (paginated list), ``GET /api/v1/queries/{slug}/describe``
|
|
9
|
+
(definition + typed variables), ``GET /api/v1/queries/{slug}/columns`` (prepared, never
|
|
10
|
+
executed) and ``GET /api/v1/queries/vocabulary`` (relative-date keywords).
|
|
11
|
+
|
|
12
|
+
Tenant-scoped endpoints (when FEAT-147 tenant registry is enabled):
|
|
13
|
+
``GET /api/v1/{tenant}/queries/describe``, ``GET /api/v1/{tenant}/queries/{slug}/describe``,
|
|
14
|
+
and ``GET /api/v1/{tenant}/queries/{slug}/columns`` serve per-tenant definitions via the tenant
|
|
15
|
+
registry. Access control, redaction, and all pagination/filtering rules apply identically.
|
|
16
|
+
|
|
17
|
+
- Access rules: Requires a principal (session or sessionless authz). List visibility requires ``slug:list`` or ``slug:execute``; detail and columns require ``slug:describe`` or ``slug:execute``. Denials return ``404`` to prevent enumeration.
|
|
18
|
+
- Redaction: Sensitive fields (like ``query_raw``) are redacted unless the principal has ``slug:describe_raw``. Admin-only fields (like ``dwh_info``, ``cache_options``) are visible only to superusers or members of ``QS_DESCRIBE_ADMIN_GROUPS``.
|
|
19
|
+
- Configuration: Configured via ``QS_DESCRIBE_MAX_SCAN`` (default 10000), ``QS_DESCRIBE_ADMIN_GROUPS`` (default admin,superuser), and ``QS_DESCRIBE_COLUMNS_TIMEOUT`` (default 5).
|
|
20
|
+
- Policy: Default policies in ``policies/defaults.yaml`` (such as ``admin_full_access``) are updated to grant ``slug:describe`` and ``slug:describe_raw``.
|
|
21
|
+
- Behaviour change: Relative-date keywords (``TODAY``, ``YESTERDAY``, ``FDOM``, ``LDOM``, ``CURRENT_YEAR``, ``CURRENT_MONTH``, ``LAST_YEAR``) now resolve consistently on raw-query providers for untyped and date/datetime/timestamp conditions. Environment overrides for ``UDF_LIST``, ``PG_CONSTANTS``, and ``PG_UDF`` now accept comma-separated values.
|
|
22
|
+
|
|
4
23
|
Row-oriented outputs — DataFrame results and swallowed errors
|
|
5
24
|
-------------------------------------------------------------
|
|
6
25
|
|
|
@@ -45,6 +45,13 @@
|
|
|
45
45
|
"default": null,
|
|
46
46
|
"required": false,
|
|
47
47
|
"description": "Address of the remote qworker to use for this query, in ``host:port`` format (e.g. ``qworker1.internal:8888``). Overrides the central ``QWORKER_HOST`` / ``QWORKER_PORT`` settings. Only relevant when ``remote: true``. If no port is specified, QWORKER_PORT is used as the fallback (default: 8888)."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"name": "tenant",
|
|
51
|
+
"type": "str",
|
|
52
|
+
"default": null,
|
|
53
|
+
"required": false,
|
|
54
|
+
"description": "Tenant owner for this query. If omitted, inherits from parent or uses the configured default store. If explicitly ``null``, uses the legacy store. If a string, selects that exact tenant from the allowlist. Examples: ``null`` (legacy), ``client_a`` (explicit tenant)."
|
|
48
55
|
}
|
|
49
56
|
],
|
|
50
57
|
"json_schema": {
|
|
@@ -76,6 +83,11 @@
|
|
|
76
83
|
"worker": {
|
|
77
84
|
"type": "string",
|
|
78
85
|
"description": "Address of the remote qworker to use for this query, in ``host:port`` format (e.g. ``qworker1.internal:8888``). Overrides the central ``QWORKER_HOST`` / ``QWORKER_PORT`` settings. Only relevant when ``remote: true``. If no port is specified, QWORKER_PORT is used as the fallback (default: 8888)."
|
|
86
|
+
},
|
|
87
|
+
"tenant": {
|
|
88
|
+
"type": "string",
|
|
89
|
+
"description": "Tenant owner for this query. If omitted, inherits from parent or uses the configured default store. If explicitly ``null``, uses the legacy store. If a string, selects that exact tenant from the allowlist. Examples: ``null`` (legacy), ``client_a`` (explicit tenant).",
|
|
90
|
+
"default": null
|
|
79
91
|
}
|
|
80
92
|
},
|
|
81
93
|
"oneOf": [
|
|
@@ -94,6 +106,6 @@
|
|
|
94
106
|
"additionalProperties": true,
|
|
95
107
|
"description": "A single entry under the MultiQS ``queries:`` block. Must provide either ``slug`` or ``query`` (but not both)."
|
|
96
108
|
},
|
|
97
|
-
"example": "{\n \"queries\": {\n \"stores\": {\n \"query\": \"select * from hisense.stores\",\n \"driver\": \"pg\"\n },\n \"products\": {\n \"slug\": \"all_products\"\n },\n \"remote_orders\": {\n \"slug\": \"daily_orders\",\n \"remote\": true,\n \"worker\": \"qworker1.internal:8888\",\n \"store_id\": 42\n }\n }\n}",
|
|
109
|
+
"example": "{\n \"queries\": {\n \"stores\": {\n \"query\": \"select * from hisense.stores\",\n \"driver\": \"pg\"\n },\n \"products\": {\n \"slug\": \"all_products\"\n },\n \"remote_orders\": {\n \"slug\": \"daily_orders\",\n \"remote\": true,\n \"worker\": \"qworker1.internal:8888\",\n \"store_id\": 42\n },\n \"tenant_sales\": {\n \"slug\": \"sales_report\",\n \"tenant\": \"client_a\"\n }\n }\n}",
|
|
98
110
|
"icon": "database"
|
|
99
111
|
}
|
|
@@ -211,6 +211,69 @@ filterwarnings = [
|
|
|
211
211
|
'ignore:The loop argument is deprecated since Python 3\.8, and scheduled for removal in Python 3\.10:DeprecationWarning:asyncio',
|
|
212
212
|
]
|
|
213
213
|
|
|
214
|
+
# ---------------------------------------------------------------------------
|
|
215
|
+
# Formatting (black) and linting (ruff)
|
|
216
|
+
# ---------------------------------------------------------------------------
|
|
217
|
+
# black formats, ruff lints (no `ruff format`). Both use 120 columns, matching
|
|
218
|
+
# tox.ini's [flake8]/[pep8] max-line-length. The sdd-coder engine runs
|
|
219
|
+
# `ruff check --fix` + black on each task's files at merge time; `/sdd-done`
|
|
220
|
+
# fixes the remaining findings in the files a feature touches.
|
|
221
|
+
[tool.black]
|
|
222
|
+
line-length = 120
|
|
223
|
+
# Floor of requires-python (>=3.10.1) plus the venv's 3.11; formatting for
|
|
224
|
+
# 3.10 is valid on every supported interpreter and keeps black's AST safety
|
|
225
|
+
# check on when run from an older venv.
|
|
226
|
+
target-version = ["py310", "py311"]
|
|
227
|
+
extend-exclude = '''
|
|
228
|
+
/(
|
|
229
|
+
\.claude/worktrees
|
|
230
|
+
| build
|
|
231
|
+
| generated
|
|
232
|
+
| rust
|
|
233
|
+
)/
|
|
234
|
+
'''
|
|
235
|
+
|
|
236
|
+
[tool.ruff]
|
|
237
|
+
line-length = 120
|
|
238
|
+
target-version = "py310"
|
|
239
|
+
src = ["."]
|
|
240
|
+
extend-exclude = [".claude/worktrees", "*.ipynb", "build", "generated", "rust"]
|
|
241
|
+
|
|
242
|
+
[tool.ruff.lint]
|
|
243
|
+
# Pinned explicitly: ruff >= 0.16 widened its implicit default rule set, so an
|
|
244
|
+
# unconfigured repo's findings drifted with the tool version.
|
|
245
|
+
select = [
|
|
246
|
+
"E4", "E7", "E9", "F", # pycodestyle errors + pyflakes (real defects)
|
|
247
|
+
"B", # flake8-bugbear
|
|
248
|
+
"ASYNC", # blocking calls inside async def
|
|
249
|
+
"UP", # pyupgrade (minus the annotation rewrites below)
|
|
250
|
+
"I", # import sorting (black-compatible)
|
|
251
|
+
"PIE", # no-op placeholders, duplicate enum values
|
|
252
|
+
"C4", # comprehension misuse
|
|
253
|
+
"LOG", # logging calls outside handlers / root logger
|
|
254
|
+
"DTZ", # naive datetimes (scheduler, caches, tenants)
|
|
255
|
+
]
|
|
256
|
+
ignore = [
|
|
257
|
+
# python-datamodel 0.11 (datamodel.BaseModel) cannot evaluate PEP 604/585
|
|
258
|
+
# annotations at runtime: `a: int | None` raises "Expected type, got
|
|
259
|
+
# types.UnionType" and `Optional[tuple[int, ...]]` fails to parse. The
|
|
260
|
+
# auto-fixes for these would break models, so typing.Optional/List stay.
|
|
261
|
+
"UP006", "UP007", "UP035", "UP045",
|
|
262
|
+
# `timeout` parameters on async APIs are part of the public surface.
|
|
263
|
+
"ASYNC109",
|
|
264
|
+
# `dict(a=1)` vs `{"a": 1}` is taste, not a defect.
|
|
265
|
+
"C408",
|
|
266
|
+
]
|
|
267
|
+
|
|
268
|
+
[tool.ruff.lint.isort]
|
|
269
|
+
known-first-party = ["querysource"]
|
|
270
|
+
|
|
271
|
+
[tool.ruff.lint.per-file-ignores]
|
|
272
|
+
"**/__init__.py" = ["F401", "F403", "F405"]
|
|
273
|
+
"tests/**/*.py" = ["F401", "F811", "F841", "B011", "B017", "ASYNC230", "ASYNC240"]
|
|
274
|
+
"**/conftest.py" = ["F401", "F403"]
|
|
275
|
+
"examples/**/*.py" = ["F401", "F841", "E402"]
|
|
276
|
+
|
|
214
277
|
# ---------------------------------------------------------------------------
|
|
215
278
|
# Maturin (Rust extension) — configured in rust/pyproject.toml.
|
|
216
279
|
# Invoke via: maturin develop --release --manifest-path rust/Cargo.toml
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '
|
|
22
|
-
__version_tuple__ = version_tuple = (
|
|
21
|
+
__version__ = version = '5.0.0'
|
|
22
|
+
__version_tuple__ = version_tuple = (5, 0, 0)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'gaebc55c28'
|