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
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. %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.2.tar.gz (433.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.3.2-cp38-abi3-win_amd64.whl (5.2 MB view details)

Uploaded CPython 3.8+Windows x86-64

quarb-0.3.2-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.2-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.2-cp38-abi3-macosx_11_0_arm64.whl (4.8 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

quarb-0.3.2-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.2.tar.gz.

File metadata

  • Download URL: quarb-0.3.2.tar.gz
  • Upload date:
  • Size: 433.1 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.2.tar.gz
Algorithm Hash digest
SHA256 0f54611b92622246e50a24658816a0c83bc8843f288db12f5833282865a7d99c
MD5 82aeeeef082f70c16c0bf017b349661b
BLAKE2b-256 80f0345da55011108aab753beabdbb69afa54df686fa142d432ee19856aacd37

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: quarb-0.3.2-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.2-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 57d07deaca968e4dfadb6548bc8d0805a8c0a5796cfd31ec74c3d05118c00581
MD5 5a29b6b62e6bbfe8ef7da67bfaf381cd
BLAKE2b-256 8299f30be6a6eea5c0767201cd649715b4cc386d7ff34715c6bf18cb65c155a6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for quarb-0.3.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 765310ee39a7910f8dd064bcf5e56ad227547afdabfad477de624a107fab14c6
MD5 d8cb90ba6fdc2e6111272be94ba8aa82
BLAKE2b-256 d3c5045ff13c4d8dcfee4721e062ad1ef4c3d0f39b6f88b86205b6aaf0a7fda6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for quarb-0.3.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fe938905637614aedc71f07b89d93feed515fa099614efaabfd85d9ded49fc93
MD5 bfba2916de205f63e2593dffa5489ccd
BLAKE2b-256 44bf0205bef1fbfc377bd64f8273f0b18fdb8fbc830b8980df56a2de6833fcc4

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: quarb-0.3.2-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.2-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8dc9546a6a30e4bac277fc8f46ff40aaf28229f134b8307d7268d14a978eb40a
MD5 aa34cd1883963838f1cf30d8c5424ddd
BLAKE2b-256 d7d246fdda5e1b9d7ba6a5be2e5df578319679655a61b340ae2b66fafd4897a3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for quarb-0.3.2-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2e01496a06307355923eb185c416280289fb0c0388ebcaadd57494bdfa553fb9
MD5 84bd477a13570c3157a8bf072f804432
BLAKE2b-256 275811c8d3baf0d0cc4b3fbe92ca8e88f6a422e69ad2eb2b828f807835ac14df

See more details on using hashes here.

Provenance

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