Skip to main content

Streaming AutoML Benchmark — fast C++ base algorithms + unified AutoML frameworks

Project description

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:

  • Fast C++ base algorithms with River-compatible Python interfaces (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: Vowpal Wabbit support (for ChaCha regressor)

pip install "samlb[vw]"

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 (4 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
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

C++ Base Algorithms

All base learners are implemented in C++ for speed and wrapped with River-compatible interfaces:

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

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

Preprocessing (via River): MinMaxScaler, StandardScaler, MaxAbsScaler, VarianceThreshold, SelectKBest

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
├── _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
│       ├── 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

Contributing

We welcome contributions! Whether you are adding a new AutoML framework, new datasets, or fixing bugs.

Development Setup

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

Running Tests

pytest tests/

Code Style

ruff check samlb/
ruff format samlb/

Adding a New Streaming AutoML Framework

This is the primary way to contribute. Every framework in SAMLB implements the same 3-method interface, making it easy to add your own.

Step 1 -- Create your framework directory

samlb/framework/classification/my_method/    # (or regression/)
    __init__.py
    model.py
    config.py        # optional: search space / hyperparameter config

Step 2 -- Implement BaseStreamFramework

# samlb/framework/classification/my_method/model.py

from __future__ import annotations
from typing import Any, Dict
from samlb.framework.base import BaseStreamFramework


class MyStreamingAutoML(BaseStreamFramework):
    """My new streaming AutoML method."""

    def __init__(self, seed: int = 42, exploration_window: int = 1000, budget: int = 10):
        self.seed = seed
        self.exploration_window = exploration_window
        self.budget = budget
        self._init_state()

    def predict_one(self, x: Dict[str, float]) -> Any:
        """
        Return prediction for one instance BEFORE learning.

        x : dict mapping feature_name -> float value
        Returns: class label (int) for classification, value (float) for regression
        """
        return self._current_model_predict(x)

    def learn_one(self, x: Dict[str, float], y: Any) -> None:
        """
        Update the model with one labelled instance.

        This is where your AutoML logic lives:
        - Update base learners
        - Evaluate pipeline candidates
        - Detect drift and adapt
        - Explore new configurations
        """
        self._update(x, y)

    def reset(self) -> None:
        """Reset to initial untrained state (called before each run)."""
        self._init_state()

Step 3 -- Register in __init__.py

# samlb/framework/classification/__init__.py

from .my_method.model import MyStreamingAutoML

__all__ = [
    "AutoStreamClassifier",
    "AutoClass",
    "EvolutionaryBaggingClassifier",
    "OAMLClassifier",
    "MyStreamingAutoML",       # <-- add here
]

Step 4 -- Use available building blocks

SAMLB provides fast C++ algorithms and River's full ecosystem as building blocks:

# C++ algorithms (fast, River-compatible)
from samlb.framework.base import (
    CppNaiveBayes,
    CppPerceptron,
    CppLogisticRegression,
    CppHoeffdingTreeClassifier,
    CppKNNClassifier,
    CppSGTClassifier,
)

# River preprocessing & drift detection
from river.preprocessing import MinMaxScaler, StandardScaler
from river.feature_selection import VarianceThreshold
from river.drift import ADWIN

# Compose a pipeline using River's | operator
pipeline = MinMaxScaler() | CppHoeffdingTreeClassifier(grace_period=200)
pipeline.predict_one(x)
pipeline.learn_one(x, y)

Step 5 -- Run it in the benchmark

from samlb.benchmark import BenchmarkSuite
from samlb.framework.classification.my_method import MyStreamingAutoML

suite = BenchmarkSuite(
    models={
        "MyMethod": MyStreamingAutoML(seed=42),
    },
    datasets=["electricity", "covertype", "insects"],
    task="classification",
    n_runs=10,
)
suite.run()
suite.print_table()

Step 6 -- Add tests

# tests/test_my_method.py

from samlb.framework.classification.my_method import MyStreamingAutoML
from samlb.datasets import stream


def test_predict_and_learn():
    model = MyStreamingAutoML(seed=42)
    for x, y in stream("electricity", task="classification", max_samples=500):
        pred = model.predict_one(x)
        model.learn_one(x, y)
    assert pred is not None


def test_reset():
    model = MyStreamingAutoML(seed=42)
    for x, y in stream("electricity", task="classification", max_samples=100):
        model.learn_one(x, y)
    model.reset()
    # Should be back to untrained state

Adding a New Dataset

  1. Prepare your data as a NumPy NPZ file with this schema:
    • X -- float32 array of shape (n_samples, n_features)
    • y -- int32 (classification) or float32 (regression) array of shape (n_samples,)
    • feature_names -- string array of shape (n_features,)
    • target_name -- string scalar
  2. Place the .npz file in samlb/datasets/classification/ or samlb/datasets/regression/
  3. It will be automatically discovered by list_datasets() and load()

PR Checklist

  • Code passes ruff check samlb/
  • Tests pass with pytest tests/
  • New framework implements all 3 methods of BaseStreamFramework
  • Include a brief description of the AutoML strategy
  • Reference any papers if applicable
  • Include benchmark results on at least 3 datasets

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.

Project 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.3.0.tar.gz (8.8 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.3.0-cp312-cp312-win_amd64.whl (255.0 kB view details)

Uploaded CPython 3.12Windows x86-64

samlb-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (257.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

samlb-0.3.0-cp312-cp312-macosx_11_0_arm64.whl (205.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

samlb-0.3.0-cp311-cp311-win_amd64.whl (253.1 kB view details)

Uploaded CPython 3.11Windows x86-64

samlb-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (257.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

samlb-0.3.0-cp311-cp311-macosx_11_0_arm64.whl (203.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

samlb-0.3.0-cp310-cp310-win_amd64.whl (252.2 kB view details)

Uploaded CPython 3.10Windows x86-64

samlb-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (255.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

samlb-0.3.0-cp310-cp310-macosx_11_0_arm64.whl (202.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

samlb-0.3.0-cp39-cp39-win_amd64.whl (252.4 kB view details)

Uploaded CPython 3.9Windows x86-64

samlb-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (255.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

samlb-0.3.0-cp39-cp39-macosx_11_0_arm64.whl (202.4 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: samlb-0.3.0.tar.gz
  • Upload date:
  • Size: 8.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for samlb-0.3.0.tar.gz
Algorithm Hash digest
SHA256 bcad90bd5ccc883605ff0357b73b88720e128e535fcf3b24cbb30eb20224c08f
MD5 cc5ab87b81a748cf9d431ff6b07488bb
BLAKE2b-256 6a599b69004c027a8679065f2da3dee42b1cccc119ef22dd587600bb73c68315

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.3.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.3.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: samlb-0.3.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 255.0 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for samlb-0.3.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e61b6848eb4eee3c36f61d73ef4a1af130a145e79e989a0786273a9bfbc0c819
MD5 9a6ef89706325691c97902b407fc898c
BLAKE2b-256 d9c20e4b54bcf5877f56ad4965e9481aa7a4c657a403f60821e9596804ecef69

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.3.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.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for samlb-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 33561b4168cad5ea889b453bb9e4b04e7dc417d114b05f8b60a4e9b9926bb7b4
MD5 775754341b03c1f2149f75f175bc9d4f
BLAKE2b-256 3096ca304df0a54e93f2251b02e9ee8bf91594fa51d072c54483542b7be91bc2

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.3.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.3.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for samlb-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e9e3c462378075b10caf87a54d237d56794876bd53d560304e867e4b694ab532
MD5 4afb6185645fdefb79dba62091194b2f
BLAKE2b-256 3f3802515a17daf1cee85afce5c7ccb9e12fdbb1c14cf51fe623b3daded92d53

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.3.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.3.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: samlb-0.3.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 253.1 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for samlb-0.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 eb6ce90f413e835b635f0eb0eb25eb4870f5aaf5240c0cebe41403d959d20e9e
MD5 a0faa2d810acaba5e06cf41b4bc55a17
BLAKE2b-256 d983cbead780aa3e0b963f243961329273f054cc6c54bcb11789cb9ea2a6f4a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.3.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.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for samlb-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 07f59ffa395ebc388a2e1b08f91f0b2519ef8993283d90846c9011a3166f30e3
MD5 a02f558395726aa10b7deb63387f3643
BLAKE2b-256 494eff038f4f63ba0a148c20d2ec9ffd44c54c8807356e28858649c8e314c574

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.3.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.3.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for samlb-0.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ed1da36d0c97f3bdef764884d270c76fd1213aa268f8f18c12c04387dd38141b
MD5 ddcadf55324e40c25a4bf127185b1132
BLAKE2b-256 8db3505d14a86633332d37339c793b04801c10e4e010568dcc5000c3dfc6cb67

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.3.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.3.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: samlb-0.3.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 252.2 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for samlb-0.3.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b6a40c87802fc1cddf74f6d2b7bf6eff147313cb35205ad03c019b4b4fa35041
MD5 10f795245a3612288c804793aec4490b
BLAKE2b-256 43d7f8e19f2ebe53e7cfa70e02be73d92b934c2253892e64e8ec33c166192146

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.3.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.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for samlb-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7999bef7b4f072607a423ef38d6ef5db6c28745a964769f808e1ed0984f14132
MD5 f50baedcfbad50de4dc3194fa9cf9721
BLAKE2b-256 97478643e5e7543014c88b543f5bc6d1a9340866681523c1778b032a27426e7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.3.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.3.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for samlb-0.3.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a3ecadfea7efb85e809bcabdbc760c980e7f4cbf04a5a1e5ce4803cf7e888dc0
MD5 de14c523f484cd902ecbf7785757f251
BLAKE2b-256 e2c75b13dd10301b2c4cc3e50773239ab5967c3fd230ca2299dfc108a3d63036

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.3.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.3.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: samlb-0.3.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 252.4 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for samlb-0.3.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 c33278a4fab4ba98a3c909a806ed6b608f4a8613ec6b7a6d3247cb4da18ad763
MD5 8f3dcdac9975ff285f3dfb30e6382393
BLAKE2b-256 533f38c18d66eaf8f78749fccc88205557169dbe5dc417e37f03714ae6d47ca4

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.3.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.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for samlb-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c7900cb3f4eaf587f2369a19dab1cdde0fa6873b0d71fb6c21b156a1bbac5477
MD5 0a930882d2811dd6718d0e9db77256be
BLAKE2b-256 b9bd7df019b9da44ce1ba343bfb102d3d09eb0be70660afbd16f36d6a4c1163b

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.3.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.3.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: samlb-0.3.0-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 202.4 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for samlb-0.3.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2a662ef2d29fd0952ae0ab519cf62509762e36470fe96e7397d0faafb4cf6a00
MD5 e86312331c370c3b6de69709d046ceb4
BLAKE2b-256 76521d73a18e39eb8b7d47c38d068b45d779a21a16c67789626fe993220decbf

See more details on using hashes here.

Provenance

The following attestation bundles were made for samlb-0.3.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.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page