Variopinta
Variopinta is a CPU image-augmentation compiler: define a pipeline in Python, then compile it for optimized native execution in Rust, with reproducible randomness and an inspectable execution plan.
Variopinta is pre-alpha. The public API may change between 0.y.0 releases;
patch releases preserve documented signatures and data contracts unless a
correctness or security fix requires otherwise.
Why Variopinta?
- One pipeline, from input to output. Decode, augment, and deliver arrays, tensors, or encoded images in one native call. Compilation plans buffer reuse, copy avoidance, and output layout; each target is transformed once for all its outputs. See pipelines and outputs.
- Reproduce results regardless of worker order. Use a pipeline seed and a
per-call
keyto replay an augmentation independently of call order or worker assignment, within the same release and execution environment. See control randomness. - See what the compiler actually does.
explain()exposes the execution plan, including pixel passes, buffers, copies, and layout changes, so you can inspect which optimizations your pipeline uses. See execution-plan inspection.
Install
Variopinta supports CPython 3.10–3.13 on 64-bit x86 Linux with glibc 2.34 or newer and on macOS 11 or newer running natively on Apple Silicon.
python -m pip install variopinta
PyTorch is optional and needed only for ReturnTensor outputs. Platform
details and source-build instructions are in
Getting started.
Quick start
import numpy as np
import variopinta as vp
pipeline = vp.Pipeline(
[
vp.RandomCrop(256, 256),
vp.Resize(224, 224),
vp.HorizontalFlip(p=0.5),
vp.Normalize(),
],
seed=42,
).compile()
image = np.random.default_rng(0).integers(0, 256, (320, 320, 3), dtype=np.uint8)
output = pipeline(image, key=0)
replayed = pipeline(image, key=0)
assert np.array_equal(output, replayed)
print(output.shape, output.dtype) # (224, 224, 3) float32
print(pipeline.explain())
Pipeline is the semantic reference executor. .compile() selects the
optimized execution plan while keeping the same call signature and keyed
result.
Keep the pipeline, input, seed, and key fixed to replay a result. Exact replay is not guaranteed across releases, builds, or platforms.
Documentation
-
Grayscale Fashion-MNIST training notebook: download grayscale images, preview augmentations, and train a small PyTorch classifier on CPU or CUDA.
-
Visual Imagenette training notebook: download and run a standalone tutorial with augmentation visualizations, keyed replay, and PyTorch Lightning training on a CUDA GPU with multiple workers.
-
Visual Oxford-IIIT Pet segmentation notebook: augment images and masks together, replay paired outputs, and train a segmentation model with PyTorch Lightning and persistent workers on a CUDA GPU.
Current scope includes images and semantic masks with NumPy, encoded-buffer, and local-path inputs. It does not include boxes, keypoints, GPU execution, native batches, or Python callbacks inside a pipeline.
Project information
Performance depends on the pipeline, image sizes, output formats, and hardware. The benchmark harness and recorded evidence support comparisons for specific tested configurations.
Variopinta is licensed under the Apache License 2.0. Native-wheel attributions are in THIRD_PARTY_NOTICES.
Variopinta is the feminine form of the Spanish variopinto: “varied in color or appearance,” from Italian variopinto, “varied” and “painted.” — RAE
Metadata
Release files for variopinta 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| variopinta-0.6.0.tar.gz | 126.3 kB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| variopinta-0.6.0-cp310-abi3-manylinux_2_34_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.34+ x86-64 | Details |
| variopinta-0.6.0-cp310-abi3-macosx_11_0_arm64.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64 | Details |
Total release size: 3.1 MB
Release files / variopinta-0.6.0.tar.gz
| Download URL | variopinta-0.6.0.tar.gz |
|---|---|
| Size | 126.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d1d0690f21b26b8d4bbc1b4708a3b9b20ef8500ddb2ae2bfe8a9cb6ca6e09691
|
|
BLAKE2b-256 checksum How to use checksums |
903c3d0b897a92d6ca7703738c5c8cc175fbd8732ee3b3a18b702163495e679f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.
Transparency logRelease files / variopinta-0.6.0-cp310-abi3-manylinux_2_34_x86_64.whl
| Download URL | variopinta-0.6.0-cp310-abi3-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.10 Linux glibc 2.34+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
f20c2afcc0c496fbb4f537ada91be63230c52a7b500cc242d30a438c72c32069
|
|
BLAKE2b-256 checksum How to use checksums |
6e2578fddf27a672e6766b99c91e15b41b3e04689af0aa6a367897963ec548f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.
Transparency logRelease files / variopinta-0.6.0-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | variopinta-0.6.0-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
6846105599031ea9fa4049f965171d1b7e27e2c5d57234444955c0718e2c2751
|
|
BLAKE2b-256 checksum How to use checksums |
ab0ad097e23090379cff217e4c92161bc4ca4f6c2dab1020738505d5b23e48e9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.
Transparency log