High-performance experiment manager with Rust backend
Project description
ExpMan Python Wrapper
The expman Python package provides a seamless, idiomatic interface for logging experiments in Python projects while leveraging the high-performance Rust core.
Key Features
- Idiomatic Python: Uses context managers and singletons for clean integration into scripts and notebooks.
- Fast Logging: Native calls to the Rust engine ensure sub-microsecond logging latency.
- Automatic Cleanup: Ensures all file handles are closed and data is flushed upon script completion.
- TensorBoard Drop-in: Replace
from torch.utils.tensorboard import SummaryWriterwithfrom expman import SummaryWriter.
Installation
pip install expman-rs
Basic Usage
Global Singleton
import expman as exp
exp.init("my_model")
exp.log_vector({"loss": 0.42})
Context Manager
from expman import Experiment
with Experiment("my_model") as exp:
exp.log_vector({"loss": 0.42})
TensorBoard SummaryWriter (Drop-in Replacement)
Replace your existing TensorBoard import with expman's drop-in replacement. All metrics are stored in expman's high-performance Parquet format instead of TensorBoard event files.
# Before:
# from torch.utils.tensorboard import SummaryWriter
# After:
from expman import SummaryWriter
writer = SummaryWriter(log_dir="runs/my_experiment")
for epoch in range(100):
loss = 1.0 / (epoch + 1)
writer.add_scalar("train/loss", loss, epoch)
writer.add_scalars("metrics", {"accuracy": 0.95, "f1": 0.92}, 100)
writer.add_hparams({"lr": 0.001, "batch_size": 32}, {"hparam/accuracy": 0.95})
writer.close()
Supported methods:
| Method | Status | Notes |
|---|---|---|
add_scalar |
✅ Full | Logs as expman vector metric |
add_scalars |
✅ Full | Auto-prefixes tags with main_tag |
add_text |
✅ Full | Logged as info message |
add_hparams |
✅ Full | Logs params + initial metrics |
flush |
✅ No-op | Expman auto-flushes asynchronously |
close |
✅ Full | Graceful shutdown |
add_histogram |
⚠️ Stub | No-op, won't raise errors |
add_image/images |
⚠️ Stub | No-op, won't raise errors |
add_figure |
⚠️ Stub | No-op, won't raise errors |
add_video |
⚠️ Stub | No-op, won't raise errors |
add_audio |
⚠️ Stub | No-op, won't raise errors |
add_graph |
⚠️ Stub | No-op, won't raise errors |
add_embedding |
⚠️ Stub | No-op, won't raise errors |
add_pr_curve |
⚠️ Stub | No-op, won't raise errors |
add_custom_scalars |
⚠️ Stub | No-op, won't raise errors |
add_mesh |
⚠️ Stub | No-op, won't raise errors |
Internal Architecture
The wrapper uses PyO3 to create native Python extension modules that link directly to the Rust expman library.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
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 expman_rs-0.5.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: expman_rs-0.5.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 7.7 MB
- Tags: PyPy, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7394d264950f25cce7006fe8a7139e5986c1137cd0542b0e7bc4f70b10823847
|
|
| MD5 |
86192ababd74472501bdb625eabff7a5
|
|
| BLAKE2b-256 |
46137d8fd6ce50e30d96e1877af232eca5e159d482cc813605ae034f2c57a6f9
|
File details
Details for the file expman_rs-0.5.3-cp39-abi3-win_amd64.whl.
File metadata
- Download URL: expman_rs-0.5.3-cp39-abi3-win_amd64.whl
- Upload date:
- Size: 7.0 MB
- Tags: CPython 3.9+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d484ded05c7087cd0a06c34a5646a26e27179b93b9561c1cf6d3b2b39406905d
|
|
| MD5 |
aa466adecd6f39f85d7fa1c4290c183d
|
|
| BLAKE2b-256 |
0d295cb7705bb4297f5afec3f782a449a870c4b17f63e10bbaa462ae9eb24d54
|
File details
Details for the file expman_rs-0.5.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: expman_rs-0.5.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 7.7 MB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
40fb5fcd33568c177ad8af9e9906901a25f1ff7b825994b087ca8dfcf51d14ce
|
|
| MD5 |
378671b2f047d371c2c05fd7af4466d0
|
|
| BLAKE2b-256 |
19973cd04082a1f480e7eb1e5a5d1b28372617cdc05a2010992059cc72bcfe3f
|
File details
Details for the file expman_rs-0.5.3-cp39-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: expman_rs-0.5.3-cp39-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 6.8 MB
- Tags: CPython 3.9+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a85254fce7e16dbc5c24d8ec2c8e7eba9e984b2a088b3ae9be40b7e342aa3569
|
|
| MD5 |
db1e9a289e5c08c8954311e485b0e6f3
|
|
| BLAKE2b-256 |
2077c67da4a39b19fb5d8d49a30700f15638046e58b0105742318bc632c5ab07
|