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.11 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.11.1.tar.gz (5.6 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.11.1-cp314-cp314-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.14Windows x86-64

empulse-0.11.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (10.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

empulse-0.11.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (10.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

empulse-0.11.1-cp314-cp314-macosx_11_0_arm64.whl (6.4 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

empulse-0.11.1-cp314-cp314-macosx_10_13_x86_64.whl (6.4 MB view details)

Uploaded CPython 3.14macOS 10.13+ x86-64

empulse-0.11.1-cp313-cp313-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.13Windows x86-64

empulse-0.11.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (10.3 MB view details)

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

empulse-0.11.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (10.2 MB view details)

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

empulse-0.11.1-cp313-cp313-macosx_11_0_arm64.whl (6.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

empulse-0.11.1-cp313-cp313-macosx_10_13_x86_64.whl (6.4 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

empulse-0.11.1-cp312-cp312-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.12Windows x86-64

empulse-0.11.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (10.4 MB view details)

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

empulse-0.11.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (10.3 MB view details)

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

empulse-0.11.1-cp312-cp312-macosx_11_0_arm64.whl (6.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

empulse-0.11.1-cp312-cp312-macosx_10_13_x86_64.whl (6.4 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

empulse-0.11.1-cp311-cp311-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.11Windows x86-64

empulse-0.11.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (10.4 MB view details)

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

empulse-0.11.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (10.3 MB view details)

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

empulse-0.11.1-cp311-cp311-macosx_11_0_arm64.whl (6.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

empulse-0.11.1-cp311-cp311-macosx_10_9_x86_64.whl (6.4 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for empulse-0.11.1.tar.gz
Algorithm Hash digest
SHA256 8da9300e5c0335e3064f0866ca788945be11b410694441ea4a4db631687705e9
MD5 0985f2282a8231fc13ac5a5c570aa169
BLAKE2b-256 2408bca954f843d881cd9cf2f256fa64219f563ceab4156e5c2400b29698def3

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1.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.11.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: empulse-0.11.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 6.3 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for empulse-0.11.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 8649e142c3261f351d24695be83a2a66f7553ec3ef7e85c4c3ef66af2f734c16
MD5 d2eafab6bc401ce7745ae1995ceb2655
BLAKE2b-256 cb8a52c819f98c0bbff0dfde57e67a79910b41c8a34dc78ebfc1f79af1a7380a

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1-cp314-cp314-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.11.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for empulse-0.11.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a719f355b2c068feb6b19c6cb2da3bca6721010f28018660a9fabe0400fb5d28
MD5 3c4cc75924841c4d9ce35ad2d1a4ea9d
BLAKE2b-256 bc7944c979736ffc2fe28ae6820067cf87d31aac775e21b2fa2f5ab4320f1b27

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1-cp314-cp314-manylinux_2_24_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.11.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for empulse-0.11.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f04818d9e3285c7542005383b374f32b9008bfc31dc8cb18696f25442a3d1c23
MD5 09460e46b9f51750b96d9cb152a612a7
BLAKE2b-256 9ef6869d8c0c2dbd250248b7ae5eb2fc3ba0a5bf32c47632508feb07af730760

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1-cp314-cp314-manylinux_2_24_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.11.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for empulse-0.11.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cddcbb9b9c2bf40936aa9d9824aa698ffba8a7b5b85cd4e48ac52eb929a10af6
MD5 6d5cdb58ddc52da1e827541603f60fd3
BLAKE2b-256 fd878ea0a26a75235a54d2fff1fb85b3379028ca89b9650511a2abbe936c3b93

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1-cp314-cp314-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.11.1-cp314-cp314-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for empulse-0.11.1-cp314-cp314-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 084e33b6cba936852a0acea44cb73326e304f113cf83f587ac9a9a93e5fe6cc4
MD5 d9447b776523bb5155171a4f37c22050
BLAKE2b-256 ce6f5acaf201e85d9910fec606ce4483cb5fb0dc426dfa1c7d91418ba29e95ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1-cp314-cp314-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.11.1-cp313-cp313-win_amd64.whl.

File metadata

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

File hashes

Hashes for empulse-0.11.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 655f2cd0754f1a8db9d5dbb42fa276004bd0ed3d19d035276198ba1a11193bdf
MD5 dd30630f2c5c9c73d9911ced8e1478ec
BLAKE2b-256 3a019ac543992fe7de8c6169bc56ecfe4445a893c0eca74bfc0caeed72b4f892

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1-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.11.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for empulse-0.11.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a6dfe747ce56ba0d361014038d6f97e69c1ad3c3f24ce79aa6205e70b71e7b68
MD5 4288740e7c2c9dda02757c23a67b5aa5
BLAKE2b-256 10f88c1d787022f06e3858f92e5c7095338cbd7a52e6ea428b12b4f525ea7613

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1-cp313-cp313-manylinux_2_24_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.11.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for empulse-0.11.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b7f33e37352ca8a7b2012188bcac2be8d5aa655384cc8075f7724cb3aaef71ae
MD5 7ae42820d7381c736d1caddf1f52d806
BLAKE2b-256 99939ed80359e522662eb293eee6bb03775e589518c5e8a20f6593b3cfe58688

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1-cp313-cp313-manylinux_2_24_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.11.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for empulse-0.11.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 956736c95d866c99f1f1a5fc7042e80a0c0260ca56264d04a85383a5ce1e0587
MD5 d15047ff2739168cef7a15967f7fab18
BLAKE2b-256 b6516c939f1333f6cb6e53e314b15c0feed6523a8ae1dd7ab3ab3b10d87314f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1-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.11.1-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for empulse-0.11.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 8d7a521d1ba6bb03d0851fe9dbc0322dba0a7a169aa26ebee6c4284e9af2bd8e
MD5 e8f55ecac1b72474b43c7205102e7d46
BLAKE2b-256 de198708ae35cd4089a59f5318eacb6b71012d73244f2b4216d8ea439a4ffacb

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1-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.11.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: empulse-0.11.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 6.3 MB
  • 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 empulse-0.11.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 5744a1c1f0024b333750df18dbeb2fb708811874b4eaddd5544190b82a00a1ef
MD5 3e59ee1266e5c931ee44a72486a17899
BLAKE2b-256 45f663c67d5028c3075d850b586aa6d6105619b5494893b6625ec84985318d5c

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1-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.11.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for empulse-0.11.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7e4fd3bb5d9cc166c7eb73f873470b8b285b0dcb0f2f86cb7148b15c62042cb8
MD5 43edd43069498d5866a4cac769ebda97
BLAKE2b-256 1456436ddc5e966e64f5551258593f8dc0f7942b56329b9289a3143d58989ebd

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1-cp312-cp312-manylinux_2_24_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.11.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for empulse-0.11.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fd232fcf0445bea51f72c46e989e134e2d5e4d7ec70bd3a79643292c59634968
MD5 3796b01943d58a3d8521d766225bb1d5
BLAKE2b-256 c9e17a92528376be400fbb2161a8cb9b57661d6b9b72c9ee0e94d29a0bb74b11

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1-cp312-cp312-manylinux_2_24_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.11.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for empulse-0.11.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e863203a6e9391a7019f5cc9378e1c0aa0ab431833930ae75ced49b1d9e2aed6
MD5 8b69bb391eb0b2213b524dfbb418790e
BLAKE2b-256 71c3b01c71104a066b100a761613f0f52c65c9d677f6588fe75e05a8f0073481

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1-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.11.1-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for empulse-0.11.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 af837c8105da6ca4a48ecdaa32bef24076066262822045771a60c98e28ec909b
MD5 df53d75d3fdb348a543d76a8175d5915
BLAKE2b-256 6e680efdffb918a52cb378d04f840f29123d706e11b0cc61698916ee51c82b5f

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1-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.11.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: empulse-0.11.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 6.3 MB
  • 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 empulse-0.11.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2860c7b9334984e52af159384b84f96fa7475411f144b48ce669d18770830e9c
MD5 a0fcd834d4c95957ad004e9b84a4339e
BLAKE2b-256 38f134ba88dca6f6d79c43a27525e72e02ed6948c932d00a319e159be76c08c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1-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.11.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for empulse-0.11.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4306d4aa5d6a6e2a6691db3bb8f4af6906e01b9a56e244cd628978820da15b22
MD5 d94e33c1f4fb7b3a9e807c8fb3371046
BLAKE2b-256 4017faa9252f6a575c244de383596e6e6f23c908399a77e8729d8d9327c5e3f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1-cp311-cp311-manylinux_2_24_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.11.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for empulse-0.11.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e2572f7d15593b97950be6cbc940a5e6c65c0cc767f5fdf1e2e01ee2a47f5a3a
MD5 1d1fd20998f817cab30e037ce5334eda
BLAKE2b-256 0d6b1aa1a8d54cf2dd410903bc8f313110b990018041d4e895cd9bbc4c075981

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1-cp311-cp311-manylinux_2_24_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.11.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for empulse-0.11.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1e3a6af747e73421743978ede6395c677cf96955641a2d7711750cb87cab0469
MD5 9ed85a0ea065812c8237ccbc5b6879b7
BLAKE2b-256 7aae8776c8d3a7cb17aeff9a90245178838d87d05b93abcd50ee347709f8fd2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for empulse-0.11.1-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.11.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for empulse-0.11.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6f2177ca635e13608ff01727687f949eb0e27c97b4441f49b085d376f08a2402
MD5 385908632fa1b06604a125b85299cbf9
BLAKE2b-256 8effb8d7707ba94576a70255d84eae0441f41f6888b1d108c94da1808d9da298

See more details on using hashes here.

Provenance

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

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