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/* | %(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.29.0.tar.gz (992.2 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.29.0-cp38-abi3-win_amd64.whl (11.0 MB view details)

Uploaded CPython 3.8+Windows x86-64

quarb-0.29.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.2 MB view details)

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

quarb-0.29.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (10.6 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

quarb-0.29.0-cp38-abi3-macosx_11_0_arm64.whl (10.1 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

quarb-0.29.0-cp38-abi3-macosx_10_12_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for quarb-0.29.0.tar.gz
Algorithm Hash digest
SHA256 11565deb893e5ee1917b633573fb5aca2da24a028be84a6d4ba9db2bb5c6fec3
MD5 e801558c31ab8972fa30d3383a4b1a7f
BLAKE2b-256 d9a39a3196bfd05ff011fcb472f3e98d6c677157245b185141c3c69cb2df1e1b

See more details on using hashes here.

Provenance

The following attestation bundles were made for quarb-0.29.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.29.0-cp38-abi3-win_amd64.whl.

File metadata

  • Download URL: quarb-0.29.0-cp38-abi3-win_amd64.whl
  • Upload date:
  • Size: 11.0 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.29.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a0d58d93d82b583e8ec94fc90556483478feed788e72397668ba35e187737d0d
MD5 d4922af1656d63f0f11b452619f50e6f
BLAKE2b-256 eebeaa0072c7fe58f32f78abf994327a1eb0630275bdb184665f1db02d2cc6a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for quarb-0.29.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.29.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for quarb-0.29.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d59ff1bdc5f48ee669b538d21a26a1d6166e732c53a4ea552f4444f74ba0143f
MD5 cb399647ef806ce33affd951476e9445
BLAKE2b-256 a8824665abd9515bf30fb08820a46285e66503b3bece957cda3cadcd5f249289

See more details on using hashes here.

Provenance

The following attestation bundles were made for quarb-0.29.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.29.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for quarb-0.29.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 731f5f50a0057415ca09b562ae8164e3ca1ae093e95d6b14b9e29468af3ce9fb
MD5 01ecb731a95e7b7993cfd575f2fefb5f
BLAKE2b-256 a8996f4b4ce53e104318f09a237351d1f1af0e89e639ed34c7a10975c7b40683

See more details on using hashes here.

Provenance

The following attestation bundles were made for quarb-0.29.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.29.0-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for quarb-0.29.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 82b2e5450f1ddb96b913cd75b1511fb98638b936836efb8a433ac6688792c201
MD5 a5804cb3b5e51e9fcf8c38055e87c9ac
BLAKE2b-256 65edd7430095c76487b7eb3d25002ed9a01cc7e88b717e6d0315e84aa9114bbc

See more details on using hashes here.

Provenance

The following attestation bundles were made for quarb-0.29.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.29.0-cp38-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for quarb-0.29.0-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f4bd49145b199f7b554007cff4d23fe374ee2970e80cbc820e3131e2cffc4bdf
MD5 8f429a8d53d92b212b3a4925ae1534f5
BLAKE2b-256 bef6e7b5cc746a8319ef7eba488f571f94ddcb60cc2d9416cd66688f8a3b6485

See more details on using hashes here.

Provenance

The following attestation bundles were made for quarb-0.29.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

This release

0.29.0 This release

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

0.18.0

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