Skip to main content

One query language for every tree — Python bindings for the Quarb engine: JSON, YAML, TOML, CSV, XML, HTML, Markdown, SQLite, kaiv (typed units), filesystem, git, archives, XLSX, and source code (Rust/Python/JS/C), plus jq/XPath/SQL translators

Project description

qua

Python bindings for the Quarb query engine. 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::'

The full qua CLI — file systems, git, databases, mail, adapter composition — is 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

Cells are queries; %mount, %connect, %use, %docs, and %translate are the directives. %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.

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

quarb-0.3.1.tar.gz (429.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.3.1-cp38-abi3-win_amd64.whl (5.2 MB view details)

Uploaded CPython 3.8+Windows x86-64

quarb-0.3.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.3 MB view details)

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

quarb-0.3.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.1 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

quarb-0.3.1-cp38-abi3-macosx_11_0_arm64.whl (4.8 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

quarb-0.3.1-cp38-abi3-macosx_10_12_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: quarb-0.3.1.tar.gz
  • Upload date:
  • Size: 429.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for quarb-0.3.1.tar.gz
Algorithm Hash digest
SHA256 0bcd34f09693a7b1d0049d8275188b6593172b90af0094969110fbddeb7e8458
MD5 4cf28e9ecbde268af982bf5843aecf73
BLAKE2b-256 cac5a834e659f9d74742311e23d6952fbf5c8a748c31d4e8e3e13420f057fce4

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for quarb-0.3.1-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 563ce9b8e340de2155c3101b204e1e77227cda648b9dc49d5f58a92e0c5492e7
MD5 ed26e2bc9c99067370d783a2cda08a5f
BLAKE2b-256 305e7b377d7b245e9ad63f7272a145ef06699da0e9fd43954739a27795d81e63

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for quarb-0.3.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d9dbf845dda4492386b3c26cadce578bda5ba873ede00f4ce5c4188e2f3cb038
MD5 df7287dbc4782d645f10809497124ad8
BLAKE2b-256 b90782e0b830745ba80bc17945ef1e0eace3ebf4b10fa40cacc0da88ac81db01

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for quarb-0.3.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4a0a359932b5bd38b637a6b9ee0c5a6eb474567764f9dedd92e36ca20c3de486
MD5 b36edf3f2a1be2d8b704e100dba0d737
BLAKE2b-256 cee7cb73eedbd5c6f5af112215f2fd5e5513fe0cefe7d50205e0cc4e08f6da74

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: quarb-0.3.1-cp38-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 4.8 MB
  • Tags: CPython 3.8+, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for quarb-0.3.1-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 76b85965923457e48cbdd8a480b03f2ff5164871f05d065b85a7dd4367669026
MD5 ff2a199a741a4c0a8dcb2f36f88ec7f1
BLAKE2b-256 73a80c09b0bb64fd17744287eaffe8f0498576927fc80285aaf41b9c539169c3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for quarb-0.3.1-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 176b63ab962f37b8b68a031b22b47f5a2d675e680b5acdead96957b8d98747fe
MD5 21913b790d2e00cb0af1487f5521b3e0
BLAKE2b-256 5c2a58dfa7c92e4a0c3ec38a7f14b2bcae7ca66dae659f52c8835793112028ae

See more details on using hashes here.

Provenance

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

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