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.27.0.tar.gz (939.9 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.27.0-cp38-abi3-win_amd64.whl (10.5 MB view details)

Uploaded CPython 3.8+Windows x86-64

quarb-0.27.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.9 MB view details)

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

quarb-0.27.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (10.3 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

quarb-0.27.0-cp38-abi3-macosx_11_0_arm64.whl (9.8 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

quarb-0.27.0-cp38-abi3-macosx_10_12_x86_64.whl (10.2 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for quarb-0.27.0.tar.gz
Algorithm Hash digest
SHA256 f05101f2e8a852ad8a5a44a245b7a70dbb52f6573aee42675b96134f4ebed214
MD5 15ad4a34572df73bfb64b2508d5235db
BLAKE2b-256 0993ac5b5a6b17df8a00e03e4db004425ba3148121d09bda328d0f58ca9d5522

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: quarb-0.27.0-cp38-abi3-win_amd64.whl
  • Upload date:
  • Size: 10.5 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.27.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 c58fecca185a8fca3728295a0fb1279307482adc6c8fc16b05ca6ee4d657641e
MD5 53a39c1a89ec05bbfb7fc7a4a95d5422
BLAKE2b-256 0660a5319a97b1d953922b9e25ef60c3f6f099ab52234674a2cb7f64dcebf5ea

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for quarb-0.27.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 604dc5a87a7290fca6f9c0125ac548208fbfe5a92e3709bfc84700a245ed1af2
MD5 ccbcc2085a8ba53afb630d619dc7d55e
BLAKE2b-256 f65fc1c262165bff6998c5dda2a325e2e1be9b664b14a60ddeb65d45004c055d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for quarb-0.27.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e1ca45304338637922926dae84ad36721cb41900315de5b019f7be23fff4fd91
MD5 8c54bbf343daf47b0b1b8d20f3b15ece
BLAKE2b-256 8e33aa90c541bf4414eb34a24e756688ec59ab14a5ac61f90ee1266a85b61f09

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for quarb-0.27.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7c2644c95d66f5505c31ff3de4e2fcaf4084e79cfb234de407f3b36fb78fbc40
MD5 01f147b8f1aef41fde40fb87b00a6070
BLAKE2b-256 b5b12f50ccf72559c8b0871e4a31a3fbdb7b22c2a9d9fffc2bd1a562cd62719b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for quarb-0.27.0-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0665d60c1d1e47700909b98f679ff17bd978d19d3cf0e3363f77fc24bcd2a9cf
MD5 97b1be0218f08b7400aa3606f9d5a77e
BLAKE2b-256 8b818e22278a2ee5c71ef01991f2c6363c198efbcf7942fe20fbd72420794c01

See more details on using hashes here.

Provenance

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

This release

0.27.0 This release

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