Skip to main content

quarb

Python bindings for the Quarb query engine — import quarb, plus qua, its command-line face. Quarb reads structured text as an arbor — a tree-spanned graph — and runs one query language over all of it, generalizing what XPath does for XML and jq does for JSON to JSON, YAML, TOML, CSV/TSV, XML, HTML, and Markdown alike. Try it live in the playground.

Install

pip install quarb

This installs the quarb Python module and the qua command (the language is Quarb; qua is its CLI).

Wheels are published for Linux (x86_64, aarch64), macOS (arm64, x86_64), and Windows (x86_64). The extension is built against PyO3's stable ABI (abi3-py38); a single wheel covers CPython 3.8 and later.

The qua command

The entry point covers what the bindings cover — one query over a text document:

qua '/books/*[/price:: > 20]/title::' store.json
echo '{"users":[{"name":"ada"}]}' | qua -f json '/users/*/name::'

Beyond text, quarb.open(path) dispatches on kind over the full local fleet — SQLite, kaiv (typed units), the filesystem (descend=True grafts parseable leaves), git (git:PATH), archives, XLSX, and source code — and quarb.mount([a, b, ...]) mounts several sources under one root so a single query joins across them (a YAML file <=> a SQLite database). The networked adapters — Postgres, MySQL, BigQuery, Neo4j, object stores, mail — and DuckDB live in the Rust binary: cargo install qua.

Quick start

import quarb

doc = quarb.loads("""{
  "books": [
    {"title": "Sapiens", "price": 25},
    {"title": "Cosmos",  "price": 18}
  ]
}""", "json")

doc.values('/books/*[/price:: > 20]/title::')
# ['Sapiens']

doc.value('/books/*/price:: @| mean')
# 21.5

doc.records('/books/* | rec("t", /title::, "p", /price::)')
# [{'t': 'Sapiens', 'p': 25}, {'t': 'Cosmos', 'p': 18}]

loads(text, format) / load(path) parse once into a Document, queried many times. Results come back typed: ints, floats, strings, None for null, tz-aware datetime for instants, timedelta for durations, Quantity for unit-carrying values, dicts for records. Formats: json, yaml, toml, csv, tsv, xml, html, markdown.

The lower-level quarb.run(query, text, format) and quarb.run_file(query, path) return the result lines as strings — exactly what the qua CLI prints. All errors raise ValueError with the engine's message.

For the query language itself — steps, criteria, readings, patterns, joins — see the user guide and spec.

License

Licensed under either of Apache License, Version 2.0 or the MIT license at your option. Both texts are bundled in the package.

Jupyter

%load_ext quarb.ipython
%quarb_mount fleet.daiv
%quarb /@hosts/*[::power > 0.2kW]::name

%%quarb [NAME] runs a cell-sized query against a named mount; results render as HTML tables, iterate as typed values (quantities keep magnitude + unit), and convert with .df / .df_magnitudes().

For a notebook where every cell is a query, install the dedicated kernel and pick Quarb in the launcher:

python -m quarb.kernel install
python -m quarb.kernel demo      # writes quarb-demo.ipynb to try

Cells are queries; %mount, %connect, %use, %docs, %translate, and %python (an escape hatch — the rest of the cell is Python, with the live session and the last result _ in scope) are the directives. Tab-completion offers the mounted arbor's real child names, and the bundled JupyterLab extension highlights Quarb syntax in cells automatically. %connect NAME PATH... (magic: %quarb_connect) attaches to a qua --resident daemon — for arbors too large to rebuild per notebook, queried from a standing session. pip install quarb[jupyter] pulls IPython, pandas, and the kernel runtime.

Download files

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

Source Distribution

quarb-0.18.0.tar.gz (852.6 kB view details)

Uploaded Source

Built Distributions

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

quarb-0.18.0-cp38-abi3-win_amd64.whl (10.2 MB view details)

Uploaded CPython 3.8+Windows x86-64

quarb-0.18.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.7 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ x86-64

quarb-0.18.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (10.1 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

quarb-0.18.0-cp38-abi3-macosx_11_0_arm64.whl (9.5 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

quarb-0.18.0-cp38-abi3-macosx_10_12_x86_64.whl (10.0 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

Details for the file quarb-0.18.0.tar.gz.

File metadata

  • Download URL: quarb-0.18.0.tar.gz
  • Upload date:
  • Size: 852.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for quarb-0.18.0.tar.gz
Algorithm Hash digest
SHA256 78512a56744f81134d868ec499971bd8f49677193a409ff2449a89ecffd53111
MD5 ad6a6c0db495e3f1b130fc51cad91c2d
BLAKE2b-256 3c3fb2f2455c30be9f8e9183ef97d5751080096dccf19907165c8e68a748879e

See more details on using hashes here.

Provenance

The following attestation bundles were made for quarb-0.18.0.tar.gz:

Publisher: publish-pypi.yml on deyanovich/quarb-rs

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

File details

Details for the file quarb-0.18.0-cp38-abi3-win_amd64.whl.

File metadata

  • Download URL: quarb-0.18.0-cp38-abi3-win_amd64.whl
  • Upload date:
  • Size: 10.2 MB
  • Tags: CPython 3.8+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for quarb-0.18.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2bcd6eb0ef570b2125093160555d4df2913f79bf1448996b5a317cb1137aa931
MD5 fa5a4e297a697b56cf3f6a34882c8aec
BLAKE2b-256 46cb5051e929d613dc04faf8e76f11b5bd1979dad65f18e931fc21e3557994eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for quarb-0.18.0-cp38-abi3-win_amd64.whl:

Publisher: publish-pypi.yml on deyanovich/quarb-rs

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

File details

Details for the file quarb-0.18.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for quarb-0.18.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 14b2326bee756deef87f19a646bac50637be016cf231ca80233f9f8b992aadeb
MD5 10515cd9401bdc507a03d1e8d6feec65
BLAKE2b-256 cb793ed747aee92c70ff83b804671575b8c10aa981bad52a32f2f865ccbd9286

See more details on using hashes here.

Provenance

The following attestation bundles were made for quarb-0.18.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish-pypi.yml on deyanovich/quarb-rs

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

File details

Details for the file quarb-0.18.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for quarb-0.18.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4739d1fdf964e90cc67acd3a09e971df68db77e2f6bc3722814c60fd3a85b864
MD5 0fb1af59380ed07cc14bc5404b1573eb
BLAKE2b-256 d533fa0c8d9880d580126dd2b50c1acd73357c1860c400fa9fa66aac4be03ff6

See more details on using hashes here.

Provenance

The following attestation bundles were made for quarb-0.18.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish-pypi.yml on deyanovich/quarb-rs

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

File details

Details for the file quarb-0.18.0-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for quarb-0.18.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ccc873e54d56767f7e8e7bf0344d9eaba4b7639c8f0dd3bef1e820bffdda7b53
MD5 0c5bfc70493332ff850709dce6154512
BLAKE2b-256 2c65959d603bd0f34618da9945822ba89823191c4b41fc5bc8455a9f90d1750a

See more details on using hashes here.

Provenance

The following attestation bundles were made for quarb-0.18.0-cp38-abi3-macosx_11_0_arm64.whl:

Publisher: publish-pypi.yml on deyanovich/quarb-rs

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

File details

Details for the file quarb-0.18.0-cp38-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for quarb-0.18.0-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 aaa185e37adf0b7a3e75d48eeef459d4f1e2ff57807acb62b467c239e306e90c
MD5 6159f8a7e9e80e8808e97e316ab809bb
BLAKE2b-256 61fc3b2574ebedcb5bc7b3715cfd9e4ca2c2c85413e14c5545e7d390e516b141

See more details on using hashes here.

Provenance

The following attestation bundles were made for quarb-0.18.0-cp38-abi3-macosx_10_12_x86_64.whl:

Publisher: publish-pypi.yml on deyanovich/quarb-rs

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

Release history Release notifications | RSS feed

0.29.0

6 files

0.28.0

6 files

0.27.0

6 files

0.26.0

6 files

0.25.0

6 files

0.24.0

6 files

0.23.0

6 files

0.22.0

6 files

0.21.0

6 files

0.20.0

6 files

0.19.0

6 files

This release

0.18.0 This release

6 files

0.17.0

6 files

0.16.0

6 files

0.15.0

6 files

0.14.0

6 files

0.13.0

6 files

0.12.0

6 files

0.11.0

6 files

0.10.0

6 files

0.9.0

6 files

0.6.0

6 files

0.5.0

6 files

0.4.0

6 files

0.3.6

6 files

0.3.5

6 files

0.3.4

6 files

0.3.3

6 files

0.3.2

6 files

0.3.1

6 files

0.3.0

6 files

0.2.0

6 files

0.1.1

6 files

0.1.0

6 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page