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.
Metadata
Release files for expman-rs 1.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| expman_rs-1.3.0-cp39-abi3-win_amd64.whl | CPython 3.9 | abi3 | Windows x86-64 | Details for expman_rs-1.3.0-cp39-abi3-win_amd64.whl |
| expman_rs-1.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.9 | abi3 | Linux glibc 2.17+ x86-64 | Details for expman_rs-1.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
| expman_rs-1.3.0-cp39-abi3-macosx_11_0_arm64.whl | CPython 3.9 | abi3 | macOS 11.0+ ARM64 | Details for expman_rs-1.3.0-cp39-abi3-macosx_11_0_arm64.whl |
Total release size: 24.7 MB
Release files / expman_rs-1.3.0-cp39-abi3-win_amd64.whl
| Download URL | expman_rs-1.3.0-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 8.1 MB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
eec5f0467e8855dfec8cb9a4f55673a1ba8b3e6dbf4028aadd468d8b96852f42
|
|
BLAKE2b-256 checksum How to use checksums |
880b566e7de271213ce86e1b4a888ab905f650a64f676065bbbfe3bacf7c5a4b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}
|
Release files / expman_rs-1.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | expman_rs-1.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 8.7 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
75ca45ccbdc3e6006be924aa1f2d18cb7869ef6ff7fbb8d039bc369e8e6d0394
|
|
BLAKE2b-256 checksum How to use checksums |
1b2e7ce11b532dac89ec172f912cff316d7adc67a329bc3966d4246df6689c59
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}
|
Release files / expman_rs-1.3.0-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | expman_rs-1.3.0-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 7.8 MB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
f5928e6642f8f061467f2b9b0d6a135db2aa773968cb4686b693b7661915bb71
|
|
BLAKE2b-256 checksum How to use checksums |
389e90f0c1c9d95a6c4f1da620f0d41de5356d3c94383517f2241211c6a483df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}
|
Security for expman-rs 1.3.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.