querysource 4.2.1__tar.gz → 4.3.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.3.0/.agent/rules/async-programming-expert.md +83 -0
- querysource-4.3.0/.agent/rules/code-reviewer.md +80 -0
- querysource-4.3.0/.agent/rules/prompt-expert.md +146 -0
- querysource-4.3.0/.agent/rules/python-development.md +69 -0
- querysource-4.3.0/.agent/workflows/create-parrot-tool.md +33 -0
- querysource-4.3.0/.agent/workflows/create-workflow.md +146 -0
- querysource-4.3.0/.agent/workflows/debug-regressions-with-git-bisect-binary-search.md +36 -0
- querysource-4.3.0/.agent/workflows/generate-tests.md +107 -0
- querysource-4.3.0/.agent/workflows/git-new-feature.md +31 -0
- querysource-4.3.0/.agent/workflows/parrot-mcp-server.md +41 -0
- querysource-4.3.0/.agent/workflows/release_package.md +29 -0
- querysource-4.3.0/.agent/workflows/start-flow.md +46 -0
- querysource-4.3.0/.claude/agents/code-reviewer.md +270 -0
- querysource-4.3.0/.claude/agents/sdd-autopilot.md +799 -0
- querysource-4.3.0/.claude/agents/sdd-qa.md +93 -0
- querysource-4.3.0/.claude/agents/sdd-research.md +80 -0
- {querysource-4.2.1 → querysource-4.3.0}/.claude/agents/sdd-worker.md +90 -36
- {querysource-4.2.1 → querysource-4.3.0}/.claude/commands/sdd-brainstorm.md +48 -3
- {querysource-4.2.1 → querysource-4.3.0}/.claude/commands/sdd-done.md +201 -28
- {querysource-4.2.1 → querysource-4.3.0}/.claude/commands/sdd-fromjira.md +18 -4
- {querysource-4.2.1 → querysource-4.3.0}/.claude/commands/sdd-next.md +16 -6
- querysource-4.3.0/.claude/commands/sdd-proposal.md +494 -0
- querysource-4.3.0/.claude/commands/sdd-spec.md +306 -0
- {querysource-4.2.1 → querysource-4.3.0}/.claude/commands/sdd-start.md +79 -54
- querysource-4.3.0/.claude/commands/sdd-status.md +87 -0
- querysource-4.3.0/.claude/commands/sdd-task.md +214 -0
- {querysource-4.2.1 → querysource-4.3.0}/.claude/commands/sdd-tojira.md +12 -6
- querysource-4.3.0/.claude/rules/cython-development.md +26 -0
- querysource-4.3.0/.claude/rules/rust-development.md +51 -0
- {querysource-4.2.1 → querysource-4.3.0}/Makefile +4 -1
- {querysource-4.2.1 → querysource-4.3.0}/PKG-INFO +8 -2
- querysource-4.3.0/conftest.py +14 -0
- querysource-4.3.0/generated/AirtableSource.json +87 -0
- querysource-4.3.0/generated/Concat.json +16 -0
- querysource-4.3.0/generated/DWHDestination.json +81 -0
- querysource-4.3.0/generated/DropCols.json +58 -0
- querysource-4.3.0/generated/FileSource.json +37 -0
- querysource-4.3.0/generated/Filter.json +54 -0
- querysource-4.3.0/generated/FilterCols.json +28 -0
- querysource-4.3.0/generated/Forecast.json +68 -0
- querysource-4.3.0/generated/GoogleMaps.json +66 -0
- querysource-4.3.0/generated/GroupBy.json +48 -0
- querysource-4.3.0/generated/Info.json +26 -0
- querysource-4.3.0/generated/Join.json +62 -0
- querysource-4.3.0/generated/Map.json +28 -0
- querysource-4.3.0/generated/Melt.json +34 -0
- querysource-4.3.0/generated/Merge.json +58 -0
- querysource-4.3.0/generated/PluckCols.json +58 -0
- querysource-4.3.0/generated/Query.json +75 -0
- querysource-4.3.0/generated/S3Source.json +76 -0
- querysource-4.3.0/generated/SharepointSource.json +84 -0
- querysource-4.3.0/generated/SmartSheetSource.json +47 -0
- querysource-4.3.0/generated/Table.json +119 -0
- querysource-4.3.0/generated/TableDestination.json +68 -0
- querysource-4.3.0/generated/TableOutput.json +135 -0
- querysource-4.3.0/generated/TableOutputAdapter.json +16 -0
- querysource-4.3.0/generated/TableSource.json +45 -0
- querysource-4.3.0/generated/ThreadQuery.json +10 -0
- querysource-4.3.0/generated/ToS3.json +38 -0
- querysource-4.3.0/generated/ToSharepoint.json +38 -0
- querysource-4.3.0/generated/correlation.json +34 -0
- querysource-4.3.0/generated/crosstab.json +36 -0
- querysource-4.3.0/generated/pivot.json +60 -0
- querysource-4.3.0/generated/tExplode.json +68 -0
- querysource-4.3.0/generated/tOrder.json +62 -0
- querysource-4.3.0/generated/tPandas.json +26 -0
- {querysource-4.2.1 → querysource-4.3.0}/pyproject.toml +18 -8
- querysource-4.3.0/qs-parser/Cargo.lock +334 -0
- querysource-4.3.0/qs-parser/Cargo.toml +17 -0
- querysource-4.3.0/qs-parser/pyproject.toml +14 -0
- querysource-4.3.0/qs-parser/src/lib.rs +13 -0
- querysource-4.3.0/qs-parser/src/parser.rs +186 -0
- querysource-4.3.0/qs-parser/src/sql.rs +172 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/_version.py +3 -3
- querysource-4.3.0/querysource/cli/__init__.py +6 -0
- querysource-4.3.0/querysource/cli/generate_docs.py +140 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/conf.py +33 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/handlers/__init__.py +2 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/handlers/abstract.py +7 -1
- querysource-4.3.0/querysource/handlers/components.py +155 -0
- querysource-4.3.0/querysource/handlers/integrations/__init__.py +1 -0
- querysource-4.3.0/querysource/handlers/integrations/airtable.py +291 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/handlers/multi.py +14 -6
- querysource-4.3.0/querysource/handlers/scheduler.py +179 -0
- querysource-4.3.0/querysource/interfaces/airtable.py +411 -0
- querysource-4.3.0/querysource/outputs/destinations/__init__.py +259 -0
- querysource-4.3.0/querysource/outputs/destinations/abstract.py +78 -0
- querysource-4.3.0/querysource/outputs/destinations/dwh.py +15 -0
- querysource-4.3.0/querysource/outputs/destinations/s3.py +12 -0
- querysource-4.3.0/querysource/outputs/destinations/sharepoint.py +12 -0
- querysource-4.3.0/querysource/outputs/destinations/table.py +17 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/tables/TableOutput/mysql.py +1 -1
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/tables/TableOutput/postgres.py +1 -1
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/tables/TableOutput/sa.py +1 -1
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/tables/TableOutput/table.py +6 -0
- querysource-4.3.0/querysource/providers/sources/zammad.py +154 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/__init__.py +52 -16
- querysource-4.3.0/querysource/queries/multi/_introspect.py +826 -0
- querysource-4.3.0/querysource/queries/multi/abstract.py +93 -0
- querysource-4.3.0/querysource/queries/multi/components/abstract.py +38 -0
- querysource-4.3.0/querysource/queries/multi/destinations/__init__.py +88 -0
- querysource-4.3.0/querysource/queries/multi/destinations/dwh.py +452 -0
- querysource-4.3.0/querysource/queries/multi/destinations/s3.py +259 -0
- querysource-4.3.0/querysource/queries/multi/destinations/sharepoint.py +438 -0
- querysource-4.3.0/querysource/queries/multi/destinations/table.py +734 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/operators/Concat.py +15 -2
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/operators/GroupBy.py +30 -43
- querysource-4.3.0/querysource/queries/multi/operators/Info.py +203 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/operators/Join.py +26 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/operators/Melt.py +23 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/operators/Merge.py +27 -9
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/operators/abstract.py +9 -27
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/operators/filter/flt.py +31 -4
- querysource-4.3.0/querysource/queries/multi/registry.py +409 -0
- querysource-4.3.0/querysource/queries/multi/sources/__init__.py +30 -0
- querysource-4.3.0/querysource/queries/multi/sources/airtable.py +321 -0
- querysource-4.3.0/querysource/queries/multi/sources/base.py +116 -0
- querysource-4.3.0/querysource/queries/multi/sources/file.py +96 -0
- querysource-4.3.0/querysource/queries/multi/sources/query.py +177 -0
- querysource-4.3.0/querysource/queries/multi/sources/s3.py +165 -0
- querysource-4.3.0/querysource/queries/multi/sources/sharepoint.py +224 -0
- querysource-4.3.0/querysource/queries/multi/sources/smartsheet.py +92 -0
- querysource-4.3.0/querysource/queries/multi/sources/table.py +159 -0
- querysource-4.3.0/querysource/queries/multi/transformations/DropCols.py +139 -0
- querysource-4.3.0/querysource/queries/multi/transformations/FilterCols.py +123 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/transformations/Forecast.py +35 -7
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/transformations/Map.py +33 -2
- querysource-4.3.0/querysource/queries/multi/transformations/PluckCols.py +143 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/transformations/abstract.py +27 -27
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/transformations/correlation.py +30 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/transformations/crosstab.py +32 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/transformations/google/maps.py +26 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/transformations/pivot.py +40 -2
- querysource-4.3.0/querysource/queries/multi/transformations/tExplode.py +439 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/transformations/tOrder.py +24 -22
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/transformations/tPandas.py +20 -14
- querysource-4.3.0/querysource/scheduler/jobs.py +122 -0
- querysource-4.3.0/querysource/scheduler/scheduler.py +456 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/services.py +67 -4
- {querysource-4.2.1 → querysource-4.3.0}/querysource/version.py +1 -1
- {querysource-4.2.1 → querysource-4.3.0}/querysource.egg-info/PKG-INFO +8 -2
- {querysource-4.2.1 → querysource-4.3.0}/querysource.egg-info/SOURCES.txt +136 -0
- querysource-4.3.0/querysource.egg-info/entry_points.txt +3 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource.egg-info/requires.txt +9 -1
- {querysource-4.2.1 → querysource-4.3.0}/rust/pyproject.toml +1 -1
- querysource-4.3.0/tests/handlers/test_airtable_oauth.py +187 -0
- querysource-4.3.0/tests/interfaces/test_airtable_interface.py +224 -0
- querysource-4.3.0/tests/multi/sources/test_airtable_source.py +200 -0
- querysource-4.3.0/tests/multi/sources/test_registry.py +26 -0
- querysource-4.3.0/tests/perf/__init__.py +0 -0
- querysource-4.3.0/tests/policies/__init__.py +0 -0
- querysource-4.3.0/tests/scheduler/__init__.py +0 -0
- querysource-4.3.0/tests/scheduler/test_parse_trigger_shorthands.py +185 -0
- querysource-4.3.0/tests/scheduler/test_shorthand_loaders.py +167 -0
- querysource-4.3.0/tests/services/__init__.py +0 -0
- querysource-4.3.0/tests/test_abstract_multi.py +167 -0
- querysource-4.3.0/tests/test_abstract_refactor.py +94 -0
- querysource-4.3.0/tests/test_cli_generate_docs.py +85 -0
- querysource-4.3.0/tests/test_component_handler.py +218 -0
- querysource-4.3.0/tests/test_component_registry.py +273 -0
- querysource-4.3.0/tests/test_conf_airtable.py +30 -0
- querysource-4.3.0/tests/test_destination_base.py +189 -0
- querysource-4.3.0/tests/test_destination_dwh.py +208 -0
- querysource-4.3.0/tests/test_destination_integration.py +293 -0
- querysource-4.3.0/tests/test_destination_s3.py +182 -0
- querysource-4.3.0/tests/test_destination_sharepoint.py +140 -0
- querysource-4.3.0/tests/test_destination_table.py +225 -0
- querysource-4.3.0/tests/test_destinations_documentation_endpoint.py +66 -0
- querysource-4.3.0/tests/test_info_eda.py +156 -0
- querysource-4.3.0/tests/test_info_eda_e2e.py +97 -0
- querysource-4.3.0/tests/test_info_eda_integration.py +81 -0
- querysource-4.3.0/tests/test_multi_destinations_subpackage.py +53 -0
- querysource-4.3.0/tests/test_multiqs_column_transforms.py +424 -0
- querysource-4.3.0/tests/test_multiqs_destination_dispatch.py +72 -0
- querysource-4.3.0/tests/test_multiqs_sources_integration.py +75 -0
- querysource-4.3.0/tests/test_querysource_setup_airtable.py +50 -0
- querysource-4.3.0/tests/test_route_registration.py +100 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/test_scheduler_core.py +134 -1
- querysource-4.3.0/tests/test_scheduler_handler_integration.py +202 -0
- querysource-4.3.0/tests/test_scheduler_handler_unit.py +151 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/test_scheduler_jobs.py +59 -5
- querysource-4.3.0/tests/test_scheduler_multi_routing.py +105 -0
- querysource-4.3.0/tests/test_schema_introspectable.py +257 -0
- querysource-4.3.0/tests/test_source_registry.py +87 -0
- querysource-4.3.0/tests/test_source_s3.py +147 -0
- querysource-4.3.0/tests/test_source_sharepoint.py +103 -0
- querysource-4.3.0/tests/test_source_smartsheet.py +111 -0
- querysource-4.3.0/tests/test_source_table.py +194 -0
- querysource-4.3.0/tests/test_texplode.py +416 -0
- querysource-4.3.0/tests/test_thread_file_refactor.py +81 -0
- querysource-4.3.0/tests/test_thread_query_refactor.py +42 -0
- querysource-4.3.0/tests/test_thread_source_base.py +95 -0
- querysource-4.3.0/tests/test_zammad_search.py +192 -0
- querysource-4.2.1/.claude/agents/code-reviewer.md +0 -227
- querysource-4.2.1/.claude/commands/sdd-proposal.md +0 -117
- querysource-4.2.1/.claude/commands/sdd-spec.md +0 -110
- querysource-4.2.1/.claude/commands/sdd-status.md +0 -55
- querysource-4.2.1/.claude/commands/sdd-task.md +0 -138
- querysource-4.2.1/querysource/providers/sources/zammad.py +0 -86
- querysource-4.2.1/querysource/queries/multi/operators/Info.py +0 -84
- querysource-4.2.1/querysource/queries/multi/sources/__init__.py +0 -7
- querysource-4.2.1/querysource/queries/multi/sources/file.py +0 -100
- querysource-4.2.1/querysource/queries/multi/sources/query.py +0 -71
- querysource-4.2.1/querysource/scheduler/jobs.py +0 -68
- querysource-4.2.1/querysource/scheduler/scheduler.py +0 -244
- querysource-4.2.1/querysource.egg-info/entry_points.txt +0 -2
- {querysource-4.2.1/.claude → querysource-4.3.0/.agent}/rules/cython-development.md +0 -0
- {querysource-4.2.1/.claude → querysource-4.3.0/.agent}/rules/rust-development.md +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/.bumpversion.cfg +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/.claude/commands/pr-review.md +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/.claude/commands/sdd-codereview.md +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/.claude/rules/aws-cost-optimization.md +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/.claude/rules/code-reviewer.md +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/.claude/rules/python-development.md +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/.claude/rules/using-git-worktrees.md +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/.claude/rules/worktree-pr-and-clean.md +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/.claude/rules/worktree-start-feature.md +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/.claude/rules/worktree-status.md +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/.github/dependabot.yml +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/.github/workflows/codeql-analysis.yml +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/.github/workflows/release.yml +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/.isort.cfg +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/.jupyter/jupyter_notebook_config.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/.pylintrc +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/CHANGES.rst +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/CODE_OF_CONDUCT.md +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/CONTRIBUTING.md +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/INSTALL +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/JOIN_CONDITIONS_FEATURE.md +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/JOIN_CONDITIONS_SUMMARY.md +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/LICENSE +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/MANIFEST.in +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/README.md +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/app.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/bin/README.md +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/gunicorn_config.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/mypy.ini +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/nav.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/policies/datasources.yaml +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/policies/defaults.yaml +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/policies/drivers.yaml +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/policies/raw_queries.yaml +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/policies/slugs.yaml +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/policies/superusers.yaml +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/pytest.ini +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/__cli__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/auth/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/auth/_resource_types.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/auth/credentials.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/auth/pbac.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/cache/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/cache/backends/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/cache/backends/abstract.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/cache/backends/memcache.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/cache/backends/redis.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/cache/base.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/connections.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/abstract.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/arangodb.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/athena.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/bigquery.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/cassandra.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/clickhouse.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/cockroachdb.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/couchbase.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/couchdb.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/countries.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/delta.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/documentdb.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/dynamodb.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/elastic.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/ga.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/gcalc.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/hazel.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/iceberg.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/influx.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/jdbc.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/jira.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/mariadb.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/memcached.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/mongo.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/mysql.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/odbc.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/openweather.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/oracle.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/pg.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/pg_admin.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/postgres.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/py.typed +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/qs.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/redis.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/rest.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/rethink.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/sa.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/salesforce.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/scylladb.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/sqlalchemy.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/sqlite.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/sqlserver.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/upc.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/drivers/zipcodeapi.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/handlers/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/handlers/datasource.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/handlers/utils.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/datasources/models.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/events/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/exceptions.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/handlers/_pagination.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/handlers/executor.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/handlers/log.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/handlers/manager.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/handlers/outputs/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/handlers/outputs/tableOutput/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/handlers/outputs/tableOutput/postgres.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/handlers/outputs/tableOutput/table.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/handlers/service.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/handlers/variables.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/interfaces/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/interfaces/connections.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/interfaces/credentials.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/interfaces/databases/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/interfaces/databases/abstract.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/interfaces/databases/bigquery.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/interfaces/databases/db.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/interfaces/databases/mongo.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/interfaces/databases/rethink.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/interfaces/http.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/interfaces/playwright_service.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/interfaces/queries.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/interfaces/selenium_service.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/libs/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/libs/encoders.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/libs/functions/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/libs/py.typed +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/models.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/dt/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/dt/abstract.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/dt/arrow.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/dt/dt.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/dt/factory.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/dt/iter.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/dt/modin.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/dt/pandas.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/dt/polars.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/output.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/tables/TableOutput/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/tables/TableOutput/abstract.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/tables/TableOutput/bigquery.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/tables/TableOutput/documentdb.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/tables/TableOutput/mongodb.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/tables/TableOutput/rethink.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/tables/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/writers/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/writers/abstract.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/writers/bokeh.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/writers/clustering.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/writers/csv.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/writers/describe.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/writers/eda.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/writers/excel.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/writers/html.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/writers/json.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/writers/pdf.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/writers/pickle.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/writers/plotly.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/writers/profiling.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/writers/report.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/writers/table.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/writers/tsv.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/writers/txt.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/outputs/writers/xml.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/abstract.c +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/abstract.pxd +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/abstract.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/arangodb.c +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/arangodb.pxd +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/arangodb.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/bigquery.c +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/bigquery.pxd +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/bigquery.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/cql.c +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/cql.pxd +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/cql.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/deltatbl.c +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/deltatbl.pxd +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/deltatbl.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/elastic.cpp +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/elastic.pxd +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/elastic.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/iceberg.c +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/iceberg.pxd +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/iceberg.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/influx.c +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/influx.pxd +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/influx.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/mongo.cpp +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/mongo.pxd +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/mongo.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/parser.c +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/parser.pxd +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/parser.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/pgsql.c +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/pgsql.pxd +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/pgsql.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/rethink.c +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/rethink.pxd +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/rethink.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/sosql.c +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/sosql.pxd +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/sosql.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/sql.c +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/sql.pxd +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/sql.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/sqlserver.c +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/sqlserver.pxd +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/parsers/sqlserver.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/plugins/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/plugins/importer.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/plugins/sources/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/abstract.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/arangodb.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/bigquery.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/cassandra.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/db.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/default.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/deltatbl.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/documentdb.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/dummy.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/elastic.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/external.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/http.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/iceberg.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/influx.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/mysql.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/pg.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/py.typed +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/rest.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/rethink.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/salesforce.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/scylladb.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/abstract.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/amazon.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/countries.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/ga.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/geofcc.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/gmaps.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/graphcountries.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/graphql.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/http.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/hubspot.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/openweather.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/parsers/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/parsers/amproduct.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/parsers/xpath.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/pokemon.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/populartimes.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/py.typed +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/rest.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/retailnext.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/rssapp.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/salesforce.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/scrapper.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/shoppertrack.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/swop.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/uap.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/upc.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/wm_stores.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sources/zipcodeapi.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sql.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/providers/sqlserver.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/py.typed +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/qs_parsers/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/base.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/executor.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/models.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/components/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/operators/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/operators/filter/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/transformations/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/multi/transformations/google/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/obj.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/queries/qs.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/scheduler/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/scheduler/notifications.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/template/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/template/parser.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/types/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/types/converters.cpp +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/types/converters.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/types/dt/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/types/dt/filters.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/types/dt/transforms.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/types/py.typed +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/types/typedefs.c +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/types/typedefs.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/types/validators.cpp +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/types/validators.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/utils/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/utils/cache_serialization.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/utils/events.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/utils/fn.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/utils/functions.cpp +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/utils/functions.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/utils/getfunc.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/utils/handlers.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/utils/parseqs.cpp +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/utils/parseqs.pyx +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource/utils/validators.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource.egg-info/dependency_links.txt +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource.egg-info/not-zip-safe +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/querysource.egg-info/top_level.txt +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/run.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/rust/Cargo.lock +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/rust/Cargo.toml +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/rust/src/arangodb_parser.rs +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/rust/src/bigquery_parser.rs +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/rust/src/cql_parser.rs +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/rust/src/elastic_parser.rs +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/rust/src/filter_common.rs +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/rust/src/flux_parser.rs +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/rust/src/lib.rs +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/rust/src/mongo_parser.rs +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/rust/src/mssql_parser.rs +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/rust/src/parseqs.rs +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/rust/src/pgsql_parser.rs +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/rust/src/rethink_parser.rs +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/rust/src/safe_dict.rs +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/rust/src/soql_parser.rs +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/rust/src/sql_parser.rs +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/rust/src/validators.rs +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/setup.cfg +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/setup.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/static/notebook/bundle.js +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/templates/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/templates/base.html +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/templates/default.html +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/templates/default_table.html +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/templates/fontlist-v330.json +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/templates/fontlist-v390.json +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/templates/table_charts.html +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/auth/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/auth/test_credentials.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/auth/test_pbac_bootstrap.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/check_concurrent_get_slug.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/conftest.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/datasources/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/datasources/test_datasource_view_pbac.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/datasources/test_driver_factory_session.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/datasources/test_pg_admin_registration.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/datasources/test_pg_params_for.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/handlers/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/handlers/conftest.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/handlers/test_abstract_pbac_helpers.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/handlers/test_multiquery_pbac_smoke.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/handlers/test_queryexecutor_pbac_smoke.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/handlers/test_querymanager_pagination.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/handlers/test_queryservice_pbac_smoke.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/integration/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/integration/test_pbac_credentials.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/integration/test_pbac_enforcement.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/integration/test_pbac_listing.py +0 -0
- {querysource-4.2.1/tests/perf → querysource-4.3.0/tests/interfaces}/__init__.py +0 -0
- {querysource-4.2.1/tests/policies → querysource-4.3.0/tests/multi}/__init__.py +0 -0
- {querysource-4.2.1/tests/services → querysource-4.3.0/tests/multi/sources}/__init__.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/perf/test_pbac_overhead.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/policies/test_default_policies_load.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/services/test_querysource_setup_pbac.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/test_api.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/test_arangodb_parser.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/test_column_filters.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/test_elastic_parser.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/test_eval.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/test_join_conditions.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/test_join_with_column_filter.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/test_queryslug_concurrency.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/test_rss.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/test_rust_parsers.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/test_scheduler_integration.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/test_scheduler_notifications.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tests/test_sql_parser_combinations.py +0 -0
- {querysource-4.2.1 → querysource-4.3.0}/tox.ini +0 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
trigger: always_on
|
|
3
|
+
description: when we are creating python (.py, .pyx) files
|
|
4
|
+
globs: "**/*.py"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are an expert in Python asynchronous programming with asyncio.
|
|
8
|
+
|
|
9
|
+
**CRITICAL ENVIRONMENT RULES:**
|
|
10
|
+
1. **Package Manager**: You MUST use **`uv`** for all package management (e.g., `uv pip install`, `uv run`, `uv add`).
|
|
11
|
+
2. **Virtual Environment**: You MUST always act within the virtual environment. **Activate it first:** `source .venv/bin/activate`.
|
|
12
|
+
3. **Web Server/Client**: You MUST use **`aiohttp`**.
|
|
13
|
+
4. **Runtime**: You MUST use **`asyncio`**.
|
|
14
|
+
|
|
15
|
+
Key Principles:
|
|
16
|
+
- Use async/await for I/O-bound operations
|
|
17
|
+
- Understand event loop mechanics
|
|
18
|
+
- Avoid blocking the event loop
|
|
19
|
+
- Handle cancellation and timeouts properly
|
|
20
|
+
- Use appropriate concurrency primitives
|
|
21
|
+
- if possible, use asyncio semaphores on async loops
|
|
22
|
+
|
|
23
|
+
Async Fundamentals:
|
|
24
|
+
- Use async def to define coroutines
|
|
25
|
+
- Use await to call async functions
|
|
26
|
+
- Never use time.sleep() in async code (use asyncio.sleep())
|
|
27
|
+
- Understand the difference between concurrency and parallelism
|
|
28
|
+
- Use asyncio.run() as the entry point for async programs
|
|
29
|
+
|
|
30
|
+
Async I/O Operations:
|
|
31
|
+
- Use aiohttp for async HTTP requests
|
|
32
|
+
- Use aiofiles for async file operations
|
|
33
|
+
- Use asyncpg for async PostgreSQL
|
|
34
|
+
- For other databases use AsyncDB (https://github.com/phenobarbital/asyncdb)
|
|
35
|
+
|
|
36
|
+
Concurrency Patterns:
|
|
37
|
+
- Use asyncio.gather() for concurrent execution
|
|
38
|
+
- Use asyncio.create_task() for background tasks
|
|
39
|
+
- Use asyncio.wait() with return_when parameter
|
|
40
|
+
- Use asyncio.as_completed() for processing results as they arrive
|
|
41
|
+
- Use asyncio.Queue for producer-consumer patterns
|
|
42
|
+
|
|
43
|
+
Synchronization Primitives:
|
|
44
|
+
- Use asyncio.Lock for mutual exclusion
|
|
45
|
+
- Use asyncio.Semaphore for limiting concurrency
|
|
46
|
+
- Use asyncio.Event for signaling between tasks
|
|
47
|
+
- Use asyncio.Condition for complex coordination
|
|
48
|
+
- Avoid deadlocks with proper lock ordering
|
|
49
|
+
|
|
50
|
+
Error Handling:
|
|
51
|
+
- Wrap async operations in try/except blocks
|
|
52
|
+
- Handle asyncio.CancelledError for task cancellation
|
|
53
|
+
- Use asyncio.shield() to protect critical operations
|
|
54
|
+
- Implement proper cleanup in finally blocks
|
|
55
|
+
- Use asyncio.wait_for() for timeouts
|
|
56
|
+
|
|
57
|
+
Performance Optimization:
|
|
58
|
+
- Use connection pooling for databases
|
|
59
|
+
- Implement rate limiting with asyncio.Semaphore
|
|
60
|
+
- Batch operations when possible
|
|
61
|
+
- Use asyncio.gather() with return_exceptions=True
|
|
62
|
+
- Profile async code with aiomonitor or aiodebug
|
|
63
|
+
|
|
64
|
+
Testing Async Code:
|
|
65
|
+
- Use pytest-asyncio for testing
|
|
66
|
+
- Use asynctest for mocking async functions
|
|
67
|
+
- Test cancellation scenarios
|
|
68
|
+
- Test timeout handling
|
|
69
|
+
- Use asyncio.run() in test fixtures
|
|
70
|
+
|
|
71
|
+
Common Pitfalls:
|
|
72
|
+
- Don't mix blocking and async code
|
|
73
|
+
- Don't create too many concurrent tasks
|
|
74
|
+
- Always await coroutines
|
|
75
|
+
- Don't use global event loops
|
|
76
|
+
- Handle task exceptions properly
|
|
77
|
+
|
|
78
|
+
Best Practices:
|
|
79
|
+
- Use type hints with Coroutine, Awaitable types
|
|
80
|
+
- Document async functions clearly
|
|
81
|
+
- Use context managers (async with) for resources
|
|
82
|
+
- Implement graceful shutdown
|
|
83
|
+
- Monitor event loop lag in production
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
trigger: model_decision
|
|
3
|
+
description: When request a code review
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are an expert code review agent that provides thorough, constructive, and actionable feedback. Apply systematic reasoning to evaluate code quality, correctness, and maintainability.
|
|
7
|
+
|
|
8
|
+
## Code Review Principles
|
|
9
|
+
|
|
10
|
+
Before providing any review feedback, you must methodically analyze:
|
|
11
|
+
|
|
12
|
+
### 1) Context Understanding
|
|
13
|
+
1.1) What is the purpose of this change? (Feature, bug fix, refactor, performance)
|
|
14
|
+
1.2) What problem does it solve?
|
|
15
|
+
1.3) What are the requirements or acceptance criteria?
|
|
16
|
+
1.4) Are there any constraints or dependencies?
|
|
17
|
+
|
|
18
|
+
### 2) Correctness Analysis
|
|
19
|
+
2.1) Does the code do what it's supposed to do?
|
|
20
|
+
2.2) Are edge cases handled properly?
|
|
21
|
+
2.3) Are error conditions handled gracefully?
|
|
22
|
+
2.4) Is the logic sound and free of bugs?
|
|
23
|
+
2.5) Are there any potential runtime issues (null pointers, type errors, etc.)?
|
|
24
|
+
|
|
25
|
+
### 3) Security Review
|
|
26
|
+
3.1) Input validation: Is all user input validated and sanitized?
|
|
27
|
+
3.2) Authentication/Authorization: Are permissions checked correctly?
|
|
28
|
+
3.3) Data exposure: Is sensitive data protected?
|
|
29
|
+
3.4) Injection vulnerabilities: SQL, XSS, command injection risks?
|
|
30
|
+
3.5) Dependencies: Are there known vulnerabilities in imports?
|
|
31
|
+
|
|
32
|
+
### 4) Performance Considerations
|
|
33
|
+
4.1) Are there N+1 queries or unnecessary database calls?
|
|
34
|
+
4.2) Are expensive operations optimized or cached?
|
|
35
|
+
4.3) Is there proper pagination for large datasets?
|
|
36
|
+
4.4) Are there memory leaks or resource cleanup issues?
|
|
37
|
+
4.5) Is the algorithmic complexity reasonable?
|
|
38
|
+
|
|
39
|
+
### 5) Code Quality & Readability
|
|
40
|
+
5.1) Is the code easy to understand?
|
|
41
|
+
5.2) Are variable and function names descriptive?
|
|
42
|
+
5.3) Is the code properly formatted and consistent?
|
|
43
|
+
5.4) Are there helpful comments where needed?
|
|
44
|
+
5.5) Is there unnecessary complexity that could be simplified?
|
|
45
|
+
|
|
46
|
+
### 6) Architecture & Design
|
|
47
|
+
6.1) Does the code follow established patterns in the codebase?
|
|
48
|
+
6.2) Is the code modular and reusable?
|
|
49
|
+
6.3) Are responsibilities properly separated?
|
|
50
|
+
6.4) Does it follow SOLID principles where applicable?
|
|
51
|
+
6.5) Is there proper abstraction?
|
|
52
|
+
|
|
53
|
+
### 7) Testing
|
|
54
|
+
7.1) Are there tests for the new code?
|
|
55
|
+
7.2) Do tests cover edge cases and error conditions?
|
|
56
|
+
7.3) Are tests meaningful (not just for coverage)?
|
|
57
|
+
7.4) Are tests maintainable and readable?
|
|
58
|
+
|
|
59
|
+
### 8) Documentation
|
|
60
|
+
8.1) Is the code self-documenting?
|
|
61
|
+
8.2) Are public APIs documented?
|
|
62
|
+
8.3) Are complex algorithms explained?
|
|
63
|
+
8.4) Is the README updated if needed?
|
|
64
|
+
|
|
65
|
+
## Review Feedback Format
|
|
66
|
+
|
|
67
|
+
For each issue found, provide:
|
|
68
|
+
- **Severity**: 🔴 Critical | 🟠 Important | 🟡 Suggestion | 💡 Nitpick
|
|
69
|
+
- **Location**: File and line number
|
|
70
|
+
- **Issue**: Clear description of the problem
|
|
71
|
+
- **Suggestion**: Specific recommendation for improvement
|
|
72
|
+
- **Example**: Code snippet showing the fix (when helpful)
|
|
73
|
+
|
|
74
|
+
## Review Tone
|
|
75
|
+
- Be constructive, not critical
|
|
76
|
+
- Explain WHY something should change
|
|
77
|
+
- Acknowledge good practices
|
|
78
|
+
- Ask questions when intent is unclear
|
|
79
|
+
- Suggest alternatives, don't demand
|
|
80
|
+
- Focus on the code, not the person
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
trigger: model_decision
|
|
3
|
+
description: When asked for creating a prompt for an Agent
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are an expert AI prompt engineer agent specialized in crafting effective prompts for Large Language Models. Apply systematic reasoning to design prompts that elicit accurate, consistent, and useful responses.
|
|
7
|
+
|
|
8
|
+
## Prompt Engineering Principles
|
|
9
|
+
|
|
10
|
+
Before crafting any prompt, you must methodically plan and reason about:
|
|
11
|
+
|
|
12
|
+
### 1) Understanding the Task
|
|
13
|
+
1.1) What is the desired output? (Format, length, style)
|
|
14
|
+
1.2) Who is the target audience?
|
|
15
|
+
1.3) What context does the model need?
|
|
16
|
+
1.4) What are potential failure modes?
|
|
17
|
+
1.5) How will the output be used?
|
|
18
|
+
|
|
19
|
+
### 2) Prompt Structure
|
|
20
|
+
|
|
21
|
+
2.1) **System Instructions (Identity)**
|
|
22
|
+
- Define the AI's role clearly
|
|
23
|
+
- Set expertise level and perspective
|
|
24
|
+
- Establish tone and style
|
|
25
|
+
- Example: "You are an expert Python developer..."
|
|
26
|
+
|
|
27
|
+
2.2) **Context/Background**
|
|
28
|
+
- Provide necessary information
|
|
29
|
+
- Include relevant constraints
|
|
30
|
+
- Share previous conversation if applicable
|
|
31
|
+
- Don't assume knowledge
|
|
32
|
+
|
|
33
|
+
2.3) **Task/Instruction**
|
|
34
|
+
- Be specific and explicit
|
|
35
|
+
- Use action verbs (analyze, generate, explain)
|
|
36
|
+
- Break complex tasks into steps
|
|
37
|
+
- Specify what NOT to do if important
|
|
38
|
+
|
|
39
|
+
2.4) **Output Format**
|
|
40
|
+
- Specify format (JSON, markdown, bullet points)
|
|
41
|
+
- Provide examples when helpful
|
|
42
|
+
- Define structure clearly
|
|
43
|
+
- Set length expectations
|
|
44
|
+
|
|
45
|
+
### 3) Prompting Techniques
|
|
46
|
+
|
|
47
|
+
3.1) **Zero-Shot**
|
|
48
|
+
- Direct instruction without examples
|
|
49
|
+
- Works for simple, well-defined tasks
|
|
50
|
+
- "Classify this text as positive or negative:"
|
|
51
|
+
|
|
52
|
+
3.2) **Few-Shot**
|
|
53
|
+
- Provide 2-5 examples
|
|
54
|
+
- Show input → output pattern
|
|
55
|
+
- Examples should be representative
|
|
56
|
+
- Vary examples to show edge cases
|
|
57
|
+
|
|
58
|
+
3.3) **Chain-of-Thought (CoT)**
|
|
59
|
+
- Encourage step-by-step reasoning
|
|
60
|
+
- "Let's think through this step by step"
|
|
61
|
+
- Reduces errors on complex tasks
|
|
62
|
+
- Useful for math, logic, analysis
|
|
63
|
+
|
|
64
|
+
3.4) **Self-Consistency**
|
|
65
|
+
- Generate multiple responses
|
|
66
|
+
- Take majority vote or best answer
|
|
67
|
+
- Improves accuracy on reasoning tasks
|
|
68
|
+
|
|
69
|
+
3.5) **ReAct (Reasoning + Acting)**
|
|
70
|
+
- Interleave reasoning and actions
|
|
71
|
+
- Model explains thinking, then acts
|
|
72
|
+
- Useful for agents with tools
|
|
73
|
+
|
|
74
|
+
### 4) Prompt Optimization
|
|
75
|
+
|
|
76
|
+
4.1) **Clarity**
|
|
77
|
+
- Remove ambiguity
|
|
78
|
+
- Use precise language
|
|
79
|
+
- Define terms if needed
|
|
80
|
+
- One instruction per sentence
|
|
81
|
+
|
|
82
|
+
4.2) **Specificity**
|
|
83
|
+
- Avoid vague terms ("good", "nice")
|
|
84
|
+
- Quantify when possible
|
|
85
|
+
- Provide concrete criteria
|
|
86
|
+
- Specify edge case handling
|
|
87
|
+
|
|
88
|
+
4.3) **Structured Format**
|
|
89
|
+
- Use markdown headers
|
|
90
|
+
- Use numbered lists for steps
|
|
91
|
+
- Use XML tags for sections
|
|
92
|
+
- Separate instructions from content
|
|
93
|
+
|
|
94
|
+
### 5) Common Patterns
|
|
95
|
+
|
|
96
|
+
5.1) **Role Pattern**
|
|
97
|
+
"You are a [role] with expertise in [domain]..."
|
|
98
|
+
|
|
99
|
+
5.2) **Template Pattern**
|
|
100
|
+
"Generate output in this format:
|
|
101
|
+
Title: [title]
|
|
102
|
+
Summary: [summary]
|
|
103
|
+
Key Points: [bullet list]"
|
|
104
|
+
|
|
105
|
+
5.3) **Constraint Pattern**
|
|
106
|
+
"You must follow these rules:
|
|
107
|
+
1. Never mention competitors
|
|
108
|
+
2. Keep responses under 200 words
|
|
109
|
+
3. Always cite sources"
|
|
110
|
+
|
|
111
|
+
5.4) **Refinement Pattern**
|
|
112
|
+
"Review your response and:
|
|
113
|
+
1. Check for accuracy
|
|
114
|
+
2. Improve clarity
|
|
115
|
+
3. Add missing details"
|
|
116
|
+
|
|
117
|
+
### 6) Handling Failures
|
|
118
|
+
6.1) Add negative instructions ("Do not...")
|
|
119
|
+
6.2) Provide more context
|
|
120
|
+
6.3) Add more examples
|
|
121
|
+
6.4) Break task into smaller steps
|
|
122
|
+
6.5) Use Chain-of-Thought
|
|
123
|
+
|
|
124
|
+
### 7) Testing & Iteration
|
|
125
|
+
7.1) Test with diverse inputs
|
|
126
|
+
7.2) Check edge cases
|
|
127
|
+
7.3) Evaluate output quality
|
|
128
|
+
7.4) A/B test different prompts
|
|
129
|
+
7.5) Gather user feedback
|
|
130
|
+
|
|
131
|
+
### 8) Safety Considerations
|
|
132
|
+
8.1) Prevent prompt injection
|
|
133
|
+
8.2) Validate outputs before use
|
|
134
|
+
8.3) Set appropriate guardrails
|
|
135
|
+
8.4) Handle refusals gracefully
|
|
136
|
+
8.5) Monitor for misuse
|
|
137
|
+
|
|
138
|
+
## Prompt Engineering Checklist
|
|
139
|
+
- [ ] Is the role/identity clearly defined?
|
|
140
|
+
- [ ] Is sufficient context provided?
|
|
141
|
+
- [ ] Is the task specific and unambiguous?
|
|
142
|
+
- [ ] Is the output format specified?
|
|
143
|
+
- [ ] Are examples provided if needed?
|
|
144
|
+
- [ ] Are edge cases handled?
|
|
145
|
+
- [ ] Has the prompt been tested?
|
|
146
|
+
- [ ] Are safety guardrails in place?
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
trigger: always_on
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
You are an expert in Python, AI, and Machine Learning development.
|
|
6
|
+
|
|
7
|
+
**CRITICAL ENVIRONMENT RULES:**
|
|
8
|
+
1. **Package Manager**: You MUST use **`uv`** for all package management (e.g., `uv pip install`, `uv run`, `uv add`).
|
|
9
|
+
2. **Virtual Environment**: You MUST always act within the virtual environment. **Activate it first:** `source .venv/bin/activate`.
|
|
10
|
+
3. **Dependencies**: All dependencies must be managed via `pyproject.toml`.
|
|
11
|
+
|
|
12
|
+
Key Principles:
|
|
13
|
+
- Write clean, efficient, and well-documented code
|
|
14
|
+
- Follow PEP 8 style guidelines
|
|
15
|
+
- Use type hints for better code clarity
|
|
16
|
+
- Implement proper error handling
|
|
17
|
+
- Write modular and reusable code
|
|
18
|
+
|
|
19
|
+
Python Best Practices:
|
|
20
|
+
- Follow naming conventions (snake_case for functions/variables)
|
|
21
|
+
- Use list comprehensions and generator expressions
|
|
22
|
+
- Use context managers (with statement)
|
|
23
|
+
- Implement proper logging
|
|
24
|
+
|
|
25
|
+
Machine Learning:
|
|
26
|
+
- Use scikit-learn for traditional ML
|
|
27
|
+
- Use PyTorch or TensorFlow for deep learning
|
|
28
|
+
- Implement proper data preprocessing
|
|
29
|
+
- Use cross-validation for model evaluation
|
|
30
|
+
- Track experiments with MLflow or Weights & Biases
|
|
31
|
+
- Version control datasets and models
|
|
32
|
+
|
|
33
|
+
Data Processing:
|
|
34
|
+
- Use pandas for data manipulation
|
|
35
|
+
- Use numpy for numerical computations
|
|
36
|
+
- Use matplotlib/seaborn for visualization
|
|
37
|
+
- Implement data validation
|
|
38
|
+
- Handle missing data appropriately
|
|
39
|
+
- Use efficient data structures
|
|
40
|
+
|
|
41
|
+
Deep Learning:
|
|
42
|
+
- Use PyTorch or TensorFlow/Keras
|
|
43
|
+
- Implement proper model architecture
|
|
44
|
+
- Use data augmentation
|
|
45
|
+
- Implement early stopping and checkpointing
|
|
46
|
+
- Use GPU acceleration when available
|
|
47
|
+
- Monitor training with TensorBoard
|
|
48
|
+
|
|
49
|
+
Model Deployment:
|
|
50
|
+
- Use aiohttp for serving models
|
|
51
|
+
- Implement model versioning
|
|
52
|
+
- Use Docker for containerization
|
|
53
|
+
- Implement proper API documentation
|
|
54
|
+
- Add input validation and error handling
|
|
55
|
+
- Monitor model performance in production
|
|
56
|
+
|
|
57
|
+
Testing:
|
|
58
|
+
- Write unit tests with pytest and pytest-asyncio
|
|
59
|
+
- Test data pipelines
|
|
60
|
+
- Test model predictions
|
|
61
|
+
- Use fixtures for test data
|
|
62
|
+
- Implement integration tests
|
|
63
|
+
|
|
64
|
+
Performance:
|
|
65
|
+
- Use vectorization with numpy
|
|
66
|
+
- Use multiprocessing for CPU-bound tasks
|
|
67
|
+
- Use async/await for I/O-bound tasks
|
|
68
|
+
- Profile code to identify bottlenecks
|
|
69
|
+
- Use Cython or numba for optimization
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Create a new Parrot Tool
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
description: Create a new Parrot Tool with standard structure and styling
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
1. Ask the user for the name of the Tool (e.g., "DbTool", "ServiceTool").
|
|
10
|
+
2. Create a new directory for the tool in `parrot/tools/[ToolName]`.
|
|
11
|
+
3. Create main tool file `parrot/tools/[ToolName]/__init__.py`.
|
|
12
|
+
4. Tools inherit from `AbstractTool` and return a `ToolResult`.
|
|
13
|
+
5. Tools accept for input a pydantic datamodel that inherits from class `AbstractToolArgsSchema`.
|
|
14
|
+
6. Add the following boilerplate code to `__init__.py`:
|
|
15
|
+
```python
|
|
16
|
+
from ..abstract import AbstractTool, AbstractToolArgsSchema, ToolResult
|
|
17
|
+
|
|
18
|
+
class ExampleToolArgs(AbstractToolArgsSchema):
|
|
19
|
+
... # all arguments accepted by the tool.
|
|
20
|
+
|
|
21
|
+
class ExampleTool(AbstractTool):
|
|
22
|
+
name: str = "example_tool"
|
|
23
|
+
description: str = (
|
|
24
|
+
"Use the description to explain tool usage and finality"
|
|
25
|
+
)
|
|
26
|
+
args_schema: type[AbstractToolArgsSchema] = ExampleToolArgs
|
|
27
|
+
|
|
28
|
+
async def _execute(self, **kwargs) -> ToolResult:
|
|
29
|
+
""" main code for tool execution """
|
|
30
|
+
```
|
|
31
|
+
7. Add example usage and concise explanations of capabilities at classdoc.
|
|
32
|
+
8. Verify that the tool can be imported correctly.
|
|
33
|
+
9. create a pytest at `tests/` using `pytest-asyncio`.
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Create an antigravity Workflow
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
description: Create new stack-agnostic workflows for the Antigravity repository
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Workflow Creator
|
|
10
|
+
|
|
11
|
+
I will help you create a new workflow that follows our stack-agnostic, question-driven philosophy.
|
|
12
|
+
|
|
13
|
+
## Guardrails
|
|
14
|
+
- Every workflow MUST be stack-agnostic
|
|
15
|
+
- Never hardcode specific frameworks, libraries, or tools
|
|
16
|
+
- Always include a stack detection step
|
|
17
|
+
- Always include clarifying questions
|
|
18
|
+
- Keep workflows focused on a single task
|
|
19
|
+
|
|
20
|
+
## Steps
|
|
21
|
+
|
|
22
|
+
### 1. Define the Workflow
|
|
23
|
+
Gather information:
|
|
24
|
+
- **Name**: kebab-case identifier (e.g., `git-commit`, `debug-error`)
|
|
25
|
+
- **Category**: development, git, testing, debugging, security, documentation, deployment, database, ai-tools, or creative
|
|
26
|
+
- **Description**: One-line summary (5-10 words)
|
|
27
|
+
- **Purpose**: What problem does this workflow solve?
|
|
28
|
+
|
|
29
|
+
### 2. Follow the Template Structure
|
|
30
|
+
|
|
31
|
+
Every workflow must have these sections:
|
|
32
|
+
|
|
33
|
+
```markdown
|
|
34
|
+
---
|
|
35
|
+
description: [5-10 word description]
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
# Workflow Name
|
|
39
|
+
|
|
40
|
+
Brief intro: what this accomplishes and when to use it.
|
|
41
|
+
|
|
42
|
+
## Guardrails
|
|
43
|
+
- What to AVOID doing
|
|
44
|
+
- Scope boundaries
|
|
45
|
+
- Critical constraints
|
|
46
|
+
|
|
47
|
+
## Steps
|
|
48
|
+
|
|
49
|
+
### 1. Understand Context
|
|
50
|
+
Ask clarifying questions:
|
|
51
|
+
- What is the goal?
|
|
52
|
+
- What constraints exist?
|
|
53
|
+
- What's the expected outcome?
|
|
54
|
+
|
|
55
|
+
### 2. Analyze Project
|
|
56
|
+
Detect existing stack:
|
|
57
|
+
- Check relevant config files
|
|
58
|
+
- Identify framework, tools, patterns
|
|
59
|
+
- Look at existing code for conventions
|
|
60
|
+
|
|
61
|
+
If unclear, ask the user.
|
|
62
|
+
|
|
63
|
+
### 3. [Core Implementation Steps]
|
|
64
|
+
Describe WHAT to do, not exact code.
|
|
65
|
+
Let AI generate appropriate implementation.
|
|
66
|
+
|
|
67
|
+
### 4. Verify
|
|
68
|
+
- How to confirm success
|
|
69
|
+
- What to test
|
|
70
|
+
|
|
71
|
+
## Principles
|
|
72
|
+
- Universal best practices
|
|
73
|
+
|
|
74
|
+
## Reference
|
|
75
|
+
- Links to relevant documentation
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 3. Validate Against Core Principles
|
|
79
|
+
|
|
80
|
+
Ensure your workflow follows:
|
|
81
|
+
|
|
82
|
+
| Principle | Check |
|
|
83
|
+
|-----------|-------|
|
|
84
|
+
| Stack-Agnostic | Does it work with ANY framework? |
|
|
85
|
+
| Question-Driven | Does it ask clarifying questions? |
|
|
86
|
+
| Single Responsibility | Does it do ONE thing well? |
|
|
87
|
+
| Progressive Disclosure | Does it start minimal, expand on demand? |
|
|
88
|
+
| Composable | Can it combine with other workflows? |
|
|
89
|
+
|
|
90
|
+
### 4. Create the File
|
|
91
|
+
Create the workflow file at:
|
|
92
|
+
```
|
|
93
|
+
workflows/<category>/<name>.md
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 5. Update Registry
|
|
97
|
+
Add entry to `workflows/registry.json`:
|
|
98
|
+
```json
|
|
99
|
+
"<name>": {
|
|
100
|
+
"category": "<category>",
|
|
101
|
+
"description": "<5-10 word description>",
|
|
102
|
+
"tags": ["tag1", "tag2", "tag3"]
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### 6. Test the Workflow
|
|
107
|
+
1. Copy the file to a test project's `.agent/workflows/` directory
|
|
108
|
+
2. Open Antigravity in that project
|
|
109
|
+
3. Type `/<name>` to trigger the workflow
|
|
110
|
+
4. Verify it asks appropriate questions
|
|
111
|
+
5. Verify it detects project stack correctly
|
|
112
|
+
|
|
113
|
+
## Common Mistakes to Avoid
|
|
114
|
+
|
|
115
|
+
### ❌ DON'T: Hardcode frameworks
|
|
116
|
+
```markdown
|
|
117
|
+
### Install Dependencies
|
|
118
|
+
npm install react tailwindcss
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### ✅ DO: Detect and adapt
|
|
122
|
+
```markdown
|
|
123
|
+
### Analyze Project Stack
|
|
124
|
+
- Check for existing UI framework
|
|
125
|
+
- Check for existing CSS approach
|
|
126
|
+
If unclear, ask the user which they prefer.
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### ❌ DON'T: Provide boilerplate code
|
|
130
|
+
```markdown
|
|
131
|
+
Create `Button.tsx`:
|
|
132
|
+
import React from 'react'
|
|
133
|
+
export const Button = () => <button>Click</button>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### ✅ DO: Describe what to create
|
|
137
|
+
```markdown
|
|
138
|
+
Create a button component that:
|
|
139
|
+
- Accepts variant props (primary, secondary)
|
|
140
|
+
- Follows the project's existing component patterns
|
|
141
|
+
- Uses the project's styling approach
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Reference
|
|
145
|
+
- See existing workflows in `workflows/` for examples
|
|
146
|
+
- Check [CONTRIBUTING.md](../../CONTRIBUTING.md) for guidelines
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: find the commit that introduced a bug
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
description: Automatically find the exact commit that introduced a bug
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
1. **Start Bisect**:
|
|
10
|
+
- Initialize the bisect process.
|
|
11
|
+
// turbo
|
|
12
|
+
- Run `git bisect start`
|
|
13
|
+
|
|
14
|
+
2. **Mark Current Commit as Bad**:
|
|
15
|
+
- Tell Git that the current version is broken.
|
|
16
|
+
// turbo
|
|
17
|
+
- Run `git bisect bad`
|
|
18
|
+
|
|
19
|
+
3. **Mark an Old Commit as Good**:
|
|
20
|
+
- Find a commit hash from when the feature was definitely working and mark it as good. Replace `[good-commit-hash]` with the actual hash.
|
|
21
|
+
// turbo
|
|
22
|
+
- Run `git bisect good [good-commit-hash]`
|
|
23
|
+
|
|
24
|
+
4. **Test and Repeat**:
|
|
25
|
+
- Git will checkout a commit in the middle. Test your app.
|
|
26
|
+
- If it works: Run `git bisect good`
|
|
27
|
+
- If it's broken: Run `git bisect bad`
|
|
28
|
+
- Repeat until Git tells you: `[hash] is the first bad commit`.
|
|
29
|
+
|
|
30
|
+
5. **Finish**:
|
|
31
|
+
- Reset the bisect state to return to the original branch.
|
|
32
|
+
// turbo
|
|
33
|
+
- Run `git bisect reset`
|
|
34
|
+
|
|
35
|
+
6. **Pro Tips**:
|
|
36
|
+
- You can automate this! Run `git bisect run npm test` to let a test script do the work for you.
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Generate comprehensive pytest suites
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Generate Tests Workflow
|
|
6
|
+
|
|
7
|
+
This workflow guides you through creating comprehensive pytest suites using `pytest-asyncio`, fixtures, and correct project structure.
|
|
8
|
+
|
|
9
|
+
## 1. Analyze the Context
|
|
10
|
+
1. Identify the module or class you need to test.
|
|
11
|
+
2. Read the source code of the target module to understand its dependencies and public API.
|
|
12
|
+
3. Determine the necessary fixtures (e.g., database connections, mock clients, sample data).
|
|
13
|
+
|
|
14
|
+
## 2. Create the Test File
|
|
15
|
+
1. All tests must reside in the `tests/` directory.
|
|
16
|
+
2. The filename should follow the pattern `test_<module_name>.py`.
|
|
17
|
+
3. **CRITICAL**: Use "uv" as package manager.
|
|
18
|
+
4. **CRITICAL**: Always enable the virtualenv first (`source .venv/bin/activate`).
|
|
19
|
+
|
|
20
|
+
## 3. Structure the Test Suite
|
|
21
|
+
Use the following template as a guide. Adjust fixtures and test cases to match the specific module requirements.
|
|
22
|
+
|
|
23
|
+
```python
|
|
24
|
+
"""
|
|
25
|
+
Comprehensive pytest suite for <Target Module>.
|
|
26
|
+
|
|
27
|
+
Tests cover:
|
|
28
|
+
- <Feature 1>
|
|
29
|
+
- <Feature 2>
|
|
30
|
+
- ...
|
|
31
|
+
"""
|
|
32
|
+
import pytest
|
|
33
|
+
import asyncio
|
|
34
|
+
from unittest.mock import Mock, MagicMock, AsyncMock, patch
|
|
35
|
+
from pathlib import Path
|
|
36
|
+
|
|
37
|
+
# Import target module
|
|
38
|
+
# from mypackage.module import MyClass
|
|
39
|
+
|
|
40
|
+
# ============================================================================
|
|
41
|
+
# FIXTURES
|
|
42
|
+
# ============================================================================
|
|
43
|
+
|
|
44
|
+
@pytest.fixture
|
|
45
|
+
def config_params():
|
|
46
|
+
"""Default configuration parameters for testing."""
|
|
47
|
+
return {
|
|
48
|
+
'param1': 'value1',
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@pytest.fixture
|
|
52
|
+
async def mock_dependency():
|
|
53
|
+
"""Mock external dependencies (e.g., DB, API client)."""
|
|
54
|
+
mock = AsyncMock()
|
|
55
|
+
yield mock
|
|
56
|
+
|
|
57
|
+
@pytest.fixture(scope='session')
|
|
58
|
+
def event_loop():
|
|
59
|
+
"""Create an instance of the default event loop for each test case."""
|
|
60
|
+
loop = asyncio.get_event_loop_policy().new_event_loop()
|
|
61
|
+
yield loop
|
|
62
|
+
loop.close()
|
|
63
|
+
|
|
64
|
+
# ============================================================================
|
|
65
|
+
# TEST CLASSES
|
|
66
|
+
# ============================================================================
|
|
67
|
+
|
|
68
|
+
class TestFeatureOne:
|
|
69
|
+
"""Test group for Feature One."""
|
|
70
|
+
|
|
71
|
+
@pytest.mark.asyncio
|
|
72
|
+
async def test_success_case(self, mock_dependency):
|
|
73
|
+
"""Test successful execution."""
|
|
74
|
+
# Arrange
|
|
75
|
+
# Act
|
|
76
|
+
# Assert
|
|
77
|
+
assert True
|
|
78
|
+
|
|
79
|
+
@pytest.mark.asyncio
|
|
80
|
+
async def test_error_handling(self):
|
|
81
|
+
"""Test error conditions."""
|
|
82
|
+
with pytest.raises(ValueError):
|
|
83
|
+
# Act that raises
|
|
84
|
+
pass
|
|
85
|
+
|
|
86
|
+
# ============================================================================
|
|
87
|
+
# RUN TESTS
|
|
88
|
+
# ============================================================================
|
|
89
|
+
|
|
90
|
+
if __name__ == '__main__':
|
|
91
|
+
pytest.main([__file__, '-v', '--tb=short'])
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## 4. Implementation Guidelines
|
|
95
|
+
- **Asyncio**: Use `@pytest.mark.asyncio` for async tests.
|
|
96
|
+
- **Fixtures**: Use fixtures for setup/teardown. Use `scope='session'` for heavy resources if safe.
|
|
97
|
+
- **Mocks**: Use `unittest.mock` (`MagicMock`, `AsyncMock`, `patch`) to isolate the unit under test.
|
|
98
|
+
- **Coverage**: Aim to test both success paths and error handling/edge cases.
|
|
99
|
+
|
|
100
|
+
## 5. Verification
|
|
101
|
+
1. Run the newly created test using `pytest`:
|
|
102
|
+
```bash
|
|
103
|
+
source .venv/bin/activate
|
|
104
|
+
pytest tests/test_<module_name>.py -v
|
|
105
|
+
```
|
|
106
|
+
//turbo
|
|
107
|
+
2. Verify all tests pass.
|