The Qry Cloud CLI and dbt publisher
Project description
get-qry
The Qry Cloud command-line interface and dbt publisher. The PyPI distribution
is named get-qry; the installed command is qry.
First run
pipx install get-qry
# or: uv tool install get-qry
qry auth signup
cd your-dbt-project
qry init
dbt build
qry dbt publish
qry dbt publish reads the same selected target from profiles.yml that dbt
uses. DuckDB targets are copied from the local database file. Snowflake targets
are read directly with a bounded, read-only query and materialized into the
release artifact on the machine running the CLI. Qry Cloud never receives the
warehouse credential. Password and private_key_path Snowflake profiles are
supported; key-pair authentication is recommended.
Use the target stored by qry init --dbt-target, override it with
--dbt-target, and set a non-default profiles directory with
DBT_PROFILES_DIR or --profiles-dir.
qry auth signup and qry auth login open a short-lived browser authorization.
New accounts confirm their email before approving the terminal. The CLI stores
the resulting user session outside the repository and never prints it.
qry init detects dbt_project.yml, creates or selects a workspace, registers
the project and production environment, and writes a secret-free qry.toml.
Useful context commands:
qry status
qry workspace list
qry workspace create "Acme Data" --use
qry workspace use acme-data
For CI, create a project- and environment-scoped deploy token while signed in:
qry tokens create --name "GitHub Actions"
The raw qry_deploy_... value is revealed once. Store it as
QRY_DEPLOY_TOKEN in the CI secret store. Public endpoint API keys are a
separate credential class and cannot publish dbt releases.
After publishing, create a reveal-once key for a specific public endpoint:
qry keys create --endpoint customer_order_history --name "Local development"
Endpoint scope is required by default. A broader key requires the explicit
--workspace-wide switch.
Automation
Non-interactive stdout is JSON by default. --json and --no-input can appear
before or after the command:
qry status --json
qry init --workspace acme --no-input --json
qry dbt publish --json
Success uses {"data": ...}. Failures use a stable
{"error":{"code","message","retryable"}} envelope on stderr and a nonzero
exit status. Secrets are never included in status, workspace, auth, or project
configuration output; reveal-once token creation is the explicit exception.
Headless login does not launch a browser: it emits an
authorization_required event with the verification URL and user code on
stderr, then waits for approval.
Configuration is resolved in this order: command flags, environment variables,
the nearest qry.toml, then the active user profile. Set QRY_CONFIG_HOME or
XDG_CONFIG_HOME to isolate profiles in an agent or test sandbox.
Release
The Release get-qry GitHub workflow tests Python 3.10 through 3.13, builds and
checks both distributions, and smoke-installs the wheel. Publishing uses PyPI
Trusted Publishing from the pypi GitHub environment.
After configuring that publisher in PyPI, release version 0.1.0 by pushing
the matching get-qry-v0.1.0 tag. The workflow rejects tags that do not match
the version in pyproject.toml.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file get_qry-0.1.0.tar.gz.
File metadata
- Download URL: get_qry-0.1.0.tar.gz
- Upload date:
- Size: 27.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9d7f3b0212f95dd68ea2afe165bcac8b0803f3578934b904f02783e0eeb81c3
|
|
| MD5 |
6bbdd549b8c192b02695cb6073ab5c72
|
|
| BLAKE2b-256 |
fc300d48731240a28eac142ddd949dbbd105032bbb68e697f34a519f5d34faac
|
Provenance
The following attestation bundles were made for get_qry-0.1.0.tar.gz:
Publisher:
release-get-qry.yml on thedatadavis/qry
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
get_qry-0.1.0.tar.gz -
Subject digest:
a9d7f3b0212f95dd68ea2afe165bcac8b0803f3578934b904f02783e0eeb81c3 - Sigstore transparency entry: 2205052156
- Sigstore integration time:
-
Permalink:
thedatadavis/qry@842c5a7c8c2f2bbf32426498b440b1df71a4ffe5 -
Branch / Tag:
refs/tags/get-qry-v0.1.0 - Owner: https://github.com/thedatadavis
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-get-qry.yml@842c5a7c8c2f2bbf32426498b440b1df71a4ffe5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file get_qry-0.1.0-py3-none-any.whl.
File metadata
- Download URL: get_qry-0.1.0-py3-none-any.whl
- Upload date:
- Size: 24.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5a867ae6f9b77a24543de8f9640d023f07e6a35b3382b6b4541895e6b500850
|
|
| MD5 |
8c9b2f8f31eb95f87bece88e8bc2e357
|
|
| BLAKE2b-256 |
f99ba5a958215b54654ea660f1a3d8ee4fb911ebc7110729e228b03405af1879
|
Provenance
The following attestation bundles were made for get_qry-0.1.0-py3-none-any.whl:
Publisher:
release-get-qry.yml on thedatadavis/qry
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
get_qry-0.1.0-py3-none-any.whl -
Subject digest:
f5a867ae6f9b77a24543de8f9640d023f07e6a35b3382b6b4541895e6b500850 - Sigstore transparency entry: 2205052170
- Sigstore integration time:
-
Permalink:
thedatadavis/qry@842c5a7c8c2f2bbf32426498b440b1df71a4ffe5 -
Branch / Tag:
refs/tags/get-qry-v0.1.0 - Owner: https://github.com/thedatadavis
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-get-qry.yml@842c5a7c8c2f2bbf32426498b440b1df71a4ffe5 -
Trigger Event:
push
-
Statement type: