Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

get_qry-0.1.0.tar.gz (27.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

get_qry-0.1.0-py3-none-any.whl (24.8 kB view details)

Uploaded Python 3

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

Hashes for get_qry-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a9d7f3b0212f95dd68ea2afe165bcac8b0803f3578934b904f02783e0eeb81c3
MD5 6bbdd549b8c192b02695cb6073ab5c72
BLAKE2b-256 fc300d48731240a28eac142ddd949dbbd105032bbb68e697f34a519f5d34faac

See more details on using hashes here.

Provenance

The following attestation bundles were made for get_qry-0.1.0.tar.gz:

Publisher: release-get-qry.yml on thedatadavis/qry

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for get_qry-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f5a867ae6f9b77a24543de8f9640d023f07e6a35b3382b6b4541895e6b500850
MD5 8c9b2f8f31eb95f87bece88e8bc2e357
BLAKE2b-256 f99ba5a958215b54654ea660f1a3d8ee4fb911ebc7110729e228b03405af1879

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page