Skip to main content

Value-driven and cost-sensitive tools for scikit-learn

Project description

PyPI Downloads Python Version GitHub license Tests Docs Ruff DOI

Empulse

Empulse Logo

Empulse is a package aimed to enable value-driven and cost-sensitive analysis in Python. The package implements popular value-driven and cost-sensitive metrics and algorithms in accordance to sci-kit learn conventions. This allows the measures to seamlessly integrate into existing ML workflows.

Installation

Empulse requires python 3.10 or higher.

Install empulse via pip with

pip install empulse

Documentation

You can find the documentation here.

Features

Take the tour

Ready to use out of the box with scikit-learn

All components of the package are designed to work seamlessly with scikit-learn.

Models are implemented as scikit-learn estimators and can be used anywhere a scikit-learn estimator can be used.

Pipelines

from empulse.models import CSLogitClassifier
from sklearn.datasets import make_classification
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

X, y = make_classification()
pipeline = Pipeline([
    ("scaler", StandardScaler()),
    ("model", CSLogitClassifier())
])
pipeline.fit(X, y, model__fp_cost=10, model__fn_cost=1)

Cross-validation

from sklearn.model_selection import cross_val_score

cross_val_score(
    pipeline, 
    X, 
    y, 
    scoring="roc_auc", 
    params={"model__fp_cost": 10, "model__fn_cost": 1}
)

Grid search

from sklearn.model_selection import GridSearchCV

param_grid = {"model__C": [0.1, 1, 10]}
grid_search = GridSearchCV(pipeline, param_grid, scoring="roc_auc")
grid_search.fit(X, y, model__fp_cost=10, model__fn_cost=1)

All metrics can easily be converted as scikit-learn scorers and can be used in the same way as any other scikit-learn scorer.

from empulse.metrics import expected_cost_loss
from sklearn.metrics import make_scorer

scorer = make_scorer(
    expected_cost_loss, 
    response_method="predict_proba", 
    greater_is_better=False,
    fp_cost=10,
    fn_cost=1
)

cross_val_score(
    pipeline, 
    X, 
    y, 
    scoring=scorer, 
    params={"model__fp_cost": 10, "model__fn_cost": 1}
)

Use-case specific profit and cost metrics

Empulse offers a wide range of profit and cost metrics that are tailored to specific use cases such as:

For other use cases, the package provides generic implementations for:

Build your own profit and cost metrics

The Metric class allows you to easily build your own profit and cost metrics.

First, you start to define the cost matrix through the CostMatrix class.

A tiny example: suppose you’re building a spam filter.

  • False positive (legit email marked as spam) costs 5, because you might miss something important
  • False negative (spam slips through) costs 1, because it wastes your time
from empulse.metrics import CostMatrix

cost_matrix = CostMatrix().add_fp_cost('fp').add_fn_cost('fn')
cost_matrix.alias({'opportunity_cost': 'fp', 'time_wasted_cost': 'fn'})

Now, you can define your own profit and cost metrics using different strategies.

from empulse.metrics import Metric, Cost, Savings, MaxProfit

expected_cost_loss = Metric(cost_matrix=cost_matrix, strategy=Cost()) 
expected_savings_score = Metric(cost_matrix=cost_matrix, strategy=Savings())
expected_max_profit_score = Metric(cost_matrix=cost_matrix, strategy=MaxProfit())

expected_cost_loss(
    y, pipeline.predict_proba(X)[:, 1], opportunity_cost=5, time_wasted_cost=1
)

Your custom metric can also be optimized by the models:

from empulse.models import CSBoostClassifier

csboost = CSBoostClassifier(loss=expected_cost_loss)
csboost.fit(X, y, opportunity_cost=5, time_wasted_cost=1)

Read more in the User Guide.

Various profit-driven and cost-sensitive models

Empulse provides a range of profit-driven and cost-sensitive models such as:

Each classifier tries to mimic the behaviour of sklearn's classifiers with a cost-sensitive twist.

from empulse.models import CSTreeClassifier
from sklearn.tree import DecisionTreeClassifier

cstree = CSTreeClassifier(max_depth=2, min_samples_leaf=1, random_state=42)
dtree = DecisionTreeClassifier(max_depth=2, min_samples_leaf=1, random_state=42)

cstree.fit(X, y, fp_cost=10, fn_cost=1)
dtree.fit(X, y)

Easy passing of instance-dependent costs

Instance-dependent costs can easily be passed to the models through metadata routing.

For instance, the instance-dependent costs are passed dynamically to each fold of the cross-validation through requesting the costs in the set_fit_request method of the model and the set_score_request method of the scorer.

import numpy as np
from empulse.models import CSTreeClassifier
from empulse.metrics import expected_cost_loss
from sklearn import set_config
from sklearn.datasets import make_classification
from sklearn.model_selection import cross_val_score
from sklearn.metrics import make_scorer
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

set_config(enable_metadata_routing=True)

X, y = make_classification()
fp_cost = np.random.rand(y.size)
fn_cost = np.random.rand(y.size)

pipeline = Pipeline([
    ("scale", StandardScaler()),
    ("model", CSTreeClassifier().set_fit_request(fp_cost=True, fn_cost=True))
])

scorer = make_scorer(
    expected_cost_loss,
    response_method="predict_proba",
    greater_is_better=False,
).set_score_request(fp_cost=True, fn_cost=True)

cross_val_score(pipeline, X, y, scoring=scorer, params={"fp_cost": fp_cost, "fn_cost": fn_cost})

Cost-aware resampling and relabeling

Empulse uses the imbalanced-learn package to provide cost-aware resampling and relabeling techniques:

from empulse.samplers import CostSensitiveSampler
from sklearn.datasets import make_classification

X, y = make_classification()
sampler = CostSensitiveSampler()
X_resampled, y_resampled = sampler.fit_resample(X, y, fp_cost=2, fn_cost=1)

They can be used in an imbalanced-learn pipeline:

import numpy as np
from empulse.samplers import CostSensitiveSampler
from imblearn.pipeline import Pipeline
from sklearn import set_config
from sklearn.datasets import make_classification
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

set_config(enable_metadata_routing=True)

X, y = make_classification()
fp_cost = np.random.rand(y.size)
fn_cost = np.random.rand(y.size)
pipeline = Pipeline([
    ("scaler", StandardScaler()),
    ("sampler", CostSensitiveSampler().set_fit_resample_request(fp_cost=True, fn_cost=True)),
    ("model", LogisticRegression())
])

pipeline.fit(X, y, fp_cost=fp_cost, fn_cost=fn_cost)

Find the optimal decision threshold

Empulse provides the CSThresholdClassifier which allows you to find the optimal decision threshold for a given cost matrix to minimize the expected cost loss.

The meta-estimator changes the predict method of the base estimator to predict the class with the lowest expected cost.

from empulse.models import CSThresholdClassifier
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression

X, y = make_classification()
model = CSThresholdClassifier(estimator=LogisticRegression())
model.fit(X, y)
model.predict(X, fp_cost=2, fn_cost=1)

Metrics like the maximum profit score conveniently return the optimal target threshold. For example, the Expected Maximum Profit measure for customer churn (EMPC) tells you what fraction of the customer base should be targeted to maximize profit.

from empulse.metrics import empc
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression

X, y = make_classification()
model = LogisticRegression()
predictions = model.fit(X, y).predict_proba(X)[:, 1]

score, threshold = empc(y, predictions, clv=50)

This score can then be converted to a decision threshold by using the classification_threshold function.

from empulse.metrics import classification_threshold

decision_threshold = classification_threshold(y, predictions, customer_threshold=threshold)

This can then be combined with sci-kit learn's FixedThresholdClassifier to create a model that predicts the class with the highest expected profit.

from sklearn.model_selection import FixedThresholdClassifier

model = FixedThresholdClassifier(estimator=model, threshold=decision_threshold)
model.predict(X)

Easy access to real-world datasets for benchmarking

Empulse provides easy access to real-world datasets for benchmarking cost-sensitive models.

Each dataset returns the features, the target, and the instance-dependent costs, ready to use in a cost-sensitive model.

from empulse.datasets import load_give_me_some_credit
from empulse.models import CSLogitClassifier
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

X, y, tp_cost, fp_cost, tn_cost, fn_cost = load_give_me_some_credit(return_X_y_costs=True)

pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('model', CSLogitClassifier())
])
pipeline.fit(
    X, 
    y, 
    model__tp_cost=tp_cost, 
    model__fp_cost=fp_cost, 
    model__tn_cost=tn_cost, 
    model__fn_cost=fn_cost
)

Download files

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

Source Distribution

empulse-0.10.4.tar.gz (4.4 MB view details)

Uploaded Source

Built Distributions

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

empulse-0.10.4-cp313-cp313-win_amd64.whl (4.7 MB view details)

Uploaded CPython 3.13Windows x86-64

empulse-0.10.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (5.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

empulse-0.10.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

empulse-0.10.4-cp313-cp313-macosx_11_0_arm64.whl (4.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

empulse-0.10.4-cp313-cp313-macosx_10_13_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

empulse-0.10.4-cp312-cp312-win_amd64.whl (4.7 MB view details)

Uploaded CPython 3.12Windows x86-64

empulse-0.10.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (5.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

empulse-0.10.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

empulse-0.10.4-cp312-cp312-macosx_11_0_arm64.whl (4.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

empulse-0.10.4-cp312-cp312-macosx_10_13_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

empulse-0.10.4-cp311-cp311-win_amd64.whl (4.7 MB view details)

Uploaded CPython 3.11Windows x86-64

empulse-0.10.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (5.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

empulse-0.10.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (5.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

empulse-0.10.4-cp311-cp311-macosx_11_0_arm64.whl (4.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

empulse-0.10.4-cp311-cp311-macosx_10_9_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

empulse-0.10.4-cp310-cp310-win_amd64.whl (4.7 MB view details)

Uploaded CPython 3.10Windows x86-64

empulse-0.10.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

empulse-0.10.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

empulse-0.10.4-cp310-cp310-macosx_11_0_arm64.whl (4.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

empulse-0.10.4-cp310-cp310-macosx_10_9_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file empulse-0.10.4.tar.gz.

File metadata

  • Download URL: empulse-0.10.4.tar.gz
  • Upload date:
  • Size: 4.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for empulse-0.10.4.tar.gz
Algorithm Hash digest
SHA256 f589adc216dcf223327ad5c1f7cb675e0755d08c9e9069ce5950de65c998ba6f
MD5 9bcdf90cd4e3278d50f53249450249d4
BLAKE2b-256 6a013c2b0f8bbad73a966112921c9e48a13f31e434f57b66a5c3aad775c6a17b

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4.tar.gz:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: empulse-0.10.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 4.7 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for empulse-0.10.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d4eabd1503a254830d85ba8faa283229a5a0a67faca140acb4ee9c837871596b
MD5 084de05aa0efa1005eaceb26c8178268
BLAKE2b-256 461cbe602b34b09e5bc588291b9b1cb6eaa8a353e5bb41de7c13d8bd226b25eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp313-cp313-win_amd64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for empulse-0.10.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 09b4c01300c613d86dc635a53c82de2633bbf1fe204ed05d40e06c23f2211050
MD5 744beeb04df850e65624a40aeaaa4733
BLAKE2b-256 d8defd424f891a60d051d8029ab06096b48a1f4cf97c2f73a45aa6b383c23c69

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for empulse-0.10.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2e7acadeddb0fd02d769fb6d00417af4175c6e705974dc602b31d5a1ec226696
MD5 39e374b0f7b3d41d5533c2d33cf54405
BLAKE2b-256 006fd26809524131fab5b3636eb12c4f7d61249e68aebc1c2a4cc281f021bce6

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for empulse-0.10.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e8ad4dd39d8c76fac6a22433bd7568f067280dc2e6e8a09dec0a2dee1a31972e
MD5 cf060e069c0d93fbb6de78787c98c2f4
BLAKE2b-256 8f6c546c7eca789f87dc17963eced0dbba7ac86a5e81aed88b90cb85063298dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for empulse-0.10.4-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 f79807b14ed9186de87f88bbdaf6a7505908173b5586db7e64c447139243d39f
MD5 6a74b1a0a7a2092698261f118109c0b7
BLAKE2b-256 4cb1fb87d13cdd55104b9efa585d4a31ce844d1fa3b5cd94eab1e6dda77ca157

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: empulse-0.10.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 4.7 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for empulse-0.10.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9668acd467a9c2901b1595a6645d6ffedfcfb87ce4ddd603e6f2d4e74cf2ad20
MD5 c3e42df52badefb17ac6cd497df92de1
BLAKE2b-256 6bdbf0a0f5c89baf7dbd958dc9f2cc79ec1b88c56dff399374875df9f5d6866b

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp312-cp312-win_amd64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for empulse-0.10.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c08be46262d308aae28cd0b47fb3d87b3ce0c238d25ab460be0df86b179e769e
MD5 5938cf1b1ba72fd3dbf0be8791ea3e70
BLAKE2b-256 3431b3c02fd7270ddccf05a3a74b875354546baff8ffc2127d208c1a98ca9840

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for empulse-0.10.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 68cb9844e048bdb7d4745716e8d726f7fb531fc6895ec7f8f94c0a5b5ede79c5
MD5 0b475fb6fa543bd8cdce875f126a3769
BLAKE2b-256 a6ab3cf1139230be9682dbfdcbf6e7aebf487bb2ded144f43f750941dcfadf4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for empulse-0.10.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1c91cc6b12dc31773799e0341d4727cf2400e0251ffcbee3db131cde0c79dcdb
MD5 269465a5fa511d851101a9f8c0d974e1
BLAKE2b-256 950f2b9aeb32a3bfbe9713620c3e50ce7325e6abd748e8e3ceeef2cc3f97dab1

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for empulse-0.10.4-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 e377e317ec895db86bcbd467c27966ecfea7132a1b97b5632e38c5726377547c
MD5 caa80adeef0c13ee8a8eb01441eece08
BLAKE2b-256 07601c178b542b5d8ede51447260f044cc727a5379721626d27925c952de4fd1

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: empulse-0.10.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 4.7 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for empulse-0.10.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4fe3215736472285980df239d2547cd7159aab9a37cbc5180d43e4b93aabc6f5
MD5 b8e9ab590387da90dd9767233bdb2317
BLAKE2b-256 ff6c8de1656e46428926d45fdd3f92cfd774f702c9205a1977a16aad662a7fbd

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp311-cp311-win_amd64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for empulse-0.10.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 82f9e23b63266d0aba77e7ac31e1a5ab6e7d6349605cc3f08134fdc6f4c19841
MD5 84945e9e02b7d79149687d4ba5710edd
BLAKE2b-256 6edc93022c36ab9b79fdd51ef2622d3c083be5f0453a6b4c191a8ea61af4cc1f

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for empulse-0.10.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6731a0221969861022b03ab59bfeb50a7481acc8ab859c5aac5e47c4770096fc
MD5 b07a6a8712e900b38159e4b0dd432cfd
BLAKE2b-256 a15786468d5816b6cc54414cc9807cb17d0594d6379aad15a9506aa16637e8fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for empulse-0.10.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d093b65d9128cb14516001d2736c3ba580167066f04f755ad8d65b593abcbdaa
MD5 8db967a3ec732c439b9d621739cdaf50
BLAKE2b-256 4d283fd85217175bac460d219f0a5cd27b7d9fd4dd7851da5f3e87fd0f0be489

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for empulse-0.10.4-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9c1905010b90eae2df9e577d5357946fbd0742ca8a22192040f3d1d2460c8410
MD5 5d3fe403e6fdabdcde9e50ba0cc7d989
BLAKE2b-256 c65cf1a680c73edb12bd00bedca651e0a3f2582d5eb32b43ed2c24aab32a43cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: empulse-0.10.4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 4.7 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for empulse-0.10.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a3239d066a7321400635792ff2033bfa553a549179415a87ba1b20ca1eae5236
MD5 4e7e0a8dd0ff7f1efb2e40036e425ac0
BLAKE2b-256 01294da29c55daa008df119f52ed8b50de93e5958b11d69b8ccaa4e78902ed76

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp310-cp310-win_amd64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for empulse-0.10.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 74d7a906cc44bf70dd363ae04bc9af7b098f19eeb8c85fe12445909b780035eb
MD5 e1da31114cdce728be4d677c1f428ad3
BLAKE2b-256 7e142aad76f72797255b209af343b3107e845983474a7fb9d9450a1021ff2a17

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for empulse-0.10.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4cd75afa40174d2056ae307d58198d6e86399408a1df63841f3b7517161359d4
MD5 48818f0f06d293f919ac69a3fd2f06a8
BLAKE2b-256 0a909a194f059abd18d3d4b267cb2908cb432088f69acfb179bf0a8510561e9f

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for empulse-0.10.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 81a0d641765a8be0ec03d940b5e9012db9a26fe67cbfc076014034b4275f8df7
MD5 db8cbd69e9a10af6e77ef44e8ca1af66
BLAKE2b-256 38ef4ba5ce6e4e5280ae7420d20dcda7f542e06929c54e3b0041a2fa7b34ca61

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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

File details

Details for the file empulse-0.10.4-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for empulse-0.10.4-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7a81caaac70c855dbaba1a5a3747bcb4d59a7db888342c6215be8621f883e6de
MD5 0da4d3cb8eb20421c6078c4a9c2bffae
BLAKE2b-256 dc6ab5c587ede350cba0cd099cbf11c0292c61e34f998f16987a3017beeb4553

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.10.4-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: release.yml on ShimantoRahman/empulse

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