Skip to main content

SAMLB Logo

A unified benchmark framework for evaluating AutoML systems on data streams with fast C++ base algorithms and rigorous prequential evaluation.

Python PyPI Downloads License


Why SAMLB?

Streaming AutoML methods are hard to compare fairly. Different papers use different datasets, evaluation protocols, and algorithm pools. SAMLB solves this by providing:

  • Pure C++ core — base learners, preprocessing, feature selection, metrics and drift detection are all native, with no Python ML dependency (Naive Bayes, Hoeffding Trees, KNN, Perceptron, Logistic Regression, and more)
  • Framework-agnostic benchmarking -- plug in any streaming AutoML method with just 3 methods
  • Standardized prequential evaluation (test-then-train) with windowed metric snapshots for learning curves
  • 30 curated datasets (15 classification + 15 regression) spanning real-world and synthetic drift scenarios
  • Parallel execution for large-scale experiments across multiple seeds

Installation

From PyPI

pip install samlb

From source

git clone https://github.com/TechyNilesh/samlb.git
cd samlb
pip install -e ".[dev]"

Optional backends

pip install "samlb[vw]"       # Vowpal Wabbit, for the ChaCha regressor
pip install "samlb[river]"    # River algorithms, via the River adapters
pip install "samlb[capymoa]"  # CapyMOA/MOA algorithms (needs a JVM)

Requirements: Python >= 3.9, a C++ compiler (for the native extension), CMake

Quick Start

Python API

from samlb.benchmark import BenchmarkSuite
from samlb.framework.classification.asml import AutoStreamClassifier
from samlb.framework.classification.eaml import EvolutionaryBaggingClassifier
from samlb.framework.random_search import RandomSearch
from samlb.framework.classification.shared_config import (
    SHARED_PREPROCESSORS, SHARED_CLASSIFIER_INSTANCES,
)

suite = BenchmarkSuite(
    models={
        "ASML":         AutoStreamClassifier(seed=42),
        "EvoAutoML":    EvolutionaryBaggingClassifier(seed=42),
        # RandomSearch baseline over the same shared learner pool
        "RandomSearch": RandomSearch(
            scalers=SHARED_PREPROCESSORS,
            models=SHARED_CLASSIFIER_INSTANCES,
            seed=42,
        ),
    },
    datasets=["electricity", "covertype"],
    task="classification",
    n_runs=10,
    window_size=1000,
)
suite.run()
suite.print_table()
suite.to_csv("results/classification.csv")

RandomSearch is task-agnostic: for regression, pass the regression pool (EAML_REG_PARAM_GRID["Scaler"] / ["Regressor"] from samlb.framework.regression.eaml.config) and set clip=True.

Dataset Streaming

from samlb.datasets import stream, list_datasets

# See all available datasets
print(list_datasets("classification"))
print(list_datasets("regression"))

# Stream instance by instance
for x, y in stream("electricity", task="classification"):
    pred = model.predict_one(x)
    model.learn_one(x, y)

CLI

# Full classification benchmark (5 frameworks x 15 datasets x 10 runs)
python examples/run_benchmark.py

# Custom subset
python examples/run_benchmark.py --n_runs 5 --max_samples 50000 --datasets electricity covertype

# Parallel execution across CPU cores
python examples/run_benchmark.py --n_runs 100 --parallel --cpu_utilization 0.8

# Regression benchmark (4 frameworks x 15 datasets x 10 runs)
python examples/run_regression.py
python examples/run_regression.py --n_runs 5 --datasets bike california_housing

Included Frameworks

Classification

Framework Strategy Key Features
ASML Adaptive Random Drift Nearby Search ADWIN drift detection, recency-weighted ensemble, adaptive budget
AutoClass Genetic Algorithm + Meta-Regressor Fitness-proportionate selection, ARF surrogate for HP mutation
EvoAutoML Evolutionary Bagging Population-based, tournament selection, Poisson(6) sampling
OAML Drift-triggered Random Search EDDM drift detector, warm-up phase, random search

Regression

Framework Strategy Key Features
ASML Adaptive Random Drift Nearby Search Online target normalization (Welford), prediction clipping
ChaCha FLAML AutoVW Vowpal Wabbit online HPO, progressive validation loss
EvoAutoML Evolutionary Bagging Population-based ensemble, mutation-driven search

Baseline (classification & regression)

Baseline Strategy Key Features
RandomSearch Random per-window selection Keeps the full shared learner pool warm, randomly picks one pipeline per exploration window

Model Pool Selection: Normal vs. Ensemble Baselines

Every search framework's candidate pool is swappable between two presets — "normal" (plain single models: Naive Bayes, Perceptron, Hoeffding Tree, ...) and "ensemble" (drift-adaptive ensembles: ARF, SRP, Leveraging Bagging, Hoeffding Adaptive Tree) — via get_classification_config / get_regression_config. This is useful for asking a different question than the usual "does search beat RandomSearch": does search still help once every candidate is already a strong, drift-adaptive baseline on its own?

from samlb.framework import get_classification_config
from samlb.framework.classification.asml      import AutoStreamClassifier
from samlb.framework.classification.autoclass import AutoClass
from samlb.framework.classification.eaml      import EvolutionaryBaggingClassifier
from samlb.framework.classification.oaml      import OAMLClassifier

cfg = get_classification_config(pool="ensemble")   # or pool="normal" (default)

model = AutoStreamClassifier(config_dict=cfg.asml_config_dict(), seed=42)
model = AutoClass(config_dict=cfg.autoclass_config_dict(), seed=42)
model = EvolutionaryBaggingClassifier(param_grid=cfg.eaml_param_grid(), seed=42)
model = OAMLClassifier(scalers=cfg.scalers, classifiers=cfg.classifier_instances, seed=42)

Regression works the same way, over ARFRegressor/SRPRegressor instead:

from samlb.framework import get_regression_config
from samlb.framework.regression.asml import AutoStreamRegressor
from samlb.framework.regression.eaml import EvolutionaryBaggingRegressor

cfg = get_regression_config(pool="ensemble")
model = AutoStreamRegressor(config_dict=cfg.asml_config_dict(), seed=42)
model = EvolutionaryBaggingRegressor(param_grid=cfg.eaml_param_grid(), seed=42)

Both presets live in samlb.framework.classification.shared_config (ClassificationConfig) and samlb.framework.regression.shared_config (RegressionConfig) — pass a custom instance of either dataclass to mix and match your own model pool instead of the two built-in presets.

External Algorithms (River & CapyMOA)

Benchmarks often need to place SAMLB's frameworks next to algorithms from River or CapyMOA. Two adapters make any learner from either library usable as a SAMLB model — same predict_one / learn_one / reset contract, so it drops straight into BenchmarkSuite and is scored by the same prequential evaluator.

Both libraries are optional. Nothing is imported until an adapter is constructed, and is_available() lets a suite skip a backend that is not installed rather than fail.

from river import forest, preprocessing
from samlb.benchmark import BenchmarkSuite
from samlb.framework.adapters import CapyMOAClassifier, RiverClassifier
from samlb.framework.base import ARFClassifier

models = {"SAMLB-ARF": ARFClassifier(n_models=10, seed=42)}

if RiverClassifier.is_available():
    models["River-ARF"] = RiverClassifier(
        preprocessing.StandardScaler() | forest.ARFClassifier(n_models=10, seed=42),
        name="River-ARF",
    )

if CapyMOAClassifier.is_available():
    models["MOA-ARF"] = CapyMOAClassifier(
        "AdaptiveRandomForestClassifier", ensemble_size=10, seed=42, name="MOA-ARF",
    )

BenchmarkSuite(models=models, datasets=["electricity"],
               task="classification", n_runs=10).run()

examples/run_external_baselines.py runs exactly this comparison from the command line, for either task:

python3 examples/run_external_baselines.py --task classification --n_runs 10
python3 examples/run_external_baselines.py --task regression --datasets abalone

River adapters

RiverClassifier / RiverRegressor take a River estimator or a pipeline ending in one. The object you pass is a prototype: it is cloned before every run and never trained in place, so one adapter can be reused across seeds and datasets. Pass a zero-argument callable instead when an estimator cannot be cloned.

from samlb.framework.adapters import RiverRegressor

RiverRegressor(preprocessing.StandardScaler() | linear_model.LinearRegression())
RiverRegressor(lambda: forest.ARFRegressor(seed=1), name="River-ARF")

River classifiers return None until they have seen a label; the evaluator counts those instances but does not score them, exactly as it does for OAML's warm-up.

CapyMOA adapters

CapyMOAClassifier / CapyMOARegressor take a CapyMOA class, or its name in capymoa.classifier / capymoa.regressor, plus any learner keyword arguments. A class rather than an instance, because a CapyMOA learner is bound to a MOA Schema at construction and the schema is not known until the stream starts. The adapter derives it from the first instance, builds the learner then, and converts each {feature: value} dict to the dense array MOA expects.

from samlb.framework.adapters import CapyMOAClassifier, CapyMOARegressor

CapyMOAClassifier("HoeffdingTree", grace_period=50, seed=42)
CapyMOAClassifier("AdaptiveRandomForestClassifier", ensemble_size=10)
CapyMOARegressor("AdaptiveRandomForestRegressor", ensemble_size=10)

MOA works in class indices, so the adapter keeps the label mapping and hands back the original SAMLB labels. Labels are discovered as they arrive, against max_classes reserved nominal slots (100 by default; only MOA's per-class memory scales with it). Pass classes=[...] when the label set is known up front — the schema is then exact and an unexpected label raises instead of being silently absorbed.

C++ Base Algorithms

Every per-instance component is implemented in C++ and exposed through thin Python wrappers:

Classification: Naive Bayes, Perceptron, Logistic Regression, Passive Aggressive, Softmax Regression, KNN, Hoeffding Tree, EFDT, SGT

Ensembles: ARF (Gomes et al. 2017, classification & regression), SRP (Gomes et al. 2019, classification & regression), Leveraging Bagging (Bifet et al. 2010), Hoeffding Adaptive Tree (Bifet & Gavaldà 2009, whole-tree simplification — see HoeffdingAdaptiveTreeClassifier docstring)

Regression: Linear Regression, Bayesian Linear Regression, Passive Aggressive, Hoeffding Tree, KNN

Preprocessing: MinMaxScaler, StandardScaler, MaxAbsScaler, VarianceThreshold, SelectKBest (Pearson)

Metrics: Accuracy, MacroF1, MacroPrecision, MacroRecall, MAE, RMSE, R²

Drift detection: ADWIN, EDDM

Pipelines are fused: scaler | selector | model is executed as a single C++ object, so an instance crosses the Python/C++ boundary once per learn_one / predict_one rather than once per stage.

Evaluation Methodology

SAMLB uses prequential evaluation (test-then-train):

  1. For each instance in the stream:
    • Predict -- get the model's prediction before seeing the label
    • Evaluate -- score the prediction against the true label
    • Learn -- update the model with the labelled instance
  2. Metrics are captured at configurable window intervals for learning curve analysis
  3. Runtime is sampled per-instance for performance profiling

Classification metrics: Accuracy, Macro-F1, Macro-Precision, Macro-Recall

Regression metrics: MAE, RMSE, R^2

Datasets

Classification (15 datasets -- 2.5M+ total instances)

Dataset Samples Features Classes Type Description
adult 48,842 14 4 Real Income prediction (Census)
covertype 100,000 54 7 Real Forest cover type (cartographic)
credit_card 284,807 30 2 Real Credit card fraud detection
electricity 45,312 8 2 Real Electricity price direction (NSW, Australia)
insects 52,848 33 6 Real Insect species with concept drift
new_airlines 539,383 7 2 Real Flight delay prediction
nomao 34,465 118 2 Real Nomao place deduplication
poker_hand 1,025,009 10 10 Real Poker hand classification
shuttle 58,000 9 7 Real NASA Space Shuttle radiator
vehicle_sensIT 98,528 100 3 Real Vehicle type from seismic sensors
movingRBF 200,000 10 5 Synthetic Moving radial basis functions
moving_squares 200,000 2 4 Synthetic Moving class boundaries
sea_high_abrupt_drift 500,000 3 2 Synthetic SEA generator with abrupt drift
synth_RandomRBFDrift 100,000 4 4 Synthetic RBF generator with gradual drift
synth_agrawal 100,000 9 2 Synthetic Agrawal generator

Regression (15 datasets -- 1M+ total instances)

Dataset Samples Features Type Description
ailerons 13,750 40 Real Aircraft control surface deflection
bike 17,379 12 Real Bike sharing hourly demand
california_housing 20,640 8 Real California median house values
cps88wages 28,155 6 Real Wage prediction (CPS 1988)
diamonds 53,940 9 Real Diamond price prediction
elevators 16,599 18 Real Aircraft elevator control
fifa 19,178 28 Real FIFA player overall rating
House8L 22,784 8 Real House price (8-feature variant)
kings_county 21,613 21 Real King County house sales price
MetroTraffic 48,204 7 Real Interstate traffic volume (Minneapolis)
superconductivity 21,263 81 Real Superconductor critical temperature
wave_energy 72,000 48 Real Wave energy converter power output
fried 40,768 10 Synthetic Friedman function
FriedmanGra 100,000 10 Synthetic Friedman with gradual drift
hyperA 500,000 10 Synthetic Hyperplane with drift

Output Formats

results/
  classification/
    summary.json                  # Flat JSON: one row per (framework x dataset x run)
    <dataset>/<framework>/
      run_00.json                 # Raw per-run JSON with full learning curves
      ...
      run_09.json
      aggregate.json              # Aggregated mean +/- std across 10 runs
  regression/
    summary.json
    <dataset>/<framework>/
      run_00.json
      ...
      run_09.json
      aggregate.json

The released repository includes the raw JSON results used for the paper under results/classification/ and results/regression/.

Project Structure

.
├── pyproject.toml             # Package metadata & build config
├── CMakeLists.txt             # C++ build configuration
├── LICENSE                    # MIT License
├── README.md                  # This file
├── CONTRIBUTING.md            # Contributor guide
├── wiki/                      # Wiki page sources (published to the GitHub wiki)
├── scripts/                   # publish_wiki.sh
├── _cpp/                      # C++ source (9 classifiers, 5 regressors)
│   ├── classification/
│   ├── regression/
│   ├── core/                  # Shared headers
│   └── bindings/              # PyBind11 module
├── samlb/                     # Python package
│   ├── __init__.py            # Version: 0.3.0
│   ├── algorithms/            # C++ algorithm Python bindings
│   ├── benchmark/             # BenchmarkSuite orchestrator
│   ├── evaluation/            # PrequentialEvaluator, metrics, results
│   ├── datasets/              # 30 datasets (15 clf + 15 reg NPZ files)
│   └── framework/             # AutoML framework implementations
│       ├── base/              # BaseStreamFramework + C++ wrappers
│       ├── adapters/          # River & CapyMOA adapters (optional backends)
│       ├── random_search.py   # RandomSearch baseline (task-agnostic)
│       ├── classification/    # ASML, AutoClass, EvoAutoML, OAML
│       └── regression/        # ASML, ChaCha, EvoAutoML
├── results/                   # Raw paper results as JSON files
│   ├── classification/        # Classification run_*.json + aggregate.json
│   └── regression/            # Regression run_*.json + aggregate.json
├── tests/                     # Test suite
└── examples/                  # Benchmark runner scripts
    ├── run_benchmark.py       # Classification benchmark CLI
    ├── run_regression.py      # Regression benchmark CLI
    └── run_external_baselines.py  # River / CapyMOA comparison CLI

Documentation

Full usage documentation lives in the SAMLB wiki:

Page What it covers
Installation Install, optional backends, build troubleshooting
Quick Start First benchmark, the model contract, CLI
Benchmark API BenchmarkSuite, evaluator, RunResult, output formats
Datasets The 30 bundled streams, and adding your own
Frameworks The bundled AutoML methods and their configuration
Base Algorithms C++ learners, fused pipelines, metrics, drift detectors
External Algorithms Benchmarking River and CapyMOA learners
Extending SAMLB Writing a framework, adapter, dataset or C++ learner
FAQ Common questions and failure modes

The pages are version-controlled in wiki/ — edit them there and open a PR; ./scripts/publish_wiki.sh pushes them to the wiki.


Contributing

Contributions are welcome — a new streaming AutoML framework, a dataset, an adapter for another library, a bug fix, or a documentation correction.

git clone https://github.com/TechyNilesh/samlb.git
cd samlb
pip install -e ".[dev]"
pytest tests/
ruff check samlb/

Adding a framework means implementing three methods:

from samlb.framework.base import BaseStreamFramework

class MyStreamingAutoML(BaseStreamFramework):
    def predict_one(self, x): ...   # predict BEFORE learning
    def learn_one(self, x, y): ...  # your AutoML logic lives here
    def reset(self): ...            # back to untrained; called before every run

CONTRIBUTING.md has the full walkthrough — development setup, rebuilding the C++ extension, the step-by-step guide to adding a framework, dataset, adapter or C++ learner, and the PR checklist.


Citation

If you use SAMLB in your research, please cite:

@inproceedings{verma2026samlb,
  title     = {SAMLB: A Streaming AutoML Benchmark},
  author    = {Verma, Nilesh and Bifet, Albert and Pfahringer, Bernhard and Bahri, Maroua},
  booktitle = {Proceedings of the International Conference on Automated Machine Learning (AutoML)},
  year      = {2026},
  url       = {https://github.com/TechyNilesh/samlb}
}

License

MIT License. See LICENSE for details.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

samlb-0.5.0.tar.gz (9.0 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

samlb-0.5.0-cp312-cp312-win_amd64.whl (351.3 kB view details)

Uploaded CPython 3.12Windows x86-64

samlb-0.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (414.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

samlb-0.5.0-cp312-cp312-macosx_11_0_arm64.whl (338.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

samlb-0.5.0-cp311-cp311-win_amd64.whl (349.6 kB view details)

Uploaded CPython 3.11Windows x86-64

samlb-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (414.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

samlb-0.5.0-cp311-cp311-macosx_11_0_arm64.whl (335.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

samlb-0.5.0-cp310-cp310-win_amd64.whl (348.4 kB view details)

Uploaded CPython 3.10Windows x86-64

samlb-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (413.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

samlb-0.5.0-cp310-cp310-macosx_11_0_arm64.whl (333.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

samlb-0.5.0-cp39-cp39-win_amd64.whl (348.5 kB view details)

Uploaded CPython 3.9Windows x86-64

samlb-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (413.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

samlb-0.5.0-cp39-cp39-macosx_11_0_arm64.whl (333.7 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file samlb-0.5.0.tar.gz.

File metadata

  • Download URL: samlb-0.5.0.tar.gz
  • Upload date:
  • Size: 9.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for samlb-0.5.0.tar.gz
Algorithm Hash digest
SHA256 7fc7e10aed891e87aff2f43d008d8a0f371498bf1f6e34b303a58114ad081168
MD5 00d4a8f34fc3cf08e5c5f9eba49321b1
BLAKE2b-256 419f7797556311da5092ce68ff7b5884f84718871795444df4e0ff0fa4b7bf5a

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.5.0.tar.gz:

Publisher: publish.yml on TechyNilesh/samlb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file samlb-0.5.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: samlb-0.5.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 351.3 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for samlb-0.5.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 73662cfb73d74d9a67bc461d6e281576c348c8e5936c9384b46877c128fe119a
MD5 f5751b7fe94fceaf9710b9b05730ed29
BLAKE2b-256 3601467e134ba448892fb24f249119fe75f2e31f5cd74b1c34c5e6d728798fee

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.5.0-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on TechyNilesh/samlb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file samlb-0.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for samlb-0.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7b6242ee2fdf40b1b556f1d4ce12a61dedc532f8ad32dc063ce24217e09e3cdd
MD5 60d61ffdbcf3da56d7ca9b107974b66a
BLAKE2b-256 106c03b3f95c54163f1fde924d3530aaf80603ad0707abbdb5641fba993a3daa

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on TechyNilesh/samlb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file samlb-0.5.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for samlb-0.5.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ddff13ebf78045a45e444783a9484b2a31f1bf501bc402174f01988434ccb1ad
MD5 d4bc179ef0c8b9f1c0ae5098f79123ce
BLAKE2b-256 e604b1e415530d25b90a6fc7e3c61a89b194ab5a8938ec7c2db68b5f72f260c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.5.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on TechyNilesh/samlb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file samlb-0.5.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: samlb-0.5.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 349.6 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for samlb-0.5.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 329c04e021dcfc6236cf49fce21d1b7ed581629714ad0779e39ebdc343a36050
MD5 3107ae5fad6bce9c831d93f32b58b252
BLAKE2b-256 e6bcc8e746342cc2f5ea64748e4e6057bfb01be124a6c4826f1cc9d7feb7624d

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.5.0-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on TechyNilesh/samlb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file samlb-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for samlb-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fa2e954f14aade4213037177e9e9e24b326a7bd6e67986297f8bf83e7414f22a
MD5 fd0a96616bdc5003ddb65d780c888737
BLAKE2b-256 5dba7080e82c043357c8576b06a2505b2df092d8c41aed76b9f63e62678bb5da

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on TechyNilesh/samlb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file samlb-0.5.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for samlb-0.5.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 435f7cc96a94a99cb998d48f9512d6ee43028bff47fd6b3e1ece44ed633300f4
MD5 fb31c5989cf3a01a887f20008ebd9350
BLAKE2b-256 c433fefad43115517d601bd45e722de2587dc59b7d795a4e881f17efc0904727

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.5.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on TechyNilesh/samlb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file samlb-0.5.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: samlb-0.5.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 348.4 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for samlb-0.5.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 581e7a26a2b76b71861e0a42b700454ac85975ece6f05732be51608bfdb8587c
MD5 ad38563858bb40a0f8650ec9418d6ddf
BLAKE2b-256 8377ec1db6fbfe7b2310493a6b90a9a335154b257787014aa7e94b995b5d3fe7

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.5.0-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on TechyNilesh/samlb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file samlb-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for samlb-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4e65768dafc4cfdd556ade0e2ad3290f84168d174009993c8ffc56491bdd55f5
MD5 5172e0cdd9cacb1284cbe49920c1e8f3
BLAKE2b-256 a0e8a9359eb2bbffde0292be3992066a1636d4df4c82ec4bdd6ce23fa070f5fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on TechyNilesh/samlb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file samlb-0.5.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for samlb-0.5.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5e9fdf173430e60fb63b256af0dccfdabe1721174fd5d70507b9cf2dd5e3ce50
MD5 ef61d122370c23cf93906ab3776c5be8
BLAKE2b-256 cb9381657654440b0f2a9118626d292ca8a9727047d945128d26a9b0a5aac848

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.5.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on TechyNilesh/samlb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file samlb-0.5.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: samlb-0.5.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 348.5 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for samlb-0.5.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 97760748a2e016aa5b8282896e7227c2f1c73a65bceb0f3e52f6e3b4d775d402
MD5 a6e8d8ad22235c3fc07b8c422eb5a8bc
BLAKE2b-256 eb7327aa5fd731ca15b1f40c6868c3fcb4f48375d52beb5382ef5335a068de59

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.5.0-cp39-cp39-win_amd64.whl:

Publisher: publish.yml on TechyNilesh/samlb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file samlb-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for samlb-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b44a4866c271b866ee2549bc14e69a53c5ec450f28d1260e6c500642928a1ab8
MD5 a05ff03cc57f81eca792ef1790d61ace
BLAKE2b-256 19f9a632610b1834871bb0f0de2b3a3fe7c92cda08bb881345a40c8ccf363e65

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on TechyNilesh/samlb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file samlb-0.5.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: samlb-0.5.0-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 333.7 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for samlb-0.5.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c8031f49e434957b82b69e8701e2fbb24d4905bba15ca26565e4f200a523f5dd
MD5 24b549b3385ad629505ee0f73bfc0b7e
BLAKE2b-256 1d5507af63cd6d955af6adce2644bc0a89cb616e94d3da1a233e9cbd2888a79e

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.5.0-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: publish.yml on TechyNilesh/samlb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.6.0

13 files

This release

0.5.0 This release

13 files

0.4.0

13 files

0.3.0

13 files

0.2.0

13 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page