Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Install

onceover is a Python package with a Rust core. Binary wheels are the normal path; building from source needs a Rust toolchain.

pip install onceover

The package requires CPython 3.10+ and Polars 1.28–2.x. Wheels cover Linux x86_64 and aarch64, macOS Intel and Apple silicon, and Windows x86_64. The source distribution additionally needs Rust and a C compiler — the same setup used for development, below.

Verify the installation

Verify the installation by importing onceover and profiling a small DataFrame. This loads the compiled extension and runs the pipeline.

onceover can profile in-memory DataFrames with millions of rows and hundreds of columns. Column summaries and integrity checks examine every row. Relationship discovery uses bounded samples and searches; see Coverage, budgets, and deadlines for the limits and coverage fields.

0.1.2
3 rows × 2 columns (quick budget); key candidate: id; 0 functional dependencies, 0 predictive dependencies, 0 conditional rules

Optional dependencies

Two extras install what the surrounding tooling needs:

ExtraInstallsUsed by
onceover[notebook]altair, great-tables, vl-convert, numpy, jupyterlabthe analysis notebook, charts, tables
onceover[benchmark]numpy, psutilthe scale benchmark
pip install 'onceover[notebook]'

Development installation

Development builds the Rust core and binds it to a virtual environment:

python -m venv .venv
source .venv/bin/activate
pip install 'maturin>=1.15,<2' pytest scipy
maturin develop --release
cargo test --workspace --locked
pytest tests/

maturin develop --release compiles the workspace and installs the extension into the active environment. Repeat it after changing Rust sources; the Python side is plain source and needs no build step.

The profiler releases the GIL during computation. Multiple threads can therefore call profile concurrently without serializing on the interpreter.