Shinrin
Shinrin (森林, "forest" in Japanese) is a scikit-learn-compatible library for decision tree and forest models and tabular neural networks, with Rust and Mojo bindings for performance and ONNX export support.
Since skope-rules and scikit-garden are no longer actively maintained, this project aims to bring them together with extensions for tree models — including SHAP explanations, ONNX export, and benchmarking utilities.
Shinrin also includes TabM — a parameter-efficient ensemble MLP for tabular data (ICLR 2025) that trains an ensemble of k members jointly through BatchEnsemble-style multiplicative adapters, matching ensemble accuracy at a fraction of the training cost. Training runs entirely on NumPy or Mojo kernels — PyTorch is not required.
Features
- Mondrian Trees & Forests — Full scikit-learn API compatibility
- CORELS Optimal Rule Lists — Certifiably optimal rule lists for binary data (
CorelsClassifier), vendored from pycorels with bundled mini-GMP (no system dependency) - GOSDT Optimal Sparse Decision Trees — Globally optimized sparse decision trees with reference-ensemble guesses (
GOSDTClassifier,ThresholdGuessBinarizer), vendored from gosdt-guesses; runs single-threaded with no TBB/GMP system dependencies - Tabular Neural Networks — scikit-learn compatible
MLPClassifier/MLPRegressorandTabMClassifier/TabMRegressorwith optional PLE embeddings and Mojo-accelerated training - TabM Neural Networks — Parameter-efficient ensemble MLPs for tabular data with BatchEnsemble-style multiplicative adapters (ICLR 2025)
- TabICL — Tabular in-context learning foundation model (torch/NumPy/Mojo backends)
- TreeSHAP Explanations —
TreeExplainerfor single trees and forests withexplanation()visualization helper - ONNX Export — Export trained trees, forests, and TabM models to ONNX format for deployment
- Benchmarking — Built-in utilities for training speed, prediction speed, and model size
- Rust & Mojo Bindings — Performance-critical code in Rust via PyO3 and Mojo kernels
Quick Start
Tree Models
from shinrin import MondrianTreeRegressor, MondrianForestClassifier
from shinrin import TreeExplainer, explanation
# Train a model
X, y = ...
tree = MondrianTreeRegressor(max_depth=8, random_state=0)
tree.fit(X, y)
predictions = tree.predict(X)
# Get SHAP explanations
explainer = TreeExplainer(tree)
shap_values = explainer.shap_values(X)
# Or use the convenience function:
# explanation(tree, X) # opens matplotlib visualization
TabM Neural Networks
from shinrin import TabMClassifier, TabMRegressor
# Train a TabM model
model = TabMRegressor(
hidden_layer_sizes=(256,),
k=32, # ensemble size
random_state=0,
)
model.fit(X, y)
predictions = model.predict(X)
# Classification
clf = TabMClassifier(k=32, max_iter=200)
clf.fit(X, y)
CORELS Optimal Rule Lists
from shinrin import CorelsClassifier
# Binary features, binary classification — provably optimal rule list
clf = CorelsClassifier(c=0.01, verbosity=["rulelist"])
clf.fit(X, y, features=["feature1", "feature2"])
print(clf.rl()) # human-readable optimal rule list
predictions = clf.predict(X)
GOSDT Optimal Sparse Decision Trees
from shinrin import GOSDTClassifier, ThresholdGuessBinarizer
# Binarize continuous features via gradient-boosting threshold guesses
X_bin = ThresholdGuessBinarizer().fit_transform(X, y)
# Optionally guide the search with a blackbox reference ensemble
clf = GOSDTClassifier(regularization=0.05, depth_budget=4)
clf.fit(X_bin, y) # or: clf.fit(X_bin, y, y_ref=y_ref)
print(str(clf.trees_[0])) # globally optimal tree
accuracy = clf.score(X_bin, y)
Native Backends
Both Mondrian trees and TabM support interchangeable native backends:
- Rust (default) — PyO3/maturin extension for tree models
- Mojo — Experimental Mojo port for TabM training kernels
Select the backend with environment variables:
SHINRIN_BACKEND=mojo python your_script.py # TabM Mojo backend
SHINRIN_TABM_BACKEND=mojo python your_script.py # TabM-specific backend
Benchmarks
See scripts/benchmarks/BENCHMARK.md for detailed benchmark results comparing Shinrin against LightGBM and scikit-learn SGD.
See scripts/benchmarks/TABM_BENCHMARK.md for TabM backend comparisons (NumPy vs Mojo vs PyTorch).
See scripts/benchmarks/GOSDT_BENCHMARK.md for GOSDT vs scikit-learn CART comparisons (just bench-gosdt).
To run benchmarks yourself: python scripts/benchmarks/bench_baselines.py (or just bench-backends for Rust vs Mojo backend comparisons, just bench-tabm for TabM backends).
Installation
pip install shinrin
Optional dependencies:
pip install shinrin[sklearn] # scikit-learn for benchmarks and SHAP plotting
pip install shinrin[onnx] # ONNX export
pip install shinrin[mojo] # TabM Mojo kernels (`just build-tabm-mojo`)
pip install shinrin[full] # All optional dependencies
Native backends
The tree/forest internals ship with two interchangeable native backends:
rust(default) – the original pyo3/maturin extension (shinrin._native)mojo– an experimental Mojo port (shinrin._native_mojo)
Select the backend with the SHINRIN_BACKEND environment variable:
SHINRIN_BACKEND=mojo python your_script.py
The default remains rust; the Mojo backend is opt-in while Mojo is in alpha.
Both backends produce identical trees for identical random states (verified by
tests/test_mojo_parity.py). Build the Mojo extension with just build-mojo
(requires the mojo package, e.g. pip install 'shinrin[mojo]').
API Overview
Models
Tree Models
| Model | Description |
|---|---|
MondrianTreeRegressor |
Single Mondrian tree for regression |
MondrianTreeClassifier |
Single Mondrian tree for classification |
MondrianForestRegressor |
Ensemble of Mondrian trees for regression |
MondrianForestClassifier |
Ensemble of Mondrian trees for classification |
TabMClassifier / TabMRegressor |
Ensemble MLP trainers (NumPy / Mojo backends) |
TabICLClassifier / TabICLRegressor |
Tabular in-context learning estimators (TabICLv2) |
TabM Neural Networks
| Model | Description |
|---|---|
TabMRegressor |
TabM ensemble regressor (drop-in for MLPRegressor) |
TabMClassifier |
TabM ensemble classifier (drop-in for MLPClassifier) |
TabM parameters:
| Parameter | Default | Description |
|---|---|---|
hidden_layer_sizes |
(256,) |
Backbone block widths |
k |
32 |
Number of ensemble members |
solver |
'adam' |
'adam', 'sgd', or 'lbfgs' |
arch_type |
'tabm' |
'tabm', 'tabm-mini', or 'tabm-packed' |
dropout |
0.1 |
Backbone dropout rate |
use_embeddings |
True |
Piecewise-linear + linear embeddings for numeric features |
n_bins |
64 |
Quantile bins per numeric feature |
d_embedding |
8 |
Embedding width per numeric feature |
categorical_indices |
None |
Columns to treat as categorical |
categorical_cardinality_threshold |
32 |
Max unique values for auto-detecting categoricals |
Explanations (Tree Models)
from shinrin import TreeExplainer, explanation
explainer = TreeExplainer(model)
shap_values = explainer.shap_values(X)
expected_value = explainer.expected_value
# Quick visualization (requires matplotlib)
explanation(model, X)
ONNX Export
from shinrin.onnx import to_onnx, save_onnx
# Export to ONNX protobuf
onnx_model = to_onnx(model, X)
# Save to file
save_onnx(model, "model.onnx", X)
Works for tree/forest models and TabM. TabM exports a self-contained graph (preprocessing, embeddings, ensemble backbone, averaged head) that runs on raw feature vectors with any batch size:
import onnxruntime as ort
from shinrin import TabMRegressor
from shinrin.onnx import save_onnx
model = TabMRegressor(hidden_layer_sizes=(256,), k=32, random_state=0)
model.fit(X_train, y_train)
save_onnx(model, "tabm.onnx", X_train)
session = ort.InferenceSession("tabm.onnx")
predictions = session.run(None, {"X": X_test.astype(np.float32)})[0]
Benchmarking
from shinrin.benchmark import (
benchmark_training,
benchmark_prediction,
benchmark_model_size,
full_benchmark,
print_benchmark_report,
)
models = {
"shinrin_tree": MondrianTreeRegressor(max_depth=8),
"shinrin_forest": MondrianForestRegressor(n_estimators=10, max_depth=8),
"shinrin_tabm": TabMRegressor(hidden_layer_sizes=(256,), k=32),
}
results = full_benchmark(models, X_train, y_train, X_test)
print_benchmark_report(results)
Test Coverage
All vendored tests are included and passing — these are ported from scikit-garden and skope-rules to verify compatibility. Run pytest --cov=src/shinrin tests/ for a full coverage report.
TabM parity tests (tests/test_tabm_parity.py) verify that the Mojo kernels produce identical results to the NumPy reference implementation. TabM functional tests (tests/test_tabm.py) cover training, prediction, and determinism. TabM ONNX export tests (tests/test_tabm_onnx.py) verify onnxruntime inference parity for all architectures, tasks, and preprocessing configurations.
License
MIT
Metadata
Release files for shinrin 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 29.0 MB
Release files / shinrin-0.2.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | shinrin-0.2.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Linux glibc 2.17+ x86-64 PyPy 3.11 PyPy 3.11 7.3 |
|
SHA-256 checksum How to use checksums |
4311451f50099739056beddfc88bafcdcb3f13eba63f159d37c776258717ab71
|
|
BLAKE2b-256 checksum How to use checksums |
1076a00661600a2286a71f2066b3cf41ccff213ddfbfe163438b654934cef576
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | shinrin-0.2.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Linux glibc 2.17+ ARM64 PyPy 3.11 PyPy 3.11 7.3 |
|
SHA-256 checksum How to use checksums |
2f55010fc032286e84cbaa38b95f075103080b06f7e952ee2e311c2b73786e09
|
|
BLAKE2b-256 checksum How to use checksums |
1275c2ab7bf7cdec63152110f29b8c75f12c36c3fe93887d9267fcb854eae65f
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | shinrin-0.2.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
6974c75d44327bb41d60f37e3b39b474d62e6e8e04bcc45b7131abd3fb2fa350
|
|
BLAKE2b-256 checksum How to use checksums |
8dc6ad3124d7145606b0f5631727e346a932e95f676fa25e98d5b8100740312a
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | shinrin-0.2.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
73dc8f60789abae77221bed5d6926f2d42f72a51cb3868466fa438d398b6482a
|
|
BLAKE2b-256 checksum How to use checksums |
068bbc7524eb68ab2ba9139e21b91f90155e9293b4451c5c076590f23fa89d58
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp314-cp314-win_amd64.whl
| Download URL | shinrin-0.2.0-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 960.1 kB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f9d5a4ffefa098420c25746dab06effbae94a4df957f881dc4a48a203cd49481
|
|
BLAKE2b-256 checksum How to use checksums |
a8af617cdddb274bbb7a90e3c7c7894653f4d6a021da6c47f29cd01c0b0e6250
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | shinrin-0.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
b23925cb92bfa1aca1f200f5b59af700ad3ed572e39eb06f88c2f5fbf95f0398
|
|
BLAKE2b-256 checksum How to use checksums |
3d1460e0426b98067d08cae9cd4f62fc663cad04458f7f1f4c48f0f26b69aa5f
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | shinrin-0.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
f2bd3284918c92973069ac9ab5550d5274cd97e2ba92b7066c42c8966506b5f9
|
|
BLAKE2b-256 checksum How to use checksums |
f5b60b28e980c9e2b6d42fe739b4f3aa4d807b7781c2ddd4771d110ad4ff4145
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | shinrin-0.2.0-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c17178fa2d6308c46c92d250b6d914367b0d9d0e66207691323e299568ea3f2a
|
|
BLAKE2b-256 checksum How to use checksums |
331ac07a52452d90f57a2c15dba287443948a70455421dd09490a4ef887e5401
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp314-cp314-macosx_10_12_x86_64.whl
| Download URL | shinrin-0.2.0-cp314-cp314-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.14 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
8df078c5f6167ac3f50f1cb657080dd4e5946c6f25410912d0b72999e87f25f7
|
|
BLAKE2b-256 checksum How to use checksums |
656b2f29315c16e8a9b08e762464658277f041eafc65158db37e8cd9cba3105d
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp313-cp313-win_amd64.whl
| Download URL | shinrin-0.2.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 960.1 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
5ec0b3cbef8ca5e7bb06d68b71dde9d74348bd06063ea916590ba47e96150b30
|
|
BLAKE2b-256 checksum How to use checksums |
9d0a22277a95a811372ce7db1326af12acc0705ceb90f1f856ae66830ca6cd7f
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | shinrin-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
030d1474a1c56ced8e4870a94b8197e0e16c8c68b6d1e41bdfbfec9d155a972a
|
|
BLAKE2b-256 checksum How to use checksums |
fb4e2b12616b86560832cd74b4e2a794825510d41ed66c044810a4b7bd506f47
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | shinrin-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
f37f4588e4982fed4823118e37a4d5aede4b9f53a6603e110137319326fb8e3a
|
|
BLAKE2b-256 checksum How to use checksums |
494a7c1002e9cbe7e118684dd5935066dd08c9cee6cdb81f909c3bb524a0049d
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | shinrin-0.2.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
ab536c60cf177d31dcce407bfc67cf4e988afe6e125fd1ef5e4e17c9c236a704
|
|
BLAKE2b-256 checksum How to use checksums |
eb33d2d69fc92ef97a66ad2c3dc9b63442e6dc46a6c101d9f7206926beeb750c
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl
| Download URL | shinrin-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.13 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
ce47232954ee204202b89bc297366ce0d8f7effab92a265f976acf886de7a0c7
|
|
BLAKE2b-256 checksum How to use checksums |
f24853ca10cd571faa89cf7416f0e9a799c0142cb9880647a89bdefc91e61a3b
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp312-cp312-win_amd64.whl
| Download URL | shinrin-0.2.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 960.6 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
608634419e4a978dcbc7630d2d7458348bc6fa6623745053689efb7b0620e72e
|
|
BLAKE2b-256 checksum How to use checksums |
6c9311851c60dc97be6b9a988a5aaabbb689c0d7a1817459c28fa25bfa1c665c
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | shinrin-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
fdd1c89a0ee5cffde8c9ff8a491d5bfda9adf3ba3762677ad1268947d40bf1ca
|
|
BLAKE2b-256 checksum How to use checksums |
272a1ae9bb0329eee91a1207434bceb9c4df38f089b2cc0011711edfa58d4cef
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | shinrin-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
d21fa3107ff5e89aac402204faeaf6ed63e86183a272cf62fb75fa9285393f2e
|
|
BLAKE2b-256 checksum How to use checksums |
5b26261296aa074c8971404ec06d3b434edc35635829ffff626bee937c0d730f
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | shinrin-0.2.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
40ea91f1da3f398166f559508f694e5088392d14072c512534c9ee194a46982f
|
|
BLAKE2b-256 checksum How to use checksums |
83fe67ca5c631fd057886acdd62ecd100b9d2c8b2c8047d9a0b66a4d42b439a5
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl
| Download URL | shinrin-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.12 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
ce0409cfd4fb6a9a2c465f61b323367bee6384f944617488eee0a50040d86ad3
|
|
BLAKE2b-256 checksum How to use checksums |
3d70fa4368e441b529490d14b5667a538810fdc5e7216127a709deaf77e0bbd8
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp311-cp311-win_amd64.whl
| Download URL | shinrin-0.2.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 959.7 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
bf7536d623acbabb616b94215e482c5a34a1f74f771d46804a4f09049ed6fa92
|
|
BLAKE2b-256 checksum How to use checksums |
4376126044af97c8bebd0ce79555c2316e7c615bf76cadf55a9d8d71e0bf999b
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | shinrin-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
1c895f93e663c5efdec8d52528a28a49273fa536c762c53e6c91d59dfe973e81
|
|
BLAKE2b-256 checksum How to use checksums |
2b5a10a0cdc8f7b73c018c6b1fe9e53c4e98da7b14b5860b607a1824c1b13063
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | shinrin-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
dfeef00f9bd2ab68dd2f6d9711bd193beee6dfedf139526df40116899d052068
|
|
BLAKE2b-256 checksum How to use checksums |
431d796cd00fbdb258bb8bc304f6da95d03d7558b38aa035e788ae8c7ba5086f
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | shinrin-0.2.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c2e06a15cca3ad4e493b7b41f27c32bac2d439c6cfe89b6fabe06099e1c18dc7
|
|
BLAKE2b-256 checksum How to use checksums |
f63b27baf78cc0d8ce3f162bc3433f426f5506c352ac468b15177b675d4ee61b
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl
| Download URL | shinrin-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.11 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
d05c175bcd8db26389e891b2ad62b104b77f172af87db71ae17349201a03aee4
|
|
BLAKE2b-256 checksum How to use checksums |
590a8c54d9c57f03afa602422af608595954af9c836ac8eea1242d07089ef781
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp310-cp310-win_amd64.whl
| Download URL | shinrin-0.2.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 959.6 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
a6be5ae33daf6b6914881860a4ae5808a903e7b6d29462f63c5b2c235ae0970c
|
|
BLAKE2b-256 checksum How to use checksums |
4603563a152aab2a019988a47b6768b7955698183e6b375991f966cccbc436b7
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | shinrin-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
9fe23b9b3087a296e0b4728f388ba9792b81ce25ea058e68864004ced9da4506
|
|
BLAKE2b-256 checksum How to use checksums |
a200e46b279d6b53bb6a335bb64fe34bdd59b425a8877589afdc68a663d27ee5
|
| 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 Aug 23, 2026.
Transparency logRelease files / shinrin-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | shinrin-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
71ccfe8af7f6bbedf9d1736a0f1858da291d8338fadb9660c8643d03e48aa104
|
|
BLAKE2b-256 checksum How to use checksums |
c916274f4d83917dd096ac56c9f9dfcdeded3e1c991885de3f14c328dbb2b263
|
| 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 Aug 23, 2026.
Transparency logSecurity for shinrin 0.2.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.
Full provenance
All 27 files in this release have been uploaded with provenance metadata.
Attestation for shinrin-0.2.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
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 Aug 23, 2026.
Transparency logA 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.