arrs
A command-line tool for inspecting Arrow-based datasets. It reads Lance datasets today; the core is format-agnostic, so other Arrow-backed formats can be added without changing the commands or the output layer.
arrs rowcount dataset.lance
arrs head -n 5 dataset.lance
arrs stats --where "split = 'test'" dataset.lance
arrs search --column embedding --vector-file q.json -k 10 dataset.lance
Install
uv tool install rust-arrs # prebuilt binary, from PyPI
cargo install arrs-cli # from crates.io
Building from a clone and installing shell completions are covered in doc/install.md.
Commands
Every command takes a local path or an object-store URI (s3://, gs://,
az://, file://).
| Command | Description |
|---|---|
cat |
Print every row of one or more datasets. |
head / tail |
First / last N rows (default 10). |
take |
Rows at given indices, e.g. --indices '-1,0,2:4'. |
sample |
N random rows without replacement; --seed for reproducibility. |
rowcount |
Number of rows. |
schema |
Logical (Arrow) or physical (format-native) schema. |
stats |
Per-column summary statistics, the df.describe() of a dataset. |
freq |
Value counts for one column: each distinct value, its count and percent. |
diff |
Compare two datasets, or two versions of one Lance dataset. |
blob |
Write one cell's binary payload to a file or stdout. |
completions |
Print a shell completion script. |
Lance-only commands:
| Command | Description |
|---|---|
stat |
One-screen dataset health summary, from metadata only. |
versions / branches / tags |
List versions, branches, and tags. |
indices |
Indices on the dataset: name, type, columns, version. |
index-stats |
Indexed vs unindexed row counts per index. |
fragments |
Fragments with row, deletion, file, and size information. |
search |
Nearest-neighbor vector search; appends a _distance column. |
Per-command options and output are documented in doc/commands.md.
Global flags
| Flag | Purpose |
|---|---|
--format <csv|jsonl|table|ipc> |
Output format. Defaults to table for the summary and metadata commands, jsonl elsewhere. ipc is a lossless Arrow stream, valid on cat/head/tail/take/sample. |
--columns / --exclude-columns |
Comma-separated include/exclude lists. Accept globs and nested paths. |
--where <predicate> |
SQL-style row filter, applied before row selection. |
--binary-format <none|hex|base64> |
How binary values are rendered. Default none prints a BINARY_DATA placeholder. |
--max-list-items <N> |
Truncate lists to the first N elements. |
--max-cell-width <N> |
Table only: cut each data cell to N characters. |
--float-precision <N> |
Render floats with exactly N fractional digits. |
--with-row-id / --with-row-addr |
Lance only: append _rowid / _rowaddr. |
--branch / --version / --tag / --as-of |
Lance only: which version to read. |
--no-progress |
Turn off the scan progress indicator on stderr. |
--max-list-items, --max-cell-width, and --float-precision are lossy and
affect display only. Combining them with --format ipc is an error rather than
a silent no-op.
Examples
The dataset below has 200 rows and five columns, one of them a 1536-dimensional embedding.
$ arrs rowcount dataset.lance
200
$ arrs head -n 3 --columns id,label,score dataset.lance
{"id":1,"label":"ham","score":0.568}
{"id":2,"label":"spam","score":0.225}
{"id":3,"label":"ham","score":0.413}
$ arrs tail -n 3 --format csv --exclude-columns emb dataset.lance
id,label,score,split
198,spam,0.93,test
199,ham,0.009,test
200,,0.532,test
$ arrs head -n 2 --where "split = 'test' AND score > 0.9" --columns id,score dataset.lance
{"id":165,"score":0.943}
{"id":176,"score":0.983}
Trim a wide embedding column instead of flooding the terminal:
$ arrs head -n 1 --columns id,emb --max-list-items 4 --float-precision 2 dataset.lance
{"id":1,"emb":[-0.78,-0.76,0.17,0.74,"… (1532 more)"]}
Check the class balance of a label:
$ arrs freq --column label dataset.lance
+-------+-------+---------+
| value | count | percent |
+=========================+
| ham | 90 | 45.0% |
|-------+-------+---------|
| spam | 90 | 45.0% |
|-------+-------+---------|
| NULL | 20 | 10.0% |
+-------+-------+---------+
Summarize a column:
$ arrs stats --columns score --float-precision 3 dataset.lance
+--------+---------+-------+-------+-------+-------+-------+--------+----------+
| column | type | count | nulls | min | max | mean | stddev | distinct |
+==============================================================================+
| score | Float64 | 200 | 0 | 0.002 | 0.987 | 0.502 | 0.288 | 180 |
+--------+---------+-------+-------+-------+-------+-------+--------+----------+
Read an earlier version of the same dataset, here before the test split was appended:
$ arrs rowcount --version 1 dataset.lance
160
Pipe a lossless Arrow stream into another tool:
$ arrs cat --where "score > 0.9" dataset.lance --format ipc \
| duckdb -c "SELECT count(*) FROM read_arrow('/dev/stdin')"
Documentation
- Install and shell completions
- Command reference
- Columns and filters
- Output formats
- Lance versions, branches, tags, and row identity
- Diffing datasets and versions
- Remote object stores
- Changelog
License
MIT.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rust_arrs-0.2.1.tar.gz.
File metadata
- Download URL: rust_arrs-0.2.1.tar.gz
- Upload date:
- Size: 215.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
311d31eb1527f28aea9148df0ed4da2fdf4749e634a6bbf1f1ea324fc8b15697
|
|
| MD5 |
1c50127419d0be496c2723ea9c02ebcc
|
|
| BLAKE2b-256 |
42c08b8e6008bd01d3fbc3cec1f5fd145c2736a4e6ca14df8f920da19ad13764
|
Provenance
The following attestation bundles were made for rust_arrs-0.2.1.tar.gz:
Publisher:
release.yml on jonasdedden/arrs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rust_arrs-0.2.1.tar.gz -
Subject digest:
311d31eb1527f28aea9148df0ed4da2fdf4749e634a6bbf1f1ea324fc8b15697 - Sigstore transparency entry: 2618338398
- Sigstore integration time:
-
Permalink:
jonasdedden/arrs@4c017626519aad93aa75eca8dcdb50ed3f6f07e9 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/jonasdedden
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4c017626519aad93aa75eca8dcdb50ed3f6f07e9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file rust_arrs-0.2.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: rust_arrs-0.2.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 54.5 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de833834c08076b61a7cf0252b44d991d837fb71d26b662c68fd2a352cf15867
|
|
| MD5 |
881155070da5e74613c644d2d47c2375
|
|
| BLAKE2b-256 |
dabc9c8ef82cbcc563677118fe0815b6c36af57005de66abc0d48da6050ed2b4
|
Provenance
The following attestation bundles were made for rust_arrs-0.2.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on jonasdedden/arrs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rust_arrs-0.2.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
de833834c08076b61a7cf0252b44d991d837fb71d26b662c68fd2a352cf15867 - Sigstore transparency entry: 2618338486
- Sigstore integration time:
-
Permalink:
jonasdedden/arrs@4c017626519aad93aa75eca8dcdb50ed3f6f07e9 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/jonasdedden
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4c017626519aad93aa75eca8dcdb50ed3f6f07e9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file rust_arrs-0.2.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: rust_arrs-0.2.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 51.7 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a38285a521350c0e16566549668695a9cf6e78f565a9138751556cb4805f64f1
|
|
| MD5 |
fe1de950d3a7a48f6ff645c1f355f0ad
|
|
| BLAKE2b-256 |
5500e57627d0226e2896d42d3c0c541ea9dc571d74507d3ed06966ad8df2d4d7
|
Provenance
The following attestation bundles were made for rust_arrs-0.2.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yml on jonasdedden/arrs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rust_arrs-0.2.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
a38285a521350c0e16566549668695a9cf6e78f565a9138751556cb4805f64f1 - Sigstore transparency entry: 2618338538
- Sigstore integration time:
-
Permalink:
jonasdedden/arrs@4c017626519aad93aa75eca8dcdb50ed3f6f07e9 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/jonasdedden
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4c017626519aad93aa75eca8dcdb50ed3f6f07e9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file rust_arrs-0.2.1-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: rust_arrs-0.2.1-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 49.2 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a350b3ae59009aad1df94780c1cc6de44b31bede999cfcd53100b323893c7134
|
|
| MD5 |
c01a29b4473d4c63bb9d99ef237fce1e
|
|
| BLAKE2b-256 |
59f637488f7963675a9da00be0593d90e2316a8335292219bd3d9bb7adfcfaf0
|
Provenance
The following attestation bundles were made for rust_arrs-0.2.1-py3-none-macosx_11_0_arm64.whl:
Publisher:
release.yml on jonasdedden/arrs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rust_arrs-0.2.1-py3-none-macosx_11_0_arm64.whl -
Subject digest:
a350b3ae59009aad1df94780c1cc6de44b31bede999cfcd53100b323893c7134 - Sigstore transparency entry: 2618338429
- Sigstore integration time:
-
Permalink:
jonasdedden/arrs@4c017626519aad93aa75eca8dcdb50ed3f6f07e9 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/jonasdedden
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4c017626519aad93aa75eca8dcdb50ed3f6f07e9 -
Trigger Event:
push
-
Statement type: