Skip to content

install

boitatá lives on PyPI and imports as boitata. each platform gets one abi3 wheel (linux x86_64 and aarch64, macos intel and apple silicon, windows x64) that serves every python from 3.11, so you need no compiler.

pip install "boitata[all]"
import boitata as bt

environment managers

venv and pip

python -m venv .venv
source .venv/bin/activate          # Windows: .venv\Scripts\activate
pip install "boitata[all]"

uv

uv add "boitata[all]"            # in a uv project
uv pip install "boitata[all]"    # in any environment

poetry

poetry add "boitata[all]"

conda or mamba

install the dependencies from conda-forge, then boitatá with pip and --no-deps, so pip leaves the conda packages alone.

conda create -n geo -c conda-forge python numpy matplotlib anywidget polars pandas pyarrow pip
conda activate geo
pip install --no-deps boitata

pixi

pixi add python numpy matplotlib anywidget polars pandas pyarrow
pixi add --pypi "boitata[all]"

extras

numpy is the only required dependency. boitatá imports the others on first use, and the error names the missing package.

pip extra adds conda-forge packages
(none) numpy numpy
plot boitata.plot matplotlib (or matplotlib-base)
3d the notebook widget of boitata.plot3d, synced both ways with python; without it a scene shows as a standalone page anywidget
export Scene.screenshot, rendered in headless chromium playwright
all plot, 3d, and to_polars, to_pandas, to_pyarrow matplotlib anywidget polars pandas pyarrow

minimum versions

package minimum
python 3.11
numpy 1.26 (1.x and 2.x both work)
matplotlib 3.8
anywidget 0.9
playwright 1.45
polars 1.4
pandas 2.2
pyarrow 16

3D scenes and screenshots

boitata.plot3d draws in the browser with WebGL, so it needs no OpenGL or display on the machine running python. Scene.screenshot renders the scene in headless chromium through playwright (the export extra), which downloads chromium on first use; it runs on servers and in containers without a display. on a bare linux image, install chromium's system libraries once:

playwright install --with-deps chromium

if jupyter runs in another environment than the kernel, install anywidget there too, or the notebook shows each scene as a standalone page without two-way sync.

datasets

boitata.datasets downloads files from raw.githubusercontent.com on first use, checks their SHA-256 and caches them in one folder per datasets commit, under %LOCALAPPDATA%\boitata on windows and under $XDG_CACHE_HOME/boitata or ~/.cache/boitata elsewhere (macos included). set BOITATA_DATA to use your own folder; the files then sit in it directly.

downloads honor the HTTPS_PROXY, HTTP_PROXY and NO_PROXY variables (and the system proxy settings on windows and macos). behind a proxy that re-signs TLS, point SSL_CERT_FILE at its CA bundle.

air-gapped installs

on a connected machine with the same OS, architecture and python, download the wheels, then install them without an index:

pip download "boitata[all]" -d wheels                                 # connected machine
pip install --no-index --find-links wheels "boitata[all]"             # offline machine

for datasets, copy the commit folder of a filled cache and point BOITATA_DATA at it.

contributors

to build boitatá you need rust ≥ 1.97 (pinned in rust-toolchain.toml) and a C compiler. mise run build compiles it into the development environment. mise run compat builds a wheel into dist/, installs it into fresh environments and runs the python tests in each. mise run compat <mode> runs one mode; every mode except dist reuses what dist/ already holds.

mode environment
dist builds the sdist and wheel only
venv python -m venv and pip, all extras
uv uv, python 3.11, all extras
pixi pixi.toml environments: min (lowest supported versions), latest, sdist (built with conda-forge rust)
conda environment.yml with micromamba, mamba or conda

mise run compat skips a mode whose tool is missing. mise run conda:recipe builds the draft conda-forge recipe in packaging/conda-forge/.