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.20.0.tar.gz (862.1 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.20.0-cp38-abi3-win_amd64.whl (10.3 MB view details)

Uploaded CPython 3.8+Windows x86-64

quarb-0.20.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.20.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (10.2 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.8+macOS 11.0+ ARM64

quarb-0.20.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.20.0.tar.gz.

File metadata

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

File hashes

Hashes for quarb-0.20.0.tar.gz
Algorithm Hash digest
SHA256 f29da786a1ad2509aed6e66d2bf262855f8ab66953ca1deaffcfb2a2e7a21cc6
MD5 a95de56dc4ccc348621392f780e0638c
BLAKE2b-256 aee585126712308d522b8ece12ed3f27e6db996a392a6183f548d566099f45f6

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: quarb-0.20.0-cp38-abi3-win_amd64.whl
  • Upload date:
  • Size: 10.3 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.20.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 ead903c21aa9c33fbd4db815c148839f18bceab938a20a2d4ba318927c159b23
MD5 f906947d5267669d92a7a9148788ab4e
BLAKE2b-256 5d6e59010b2a25bf50f26eea98fe7394e2767200d55e7b0fc36856c02036a088

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for quarb-0.20.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 340ee1ba80fbf0d6bac24e5aa38db0389d5ff985a0f9bd0efc95bc3080132cbc
MD5 b8e7b483d49ac25be0c45aef55012389
BLAKE2b-256 c7b537179ae50559c0607717be1bd117c9cbbc33fcfb885037e833c14d5bcd9f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for quarb-0.20.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ccde32b1b8edc9f166e5e71cb124d4e45bc667625af131b64ef98ebb857ad6ba
MD5 40091b4ecc613b4e30494f0acc1f9c8c
BLAKE2b-256 92728f4d8e227eeef6d7c38218f358fd37b7983e01c671f943c48509f295176c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for quarb-0.20.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9c6d7b57c2fab22c2b3a94d15addff06c233265a02748044df59bc9260df4646
MD5 0bfe381af7678634f51511b4e6928a6b
BLAKE2b-256 8ae3759e5b88103799be6bbce747aa173a51aeebba3fe6ee23aa3fb71b1f07aa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for quarb-0.20.0-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 bb4b960fb40d9974405513d15ffee8149a40aa860c75c829f73777fcd67f383e
MD5 a6625434af0baeab0f11239465b3c590
BLAKE2b-256 ab19ab30567b6c1ce2c2a282bd87286a1cdab5bd952bf6d0010934d6e114ae97

See more details on using hashes here.

Provenance

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

This release

0.20.0 This release

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