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

suite = BenchmarkSuite(
    models={
        "ASML":      AutoStreamClassifier(seed=42),
        "EvoAutoML": EvolutionaryBaggingClassifier(seed=42),
    },
    datasets=["electricity", "covertype"],
    task="classification",
    n_runs=10,
    window_size=1000,
)
suite.run()
suite.print_table()
suite.to_csv("results/classification.csv")

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

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.1.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
│       ├── 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:

@software{samlb2024,
  title  = {SAMLB: Streaming AutoML Benchmark},
  author = {Anonymous Authors},
  year   = {2026},
  url    = {Anonymous repository}
}

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.2.0.tar.gz (7.2 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.2.0-cp312-cp312-win_amd64.whl (235.4 kB view details)

Uploaded CPython 3.12Windows x86-64

samlb-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (254.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

samlb-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (203.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

samlb-0.2.0-cp311-cp311-win_amd64.whl (235.3 kB view details)

Uploaded CPython 3.11Windows x86-64

samlb-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (254.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

samlb-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (201.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

samlb-0.2.0-cp310-cp310-win_amd64.whl (234.5 kB view details)

Uploaded CPython 3.10Windows x86-64

samlb-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (253.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

samlb-0.2.0-cp310-cp310-macosx_11_0_arm64.whl (200.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

samlb-0.2.0-cp39-cp39-win_amd64.whl (242.2 kB view details)

Uploaded CPython 3.9Windows x86-64

samlb-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (253.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

samlb-0.2.0-cp39-cp39-macosx_11_0_arm64.whl (200.5 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for samlb-0.2.0.tar.gz
Algorithm Hash digest
SHA256 53362574659a175de76aa61270831a6da95f847da03f68796668ced0e0a62bb2
MD5 46b13f78b5750694e1368664ff278e2b
BLAKE2b-256 a2e2cce29c59ab5474b1cea9bbcb37b3df18b213a163d9ffd7ffcdc3d11cdfe1

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: samlb-0.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 235.4 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.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 da4e85a7319058e4846493bf47c00e554b7f40a950987c9f00e86506b098e168
MD5 a99b8d9c8784307d9f6a06235f31ad1b
BLAKE2b-256 02589b05d83691787eb199df5caec006a3629acec2597fe20fe38edb52493208

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for samlb-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 687d1d6d68644fa3563e454733b0a21831a12fdf83bb1b6aade2337c805e917f
MD5 1fe29ba17ec3b38d416117334f94bc35
BLAKE2b-256 357e49200c4cea472cb20dcc40b4edc56d03261b29c71a86e5bf4fcdc46a8012

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for samlb-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 75b958522b8829324da888f99d119171fa7115d66ecbd8e03303d84a3d5ee6b1
MD5 42848bd93a966f5309288abf515d08a5
BLAKE2b-256 d6931d8ed6ce5456bd9a38f322b807b1db33148c6fdf2a61b862f12249c325e2

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: samlb-0.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 235.3 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.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 cdaa582af25ec6e6264c1ea44efd73ef60f12228c70e5c72f503ca0843b643ec
MD5 a35dc14bf56b4afff14ac59874301a56
BLAKE2b-256 b7376823834e561eb30d060a197942118f2b4c5a7ce6fb9951a1b0310239da23

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for samlb-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 14ed4427f671c4322501a3ea5dd72c7029df098123f824aa439df2615a912381
MD5 36a5537f6ce05b923d6c2f80b9be685f
BLAKE2b-256 12d17690b9b50891e41e0dda602644beb67529c30fe52a19c4785d389c506f98

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for samlb-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 934960cd5a4bac810a74bee48202054a4fdca2f4d1814d40a7f09b850f9cfde8
MD5 71339c0e9a21b6df3363b45e2ea0498e
BLAKE2b-256 b5308e341b7f1470dc079a982eca164f20a14b4603ae6d60988eaa6474d05806

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: samlb-0.2.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 234.5 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.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 324f034c26cfb181922a6ff19934e44dd3f8a85c2dfba579f33b585489519d46
MD5 e83aa8619e79a0641e4f4cafe626ffc9
BLAKE2b-256 37d344c6aaf755fda688912231252a47b5e503cb727343a1d6e16c817a9ba23d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for samlb-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1ff306eef4fc7ff900e95a49ff4afd560fa4625482d78c00981ff3e12ac925d4
MD5 ef567a67c1e29a505c9dedda680af798
BLAKE2b-256 859f368b2f743e8bdb412f6fb1236fa9dc1667e089e1a1f123c32a276dfcefc5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for samlb-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 07acc759c02cdcd7f60a92084e41ba55d2c3842baeb2bd5e545ca3de940f7b45
MD5 3f0e384691d470afb0efc1a9e5e15d3c
BLAKE2b-256 59e84d01cf8408568811c087657aaa484f7439aa2782e8247409f3bc95974e2c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: samlb-0.2.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 242.2 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.2.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 f025a145e398ce27ae9818e0c34a5776fc2845a31fea2c6bd531d329823dc58e
MD5 836f61b74db5fb621d754dbd8163d11a
BLAKE2b-256 cf4331cc4585a86dd9a9fb456bad0373628f9b75aec0e11f2abefd12c6ac3959

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for samlb-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e2ccdadefe3e7635f79be0d557ea75ce6434daf6d8722b0473d30b664028b200
MD5 8e5cb5ca4dafada1f5d86cc423faa4f4
BLAKE2b-256 aa2ad6f469bed2966fa9d8011fea0747badef9684ffd816769c3c39ec0476b2f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: samlb-0.2.0-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 200.5 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.2.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 153006bd7618ff99c7ef7cc88a381ad67750c5b12bbf49f3c7531ac6a640ec99
MD5 54125bfea370db82e5794eda24f3b169
BLAKE2b-256 614086ff2e0741fc23367c8ce294421a666ae92eef1e358077460fd93e4ac8dd

See more details on using hashes here.

Provenance

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