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.0.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.0-cp314-cp314-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.14Windows x86-64

empulse-0.11.0-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.0-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.0-cp314-cp314-macosx_11_0_arm64.whl (6.4 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.14macOS 10.13+ x86-64

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

Uploaded CPython 3.13Windows x86-64

empulse-0.11.0-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.0-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.0-cp313-cp313-macosx_11_0_arm64.whl (6.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.13+ x86-64

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

Uploaded CPython 3.12Windows x86-64

empulse-0.11.0-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.0-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.0-cp312-cp312-macosx_11_0_arm64.whl (6.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.13+ x86-64

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

Uploaded CPython 3.11Windows x86-64

empulse-0.11.0-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.0-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.0-cp311-cp311-macosx_11_0_arm64.whl (6.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

empulse-0.11.0-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.0.tar.gz.

File metadata

  • Download URL: empulse-0.11.0.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.0.tar.gz
Algorithm Hash digest
SHA256 fc2d4305352bb0e6bb57edd3f0246d3bdfdee7426e5ccb7296b96fa029ed0223
MD5 6e58dc60d9c75b14d7c2cbd4fb30b079
BLAKE2b-256 7c3eb0754e6718bd4e0d7f2fc7e26bf6a92bdf1287ab444aaf249b31be08de72

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: empulse-0.11.0-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.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 23eff8fd4e90e72a560f020768fc0ac268cf59f3dcaddd4a8135fe73e64c213a
MD5 921f8e2d80d6f7a3fb50fe01705bae8e
BLAKE2b-256 6f18c8b6e13a15f5dad601f9b555ccabff74fc80225a0c4973000d815081c6b9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for empulse-0.11.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4945337460abcabe8610d60e09251f63460e7014d16aaeef4d5a5b6d6c10032c
MD5 e838dbb531cf21ccc6a00abd91c96edd
BLAKE2b-256 484c126ca497aaa11f5358047b1bef08f8e048e88ac1aa1507c36f47b2343a7d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for empulse-0.11.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b1040410f93e33af3f0d1a8d27cf7fd60b3bafba6b8de9f8fdb2ee6eca10934a
MD5 69f315d7a4e2478eac6c3227ef851427
BLAKE2b-256 c2c139fb07d4598fd68781fa4d6ea9dfc4bfed7e8e51a8921043f0e6aeff91b6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for empulse-0.11.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4c1383d029191b0ca7a8e2777db6344ffaef9fb3669107589c78cacdbabf1bce
MD5 fc78ed7c486200d2e6b12b4cd274ad46
BLAKE2b-256 b3ace27a46c92d1660a1d03e512c378a4a3af9dc5d40a1defe24085c0a43e688

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for empulse-0.11.0-cp314-cp314-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 25fae7c7c2bd053a9318017b9057b8488525043535e8536a6c8cbd2f43f5c2eb
MD5 035c0cc7e70ad7f29f49cb24b4310d68
BLAKE2b-256 ea5ee2e97275561c9ec94601631ac5c0d6320d3a789b6b7e22912411404c8971

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: empulse-0.11.0-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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 988dbd722489614282f2ecde9498613175af7938c667e1f913cc29ba3e1e1813
MD5 bb0061dd440ba9ea94eb948ac7fdd8b3
BLAKE2b-256 5b183f3fdd5f3816cd61b339caea31c8d7628ab9f8b48cab6d81a957965b7686

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for empulse-0.11.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0dca01bc808b405dc274263eba5582abd815a71cf0ed3f2c00d6e24e4de64ea6
MD5 0a3a233849ea1887d7576963e386cf9c
BLAKE2b-256 4838132cb31d7b4a60d8583f3b6c04c8946dcdc570690134143145f54a2b0c7a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for empulse-0.11.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 47fdba41bed8271f70b5fa727f2a29a7aef64c2b1fefcd74cac0b7656732e366
MD5 6108f5135f62c0094daca144f20e09f1
BLAKE2b-256 7b56c2ed3106e1d64a98f16fee9b5d1da83a7031017a96a097eec3e276118c40

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for empulse-0.11.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e5c4803fb2de5ac0bf0a6fb53562ee92300d1825867b4ab4e3c2cda404fce4ad
MD5 ad1cac3072f2bbe1ad182b8d061cb4d6
BLAKE2b-256 6f975693ccec75e732d257a16e4d4544758b39e8d7d19e4fe63a0b64e59f7393

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for empulse-0.11.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 a44ad504427bfb67e487084c46811e0f1c3252baed301bf059e68a1068c3a093
MD5 820594127aa4c401d7667b30458a9778
BLAKE2b-256 940d64b7fe0f382b3ebd1112cc9dfcf2eaea6f8288982d9fe8f0ec7c48e6dbbb

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: empulse-0.11.0-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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e28b623d92851b9b94a024e9c3ea43fc59095eb9d053edf29d286883fa5a7da0
MD5 b9d2a429dcc597b671862ff100d089fe
BLAKE2b-256 cbc6fa3b8e3086ecf66e05fc35da77ebe42f831075d8db88fbfdb9b3433f667c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for empulse-0.11.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 95cfd846d376154ffa0e8a95c3a27f735af9a31c1a22d992b808b67fec055840
MD5 d080efdf2f83e58a4d558b68bd21690e
BLAKE2b-256 9ba9a4a96d059dcca5930b356c565680103bba0c27290b7842ecfc343b81db3d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for empulse-0.11.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ef4ea6b2e2ab34a14ce6a3e6c5e5aefbce02cf8c03702d28b98078a648333089
MD5 c8ad62d4867c1b90fab7c40790f56ed0
BLAKE2b-256 ccb98b8c07df3c16ffc497847a756258f8d4d33895d37bdcb0c5d319662fe6cf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for empulse-0.11.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 241f7bdce12e7c7b4e69138677bfb5d44163c288daf188d52e845587e1c90848
MD5 ad145d6c60896d319f6c62929b541c8b
BLAKE2b-256 f1b63157458d0f85439c9f560afcba3e863d011397d4981f4be49b021da219cb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for empulse-0.11.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 7421cc80620cf3fa92b652455e89ff18805ef45aa2916a6565a132f6e54bbfd6
MD5 62fb94b8cb5ee206f433299b04dee32d
BLAKE2b-256 adf05ce513882adf9372190b00213222cf0d40e8c7b7f4efeb3151633d62ae1d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: empulse-0.11.0-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.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 31e92cd623cdc1d3f0a6488fb000ad0ec64448c5c920d812daf3bfb706bf419b
MD5 07b4d7f4b3435cf97c1b114d866ff8b2
BLAKE2b-256 3231aa12116950cbcb45999e44b81708cde856133c03b0a52884ff5ea650996e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for empulse-0.11.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e49e4369f54290c63d167cfc8a29015b72825999e6b61a0c70ff606219b5ab05
MD5 700a8683731cb5735cd326a991ac4875
BLAKE2b-256 0427d56261d9d1f7bc5b59ec619860a3c954f92da3afa9da906fa3d58b5c7347

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for empulse-0.11.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9d7a673db3efb3f6413706e463864a29e708bd5c7413032cf3ca711ecad77399
MD5 701a65cdb848b142181e6b62f862ee19
BLAKE2b-256 69ca3ad73756afc700d2cadff5da1390a99b76e37ff7670a51f61a084979ce22

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for empulse-0.11.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f13d4e598b87002712d13fb72ce04ff1ad2afb9d143bdd386c21718e9419d02
MD5 51e43f4f780c31af818179f4e95b3c59
BLAKE2b-256 a524053d9c0feaf3d2a8d7d2c848ef48357cf7e1b6efe9e4de358deb1316a7b6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for empulse-0.11.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8f9916da2dc74a268a8f13770f0d74db64068ce4a16e2592bb51c25467e57c30
MD5 54eae66f41d6a86c3f6035566594ec00
BLAKE2b-256 bd202599364e8952ba364505b7f719e80eb4719d7f1d35e82b8c22fac03bac7c

See more details on using hashes here.

Provenance

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