Python binding (pyo3 / maturin)
A thin pyo3 wrapper over the single nirs4all-io Rust core (the facade crate) —
all RESOLVE → INFER → CONFIGURE → MATERIALIZE logic lives in Rust; Python only
adapts the results.
Layout (mixed maturin)
- Native extension
nirs4all_io._native(the pyo3 module, built fromsrc/lib.rs). - Python package
nirs4all_io(underpython/) that wraps_nativeand adds the lazySpectroDatasetadapter (_adapter.py).
numpy and pandas are wheel runtime dependencies — they back the full-array
SpectroDataset reconstruction and are not nirs4all.
Build & install
maturin develop # build + install into the active venv (dev)
maturin build # build an abi3 wheel (abi3-py311)
pip install <wheel> # install the built wheel
Requires Python ≥ 3.11. See PACKAGING.md for the abi3 wheel / nirs4all-formats
reuse details.
API
All functions are re-exported from nirs4all_io.
| Function | Signature | Returns |
|---|---|---|
infer |
infer(input, conventions=None) |
a DatasetPlan (data input only) |
to_spec |
to_spec(input, conventions=None, name=None) |
a DatasetSpec |
validate |
validate(spec) |
None; raises ValueError if invalid |
load |
load(input, *, target="assembled", conventions=None, name=None, base_dir=None, spectro_dataset_cls=None) |
summary dict, DatasetPackage, or a SpectroDataset |
to_dataset_package |
to_dataset_package(input, *, conventions=None, base_dir=None, name=None) |
a target-agnostic DatasetPackage |
describe_dataset_package |
describe_dataset_package(input, *, conventions=None, base_dir=None, name=None, canonical=False) |
package summary dict or canonical JSON |
to_spectrodataset |
to_spectrodataset(full, *, spectro_dataset_cls=None) |
a SpectroDataset |
Inputs (input) accept a str path, a pathlib.Path, a sequence of either
(file list), or a dict (a spec). validate additionally accepts a JSON string.
Typed results. infer returns a DatasetPlan and to_spec a DatasetSpec.
Both subclass dict — they stay subscriptable, JSON-serializable, and valid
inputs to validate / load — and add a readable repr plus convenience
accessors:
DatasetSpec:.name,.schema_version,.sources.DatasetPlan:.overall_score,.resolved_spec(aDatasetSpec),.recommendations,.warnings, and.decisions()(the scored structure/signal_type/task_type decisions, keyed by kind).
>>> plan = nio.infer("/data/run")
>>> plan
DatasetPlan(overall_score=0.883, structure='x_y_separate'(0.85), ...)
>>> plan.decisions().keys()
dict_keys(['structure', 'signal_type', 'task_type'])
>>> plan.resolved_spec
DatasetSpec(name='data', schema_version=1, sources=[data:mixed])
load targets:
target="assembled"→ the rounded structural summary dict (nonirs4all).target="dataset_package"/target="package"→ a target-agnosticDatasetPackagewith payload manifest hashes and an assembled view.target="spectrodataset"→ a real nirs4allSpectroDataset, built via a lazynirs4allimport inside the adapter. This is the onlynirs4alltouch-point;import nirs4all_ionever importsnirs4all(enforced bytests/test_import_boundary.py). Injectspectro_dataset_cls=to drive the builder with a double (testing without nirs4all).
Usage
from pathlib import Path
import nirs4all_io as nio
plan = nio.infer(Path("/data/run")) # DatasetPlan (typed dict)
spec = nio.to_spec("/data/run") # DatasetSpec (typed dict)
nio.validate(spec) # raises ValueError if invalid
print(spec.schema_version, len(spec.sources)) # convenience accessors
print(plan.decisions()) # scored inference decisions
summary = nio.load("/data/run") # target="assembled" (default)
package = nio.to_dataset_package("/data/run") # target-agnostic package
ds = nio.load("/data/run", target="spectrodataset") # nirs4all SpectroDataset
Test
pytest bindings/python/tests
Metadata
Release files for nirs4all-io 0.2.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nirs4all_io-0.2.9.tar.gz | 435.5 kB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nirs4all_io-0.2.9-cp311-abi3-win_amd64.whl | CPython 3.11 | abi3 | Windows x86-64 | Details |
| nirs4all_io-0.2.9-cp311-abi3-manylinux_2_34_x86_64.whl | CPython 3.11 | abi3 | Linux glibc 2.34+ x86-64 | Details |
| nirs4all_io-0.2.9-cp311-abi3-macosx_11_0_arm64.whl | CPython 3.11 | abi3 | macOS 11.0+ ARM64 | Details |
Total release size: 10.9 MB
Release files / nirs4all_io-0.2.9.tar.gz
| Download URL | nirs4all_io-0.2.9.tar.gz |
|---|---|
| Size | 435.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
11e0eff9f81eddd7a3c8a14193d35cab9f684c063682136d37d7d23d13ef5ddd
|
|
BLAKE2b-256 checksum How to use checksums |
43076e25d1699f28acb5cdf8b6092166efba34b72b136a9931971d15b1176252
|
| 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 Oct 16, 2026.
Transparency logRelease files / nirs4all_io-0.2.9-cp311-abi3-win_amd64.whl
| Download URL | nirs4all_io-0.2.9-cp311-abi3-win_amd64.whl |
|---|---|
| Size | 3.2 MB |
| Tags | CPython 3.11 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
ea95558e20c5f58f95fc23ccb49ce73d8bf3aca96bb4b2f2f206d44c12684793
|
|
BLAKE2b-256 checksum How to use checksums |
b6eccaeaff7e540eaabcb43fcd73c5a440117b22ded6d87571fd234adfa11d9b
|
| 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 Oct 16, 2026.
Transparency logRelease files / nirs4all_io-0.2.9-cp311-abi3-manylinux_2_34_x86_64.whl
| Download URL | nirs4all_io-0.2.9-cp311-abi3-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 3.9 MB |
| Tags | CPython 3.11 Linux glibc 2.34+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
2f91d700d3b2125e9e190633c26b28cd6c0c923b7363a79c72c5ac9279a24545
|
|
BLAKE2b-256 checksum How to use checksums |
1861aad79b5b8278c4ee7eff911982044113e06647a112eca29409511a733658
|
| 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 Oct 16, 2026.
Transparency logRelease files / nirs4all_io-0.2.9-cp311-abi3-macosx_11_0_arm64.whl
| Download URL | nirs4all_io-0.2.9-cp311-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.3 MB |
| Tags | CPython 3.11 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
9bf395b7ac4ac5d1d2874a274200d4ae2c7b785fcfcb07ae77f384943f600acc
|
|
BLAKE2b-256 checksum How to use checksums |
4301d76b448f6d8008c3644f21aa64d9563e27ce4e335b2a744b14203324d199
|
| 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 Oct 16, 2026.
Transparency log