Skip to main content

High-performance interpretable rule-based ML — HUG-IML classifier, adaptive binning, EBM-style plots, pattern pruning, and benchmark runner (IEEE Access 2024).

Project description

hugiml-core

High-performance interpretable rule-based ML infrastructure built on the HUG-IML algorithm published in IEEE Access (2024).

CI PyPI Docs Python License DOI

HUGIML: interpretable tabular ML through compact human-readable patterns

HUGIML learns human-readable High Utility Gain patterns and uses those patterns as the model representation itself. Instead of explaining a black-box after training, the learned model is already composed of inspectable intervals, categories, supports, utilities, and coefficients.

glucose=[157.1,177.3)                coef= +1.4077   support=0.067
bmi=[31.8,39.1)                      coef= +1.0839   support=0.200
duration=[24,48)                     coef= +0.84     support=0.28
checking_status=no_checking          coef= +1.12     support=0.39

Where HUGIML fits


What Is HUG-IML?

The High Utility Gain Interpretable Machine Learning (HUG-IML) framework extracts High Utility Gain patterns from labelled tabular data, transforms the input into a binary pattern-presence matrix, and fits an interpretable downstream classifier (logistic regression by default) on that matrix.

The resulting patterns are human-readable and serve as the primary source of model explanations, making the system suitable for regulated domains such as credit scoring, healthcare, and risk management.

Key reference:

Krishnamoorthy, S. (2024). Interpretable Classifier Models for Decision Support Using High Utility Gain Patterns. IEEE Access, 12, 126088–126107. DOI: 10.1109/ACCESS.2024.3455563


Validation Highlights

The finance panels use German Credit / HELOC-style risk features such as loan duration, credit amount, checking status, and repayment-risk signals. The healthcare panels use Pima diabetes-style features such as glucose, BMI, pregnancies, pedigree, and age.

This section summarizes practical comparisons against established interpretable and high-performance tabular baselines. The goal is not to claim that HUGIML always beats boosted trees or EBM; the goal is to show where HUGIML provides a distinct trade-off: compact, auditable pattern explanations with competitive predictive behavior.

HUGIML vs EBM shape profiles

EBM learns smooth additive shape functions. HUGIML learns threshold/category profiles using native bin-level pattern contributions. On Pima diabetes and credit-risk examples, the models can express similar directional behavior, but HUGIML presents it as compact intervals/categories that are easier to audit.

HUGIML native shape profiles compared with EBM shape functions

EBM is excellent for smooth effect inspection; HUGIML is strong when the explanation needs to be reviewed as a set of readable thresholds and pattern contributions.

Real-world and synthetic non-monotonic benchmarks

The following benchmark panels compare HUGIML with LR, XGBoost, LightGBM, Random Forest, and EBM under explicit fitted-complexity budgets. They are intended as validation visuals, not as a universal ranking of models.

Real-world credit risk benchmark comparing HUGIML, LR, XGBoost, LightGBM, Random Forest, and EBM

Real-world credit-risk benchmark. On Give Me Some Credit and Taiwan Credit Card Default, LightGBM and XGBoost achieve the highest raw ROC-AUC. HUGIML improves over LR while remaining in a compact fitted-complexity range. EBM is shown with capped bins (max_bins=8, interactions=0) so that it is assessed as a competitive interpretable baseline rather than being penalized by excessive bin-score complexity.

Synthetic non-monotonic benchmark comparing HUGIML, LR, XGBoost, LightGBM, Random Forest, and EBM

Synthetic non-monotonic benchmark. The synthetic panels use two controlled datasets with interval-like and oscillatory feature effects. They illustrate model behavior when LR is structurally misspecified by a single global slope. HUGIML provides a compact nonlinear lift over LR, while LightGBM and XGBoost remain strongest in raw ROC-AUC. EBM is shown with capped bins (max_bins=16, interactions=0) to provide a fairer interpretable baseline.

For a detailed benchmark analysis results, refer to the interactive benchmark dashboard here: Open the HUGIML Benchmark Analysis Dashboard

Native missing-value handling

HUGIML, XGBoost, LightGBM, and EBM can all operate without an external imputation pipeline, but they treat missingness differently.

Native missing-value schemes in HUGIML, XGBoost, LightGBM, and EBM

Model Native missing-value behavior What to monitor
HUGIML Missing numerical values are absent from the transaction. Patterns requiring that feature item do not fire. Missingness rate and activation frequency of top patterns.
XGBoost Each split learns a default route for missing values. Whether default-route behavior changes under deployment shift.
LightGBM Histogram splits learn how missing values are routed. Missing-value routing and feature missingness drift.
EBM Missing values can be modeled as a separate bin/effect. Size and sign of each missing-bin effect.

Native missing handling is usually preferable to blindly injecting mean/median values. It does not remove all risk: if the missingness mechanism changes, all models that use missingness as signal can drift.

Adaptive binning

The global B parameter controls numerical bin resolution. A single fixed B can be too coarse for informative features or too fragmented for noisy ones. Adaptive binning selects per-feature resolution using supervised information gain and elbow stopping.

Adaptive binning benchmark against fixed bin counts

Adaptive binning is a safe default when you do not want to tune B; fixed B=5 is a useful fast baseline; very large fixed B can over-fragment patterns.

Pattern explanations on finance and healthcare datasets

HUGIML keeps explanations close to the model: feature intervals/categories, coefficients, support, utility, and information gain are available directly from the fitted classifier.

HUGIML pattern explanations on finance and healthcare datasets

Learned patterns map naturally to domain narratives: glucose/BMI/age in diabetes and duration/checking-status/credit-amount style signals in German Credit or HELOC-style risk scoring.

Model-card-ready artifacts

Because HUGIML’s explanations are compact, they can be copied directly into model cards, audit packets, validation reports, and deployment reviews.

Model-card-ready HUGIML explanations


Features

Capability Details
HUG pattern mining C++ accelerated via pybind11; optional OpenMP parallelism
scikit-learn API Full BaseEstimator / ClassifierMixin compliance
Mixed feature types Integer, float, categorical — auto-detected or explicitly supplied
Profile visualisations EBM-style 1-D/2-D HUG profiles, active-pattern explanations, coefficient-support views (Plotly)
Interpretability metrics Pattern count, coverage, overlap, sparsity, top-k cumulative contribution
Adaptive binning Per-feature supervised B selection — fixes the B-sensitivity trap
Feature modes Pattern-only, original-plus-patterns, and original-plus-interactions downstream representations
Pattern pruning Regulated remove/refit/calibrate workflow with full JSON audit trail
Multiclass & imbalance Multiclass report, SMOTE/class-weight pipeline, high-cardinality encoding
Benchmark suite Reproducible CV comparison vs EBM, XGBoost, RF, LR, RuleFit, GAM
Calibration ECE, MCE, Brier score, reliability diagram data
Drift detection PSI + symmetric KL divergence + label drift
Monitoring Thread-safe PredictionMonitor, latency tracking
Governance Model cards (JSON + Markdown), audit artifacts, SBOM
Observability OpenTelemetry tracing, Prometheus metrics (both optional)
Secure serialisation Allowlist-based _RestrictedUnpickler, versioned schema
Deployment FastAPI inference server, Docker image, Kubernetes manifests
CI/CD GitHub Actions: lint → coverage → native tests → wheels → PyPI

Installation

# Core
pip install hugiml-core

# With profile plots
pip install "hugiml-core[plots]"

# With benchmark comparison suite
pip install "hugiml-core[benchmarks]"

# With imbalanced-data helpers
pip install "hugiml-core[imbalanced]"

# With SHAP interoperability
pip install "hugiml-core[explainability]"

# With MLflow integration
pip install "hugiml-core[mlflow]"

# Everything
pip install "hugiml-core[all]"

Build from source requires a C++17 compiler and CMake or pybind11:

git clone https://github.com/srikumar2050/hugiml-core.git
cd hugiml-core
pip install -e ".[dev]"
python setup.py build_ext --inplace

Quick Start

Note on prepareXy: prepareXy performs schema and type preparation only — it detects integer, float, and categorical columns and encodes the target. Discretisation, HUG pattern mining, and downstream classifier fitting occur inside fit() on the training data supplied to that call.

Path A — prepareXy

import pandas as pd
from sklearn.model_selection import train_test_split
from hugiml import HUGIMLClassifierNative

clf = HUGIMLClassifierNative(B=7, L=1, G=5e-3)

X_enc, y_enc = clf.prepareXy(X_df, y)   # schema/type prep — no model fitting

X_tr, X_te, y_tr, y_te = train_test_split(
    X_enc, y_enc, stratify=y_enc, random_state=42
)

clf.fit(X_tr, y_tr)                     # mining + downstream fit on train only
proba = clf.predict_proba(X_te)

print(clf.get_hug_features())
print(clf.feature_importances())
print(clf.model_summary())

Path B — explicit allCols for CV and production pipelines

from hugiml import HUGIMLClassifierNative

clf = HUGIMLClassifierNative(
    allCols=[int_col_names, float_col_names, cat_col_names],
    origColumns=X.columns.tolist(),
    B=15,
    L=1,
    G=1e-5,
    topK=150,
    adaptive_binning=True,
    b_candidates=[2, 3, 5, 7, 10, 15],
)

clf.fit(X_train, y_train)

pred = clf.predict(X_test)
proba = clf.predict_proba(X_test)

Feature Modes

HUGIML can use the mined binary pattern matrix in three downstream feature modes. The default remains the original pattern-only behavior, so existing code keeps the same semantics unless feature_mode is set explicitly.

feature_mode Downstream estimator input When to use
"patterns_only" HUGIML binary pattern matrix only Standard HUGIML; best when the mined pattern space itself captures the decision boundary.
"original_plus_patterns" Original features plus all mined binary patterns Useful when the original features contain strong marginal signal and HUGIML patterns add supervised nonlinear refinements.
"original_plus_interactions" Original features plus only L > 1 mined patterns Useful when original features should handle marginal effects and HUGIML should contribute interaction/compound-region features.
from hugiml import HUGIMLClassifierNative

# Backward-compatible default: pattern matrix only
clf = HUGIMLClassifierNative(
    B=10,
    L=2,
    G=1e-3,
    topK=150,
    adaptive_binning=True,
    feature_mode="patterns_only",
)

# Hybrid: original features + all binary HUGIML patterns
clf_hybrid_all = HUGIMLClassifierNative(
    B=10,
    L=2,
    G=1e-3,
    topK=150,
    adaptive_binning=True,
    feature_mode="original_plus_patterns",
)

# Hybrid: original features + higher-order/interaction patterns only
clf_hybrid_interactions = HUGIMLClassifierNative(
    B=10,
    L=2,
    G=1e-3,
    topK=150,
    adaptive_binning=True,
    feature_mode="original_plus_interactions",
)

transform(X) always returns the HUGIML binary pattern matrix, regardless of feature_mode. The feature mode only changes the matrix passed to the downstream estimator inside fit(), predict(), predict_proba(), and score().

For hybrid modes, HUGIML standardizes numeric original features internally before concatenating them with the sparse binary pattern matrix. feature_importances() and model_summary() report the downstream feature representation used by the fitted model, while get_hug_features() and get_pattern_info() remain pattern-only APIs.


Model Explanation Dashboard

The explanation dashboard is available directly from a fitted model:

from hugiml.plots import HUGPlotter

plotter = HUGPlotter(clf)

plotter.plot_dashboard(
    X_test,
    dataset_name="My Dataset",
    feature_names_for_profile=["age", "income", "glucose"],
    output_path="hugiml_dashboard.html",
)

plotter.plot_marginal_bin_profile("glucose", X=X_test).show()
plotter.plot_top_patterns(top_n=20).show()
plotter.plot_feature_importance(top_n=15).show()
plotter.plot_active_patterns(X_test, sample_idx=0).show()

Each profile panel shows the learned bin/pattern behavior for a feature: utility or coefficient-like contribution per bin, with support overlay where available. Positive values signal the target class; negative values signal the complementary class.

Existing example dashboards:

public tabular benchmark classification
Feature shape profiles — public tabular benchmark

Credit risk scoring
Feature shape profiles — credit risk


Profile Visualisations

from hugiml.plots import HUGPlotter

plotter = HUGPlotter(clf)

# EBM-style 1-D shape function: utility per bin + support overlay
plotter.plot_marginal_bin_profile("age", X=X_test).show()

# Feature-combination view for compound patterns
plotter.plot_feature_combinations("age").show()

# Top patterns by importance
plotter.plot_top_patterns(top_n=20).show()

# Local explanation for one sample
plotter.plot_active_patterns(X_test, sample_idx=0).show()

# Full interactive dashboard
plotter.plot_dashboard(X_test, dataset_name="Dataset", output_path="dashboard.html")

Interpretability Metrics

from hugiml.metrics import compute_all_metrics

m = compute_all_metrics(clf, X_test)
print(m)

Example output:

InterpretabilityMetrics
==========================================
n_patterns              : 87
avg_pattern_length       : 1.34
coverage                 : 0.9812
mean_active_patterns     : 6.21
overlap_rate             : 0.0714
explanation_sparsity     : 0.0230

top-k cumulative |coef|:
top- 1 : 8.4%
top- 5 : 31.2%
top-10 : 54.7%

Pattern Pruning: Regulated Editing Workflow

In regulated domains, analysts often need to remove patterns that reference protected attributes, have high PSI, or are operationally invalid. HUGIML provides an EBM-inspired controlled editing workflow with a JSON audit trail.

from hugiml.pruning import PatternEditor

editor = PatternEditor(clf, operator_name="risk-team")

print(editor.list_patterns().head(10))

editor.remove([3, 7], reason="references protected attribute 'gender'")
editor.remove_by_keyword("postcode", reason="high PSI — unstable feature")
editor.remove_low_support(min_support=0.01, reason="noise patterns")

editor.refit(X_tr, y_tr)
editor.calibrate(X_cal, y_cal, method="isotonic")

new_clf = editor.finalize()
print(editor.audit_report())

Adaptive Binning

The global B parameter controls how many quantile bins each numerical feature is discretised into. Choosing one B for all features can miss the optimal resolution for informative features or over-fragment noisy ones.

HUGIMLAdaptive selects the optimal bin count per feature via supervised entropy/information-gain search with elbow stopping.

from hugiml.adaptive import HUGIMLAdaptive

clf = HUGIMLAdaptive(
    b_candidates=[3, 5, 7, 10, 15],
    L=2,
    G=1e-4,
)

X_enc, y_enc = clf.prepareXy(X_df, y)
clf.fit(X_tr, y_tr)

print(clf.per_feature_b_)
clf.plot_bin_profiles()
clf.ig_heatmap()

Alternatively, enable adaptive binning directly on HUGIMLClassifierNative:

from hugiml import HUGIMLClassifierNative

clf = HUGIMLClassifierNative(
    B=10,                              # upper bound
    adaptive_binning=True,
    b_candidates=[3, 5, 7, 10],
    min_marginal_gain_ratio=0.02,       # elbow threshold
)

How it works: for each numerical feature, HUGIML evaluates information gain at candidate B values and stops when the marginal gain falls below min_marginal_gain_ratio × current_IG. This prevents blindly selecting the maximum bin count.

NaN handling: adaptive pre-binning treats non-finite cells as np.nan, consistent with native missing-value handling.


Missing Value Handling

HUGIML v1.1.0 treats NaN and Inf values as not observed — no imputation and no special parameter are required.

How it works: numerical columns are pre-binned at fit time. Non-finite cells become np.nan in the label array, and the C++ transaction builder skips them. The corresponding item is absent from the transaction. Patterns requiring that feature do not fire for that row.

import numpy as np
from hugiml import HUGIMLClassifierNative

X_train.iloc[5, 2] = np.nan

clf = HUGIMLClassifierNative(B=5, L=2, G=1e-4)
clf.fit(X_train, y_train)

X_test.iloc[0, 0] = np.nan
proba = clf.predict_proba(X_test)       # scored using available feature items

This differs from median/mean imputation: HUGIML does not fabricate replacement values. It also differs from row dropping: incomplete rows remain usable.

See the benchmark section below for missing-value robustness.

Mining Patterns About Missingness

In healthcare and finance, absence of data is often informative, a missing critical lab may indicate the patient was too unstable for testing, or a missing field in a credit application may signal intentional concealment.

To mine patterns that involve missingness (e.g., Glucose_MISSING=1 AND HeartRate=[110,140]), add binary missingness indicators as preprocessing features:

def add_missingness_indicators(X, threshold=0.05):
    X_aug = X.copy()
    for col in X.columns:
        if X[col].isna().mean() > threshold:
            X_aug[f"{col}__MISSING"] = X[col].isna().astype(int)
    return X_aug

# Usage
X_with_indicators = add_missingness_indicators(X_raw)
clf = HUGIMLClassifierNative(B=7, L=2, G=1e-4)  
clf.fit(X_with_indicators, y)

# Extract missingness-related patterns
all_patterns = clf.get_hug_features()
missing_patterns = [p for p in all_patterns if '__MISSING' in p]

# Example patterns discovered:
# ['Glucose__MISSING=1 AND Age=[50,65] AND EmergencyAdmit=1',
#  'Troponin__MISSING=1 AND HeartRate=[110,140]',
#  'CurrentDebt__MISSING=1 AND Income=low']

Note: Apply the same add_missingness_indicators() transformation to test/production data. Use sklearn.pipeline.Pipeline with FunctionTransformer to ensure consistency.


Multiclass, Imbalanced Data, High-Cardinality Categoricals

Multiclass Classification

from hugiml.multiclass import (
    MulticlassHUGReport,
    make_imbalanced_pipeline,
    encode_high_cardinality,
    apply_encoding,
)

report = MulticlassHUGReport(clf)
print(report.importances_for_class(class_label=2, top_n=10))
print(report.summary())

Imbalanced Data Handling

from hugiml.multiclass import make_imbalanced_pipeline
clf_bal = make_imbalanced_pipeline(clf_proto, strategy="smote")
clf_bal.fit(X_tr, y_tr)

High-Cardinality Categorical Reduction

When categorical features have hundreds or thousands of unique values (ZIP codes, ICD-10 diagnoses, merchant IDs), the pattern mining engine faces combinatorial explosion and dramatically slower mining. To reduce cardinality while preserving discriminative signal, group rare categories as 'OTHER':

def reduce_high_cardinality(X, y, threshold=50, min_frequency=0.01):
    """Group rare categories (<min_frequency) as '__OTHER__' for high-cardinality columns"""
    X_reduced = X.copy()
    
    for col in X.select_dtypes(include=['object', 'category']).columns:
        if X[col].nunique() <= threshold:
            continue  # Skip low-cardinality columns
        
        # Compute frequency per category
        value_counts = X[col].value_counts()
        min_count = len(X) * min_frequency
        
        # Map rare categories to '__OTHER__'
        rare_categories = value_counts[value_counts < min_count].index
        X_reduced[col] = X[col].apply(
            lambda x: '__OTHER__' if x in rare_categories else x
        )
    
    return X_reduced

# Usage
X_reduced = reduce_high_cardinality(X_raw, y, threshold=50, min_frequency=0.01)
clf = HUGIMLClassifierNative(B=7, L=2, G=1e-4)
clf.fit(X_reduced, y)

# Example: 10,000 ZIP codes → ~100 frequent ZIPs + '__OTHER__'
# Patterns: "ZIP_CODE=10001 AND Income=low" or "ZIP_CODE=__OTHER__ AND CreditScore=[600,650]"

# Or use existing utility (basic target encoding):
from hugiml.multiclass import encode_high_cardinality, apply_encoding
X_enc, enc_map = encode_high_cardinality(X_tr, y_tr, threshold=20, method="target_mean")
X_te_enc = apply_encoding(X_te, enc_map)

Note: Learn category groupings on training data only, then apply the same mapping to test/production data. Use a custom sklearn transformer or save the learned rare_categories mapping separately to ensure consistency.


Benchmark Suite

Reproduce paper claims or benchmark on your own datasets:

# Run full CV comparison
python -m hugiml.benchmarks.runner

# Specific datasets
python -m hugiml.benchmarks.runner --datasets german_credit pima adult

# Save results
python -m hugiml.benchmarks.runner --output benchmarks/results/

Or use the installed console script:

hugiml-bench --datasets german_credit --output results/

Worked notebooks in notebooks/ are organized as 12 self-contained folders. Each folder includes an .ipynb notebook and, where available, matching .py, .html, data, and metadata artifacts.

Folder Notebook Brief description
00_quickstart nb00_pattern_explanation_walkthrough.ipynb Quick end-to-end walkthrough of fitting HUGIML, extracting patterns, and reading pattern-level explanations.
01_benchmark_baselines nb01_benchmark_baselines.ipynb Benchmark comparison across HUGIML and common tabular baselines such as XGBoost, LightGBM, Random Forest, and logistic regression.
02_hug_vs_ebm nb02_hug_vs_ebm.ipynb Side-by-side comparison of HUGIML pattern profiles and EBM-style additive shape functions.
03_modeling_special_cases nb03_modeling_special_cases.ipynb Practical modeling cases including multiclass targets, imbalance, high-cardinality categoricals, adaptive binning, and pruning workflows.
04_credit_risk nb04_credit_risk.ipynb Credit-risk governance example using German Credit-style data, scorecard-style features, and auditable risk patterns.
05_aml nb05_aml.ipynb Anti-money-laundering example focused on suspicious transaction pattern discovery and model review artifacts.
06_mobile_money nb06_mobile_money_fraud.ipynb Mobile-money fraud example showing compact transaction-risk patterns and operational fraud-review signals.
07_basel_ca nb07_basel_ca.ipynb Basel capital-adequacy oriented example for regulated risk analytics and explainable model validation.
08_clinical nb08_healthcare_breast_cancer.ipynb Clinical classification example using breast-cancer features to demonstrate interpretable healthcare pattern explanations.
09_insurance nb09_insurance_underwriting.ipynb Insurance underwriting example with risk-selection patterns and model-card-friendly feature narratives.
10_medicare nb10_medicare_program_integrity.ipynb Medicare program-integrity example for suspicious provider/claim behavior and audit-ready pattern summaries.
11_workforce_analytics nb11_workforce_attrition.ipynb Workforce attrition analytics example showing HR risk patterns, explanation tables, and governance-oriented summaries.

Observed results: public benchmark snapshot

Benchmark comparison

The shipped benchmark runner supports multiple public datasets; the top validation visuals above emphasize healthcare and credit-risk examples.

Model AUC (mean±std) Fit time/fold Complexity budget Remarks
HUG B=3 0.9907 ± 0.0031 0.32 s topK patterns topK is an explicit cap; actual mined patterns can be lower.
HUG B=5 0.9909 ± 0.0028 0.34 s topK patterns More bins per feature.
HUG adaptive 0.9954 ± 0.0022 1.20 s topK patterns Per-feature B increases fit time.
EBM 0.9940 ± 0.0025 11.0 s Additive terms + interactions Reference interpretable baseline.
XGBoost 0.9882 ± 0.0040 0.12 s Trees × leaves High-performing ensemble; not directly pattern-interpretable.
LightGBM 0.9921 ± 0.0028 0.07 s Leaves × trees Fast histogram boosting.

Missing value robustness

Missing value benchmark

Simulation setup: Wine dataset, 3-fold stratified CV, missing rates 0–40%, mechanisms MCAR, MAR, and MNAR.

Observations:

  • HUGIML fit time can decrease with more missing data because the transaction miner processes shorter transactions.
  • Tree models often route missing values through learned default directions.
  • Imputation-based pipelines may learn artifacts when the imputed distribution is stable in train/test but shifts in deployment.
  • HUGIML’s “no item” semantics give interpretable absence: a pattern simply does not fire if one of its features is unavailable.

Drift Detection & Monitoring

clf.enable_monitoring(window_size=1000)

clf.predict_proba(X_new)

print(clf.monitor.report())

report = clf.detect_drift(X_new, current_labels=y_new)
print(report)

Serialisation

from hugiml.serialization import save_model, load_model, generate_sbom

save_model(clf, "model.hugiml")
clf2 = load_model("model.hugiml")

sbom = generate_sbom(clf)

Governance & Model Cards

from hugiml.governance import generate_model_card

card = generate_model_card(
    clf,
    model_id="credit-scorer-v1.0.0",
    intended_use="Credit risk assessment for SME lending.",
    training_data_description="German Credit dataset, 1000 samples",
)

print(card.to_markdown())
card.save("model_card.json")

Model cards should include top positive/negative patterns, missing-value behavior, calibration metrics, drift-monitoring plan, and any pattern-pruning audit trail.


Calibration

from hugiml.calibration import evaluate_calibration

result = evaluate_calibration(y_te.values, proba[:, 1])

print(f"ECE: {result.ece:.4f}")
print(f"Brier: {result.brier_score:.4f}")

Inference Server

A FastAPI-based inference server is included for containerised deployments.

docker build -t hugiml-core:latest -f docker/Dockerfile .

docker run -p 8080:8080 -v /path/to/models:/models hugiml-core:latest

curl -s -X POST http://localhost:8080/predict \
  -H "Content-Type: application/json" \
  -d '{"instances": [{"age": 35, "savings": "moderate"}]}'

Kubernetes manifests are in kubernetes/deployment.yaml.


CI / CD

Workflow Trigger What it does
ci.yml Every push / PR Lint, type-check, coverage gate, native tests, sanitizer build, benchmark regression, wheel build
release.yml Git tag v*.*.* Build platform wheels, generate SBOM, publish to PyPI, create GitHub

Repository Structure

hugiml-core/
├── src/
│   ├── _native/                 C++ extension sources
│   └── hugiml/
│       ├── classifier.py        HUGIMLClassifierNative
│       ├── calibration.py       ECE, Brier, reliability diagrams
│       ├── explainability.py    SHAP bridge, feature lineage, stability
│       ├── governance.py        Model cards, audit artifacts
│       ├── monitoring.py        PredictionMonitor, DriftDetector
│       ├── serialization.py     save/load, SBOM, restricted unpickler
│       ├── telemetry.py         OpenTelemetry, Prometheus
│       ├── exceptions.py        Exception hierarchy
│       ├── metrics.py           Interpretability-complexity metrics
│       ├── plots.py             EBM-style profile visualisations
│       ├── pruning.py           Pattern editor + audit trail
│       ├── adaptive.py          Per-feature adaptive binning
│       ├── multiclass.py        Multiclass / imbalanced / encoding
│       └── benchmarks/          CV comparison suite
├── notebooks/                   Worked examples
├── tests/                       Pytest suite
├── benchmarks/                  Micro-benchmarks and regression gate
├── docker/                      Dockerfile + FastAPI inference server
├── kubernetes/                  Deployment manifests
├── scripts/                     Build and utility scripts
├── docs/                        Documentation and model-card templates
├── .github/workflows/           CI/CD pipelines
├── pyproject.toml
└── setup.py

License

Apache License 2.0 — see LICENSE.


Citation

If you use hugiml-core in research or commercial work, please cite:

@article{krishnamoorthy2026interpretability,
  title        = {Interpretability Myopia: Governance Fitness in Financial Risk Models},
  author       = {Krishnamoorthy, Srikumar},
  journal      = {SSRN Electronic Journal},
  year         = {2026},
  doi          = {10.2139/ssrn.6821418},
  url          = {https://dx.doi.org/10.2139/ssrn.6821418},
  keywords     = {Interpretable machine learning, analytics, financial risk governance, deployment evaluation, regulatory compliance, model risk management}
}

@article{krishnamoorthy2024hugIML,
  author  = {Krishnamoorthy, Srikumar},
  title   = {Interpretable Classifier Models for Decision Support Using High Utility Gain Patterns},
  journal = {IEEE Access},
  volume  = {12},
  pages   = {126088--126107},
  year    = {2024},
  doi     = {10.1109/ACCESS.2024.3455563}
}

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

hugiml_core-1.1.3.tar.gz (223.2 kB view details)

Uploaded Source

Built Distributions

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

hugiml_core-1.1.3-cp313-cp313-win_amd64.whl (305.3 kB view details)

Uploaded CPython 3.13Windows x86-64

hugiml_core-1.1.3-cp313-cp313-manylinux_2_28_x86_64.whl (836.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

hugiml_core-1.1.3-cp313-cp313-macosx_15_0_x86_64.whl (830.2 kB view details)

Uploaded CPython 3.13macOS 15.0+ x86-64

hugiml_core-1.1.3-cp313-cp313-macosx_15_0_arm64.whl (790.2 kB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

hugiml_core-1.1.3-cp312-cp312-win_amd64.whl (305.2 kB view details)

Uploaded CPython 3.12Windows x86-64

hugiml_core-1.1.3-cp312-cp312-manylinux_2_28_x86_64.whl (836.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

hugiml_core-1.1.3-cp312-cp312-macosx_15_0_x86_64.whl (830.2 kB view details)

Uploaded CPython 3.12macOS 15.0+ x86-64

hugiml_core-1.1.3-cp312-cp312-macosx_15_0_arm64.whl (790.2 kB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

hugiml_core-1.1.3-cp311-cp311-win_amd64.whl (303.4 kB view details)

Uploaded CPython 3.11Windows x86-64

hugiml_core-1.1.3-cp311-cp311-manylinux_2_28_x86_64.whl (832.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

hugiml_core-1.1.3-cp311-cp311-macosx_15_0_x86_64.whl (827.8 kB view details)

Uploaded CPython 3.11macOS 15.0+ x86-64

hugiml_core-1.1.3-cp311-cp311-macosx_15_0_arm64.whl (786.6 kB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

hugiml_core-1.1.3-cp310-cp310-win_amd64.whl (302.6 kB view details)

Uploaded CPython 3.10Windows x86-64

hugiml_core-1.1.3-cp310-cp310-manylinux_2_28_x86_64.whl (830.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

hugiml_core-1.1.3-cp310-cp310-macosx_15_0_x86_64.whl (827.2 kB view details)

Uploaded CPython 3.10macOS 15.0+ x86-64

hugiml_core-1.1.3-cp310-cp310-macosx_15_0_arm64.whl (785.5 kB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

hugiml_core-1.1.3-cp39-cp39-win_amd64.whl (305.8 kB view details)

Uploaded CPython 3.9Windows x86-64

hugiml_core-1.1.3-cp39-cp39-manylinux_2_28_x86_64.whl (829.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

hugiml_core-1.1.3-cp39-cp39-macosx_15_0_x86_64.whl (827.6 kB view details)

Uploaded CPython 3.9macOS 15.0+ x86-64

hugiml_core-1.1.3-cp39-cp39-macosx_15_0_arm64.whl (785.9 kB view details)

Uploaded CPython 3.9macOS 15.0+ ARM64

File details

Details for the file hugiml_core-1.1.3.tar.gz.

File metadata

  • Download URL: hugiml_core-1.1.3.tar.gz
  • Upload date:
  • Size: 223.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for hugiml_core-1.1.3.tar.gz
Algorithm Hash digest
SHA256 f50f5667c76658b1ed5372d4c115dd1fe1de45be63ef04c4af74c6925dd2e672
MD5 9b5e4f899610aebdcef7ca1d3f545e55
BLAKE2b-256 375b449a627680dedae1defc030ee8b1983ac51d905b8a0f25c56b9cdfc5edb0

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3.tar.gz:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: hugiml_core-1.1.3-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 305.3 kB
  • 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 hugiml_core-1.1.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 012ea69e788c5590d384ca4cbe85f99fc4af0e14ba445ad55c06a89d2e59a9c0
MD5 24721cbf891830fe8970696008a95215
BLAKE2b-256 1da5cc357eac6bf740e064f6d574e16cf4dbac30ea867e88aa02b802831d90d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp313-cp313-win_amd64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for hugiml_core-1.1.3-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 322aa9fc5a57d7681b2a9b04501db95e1f11272abaf8c2ff6c0b3a3f72c45137
MD5 77aadb3ce38cc10648bcb787ac643b57
BLAKE2b-256 745a403db9d56c5dc5264dd8600ccc36f7b5a78e4883cf62d941cf0027d827f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp313-cp313-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for hugiml_core-1.1.3-cp313-cp313-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 f0f859a57b96caaf2b174a98aed29f3957dad099f2b9b41e28d167199054f27c
MD5 9cba429cd441ebf2fe8a24b3204942be
BLAKE2b-256 222bcdf5f6dc93c20b27011beeecee49b8dde6ccf1207e3a30dbe3709807fae5

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp313-cp313-macosx_15_0_x86_64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for hugiml_core-1.1.3-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 04aa140f2ce1acd7e078dc6e0af913975001a4f6a3f82f541d824b87f2c09b18
MD5 17c8578d6a0e4d02e858dc230b9297da
BLAKE2b-256 4ebb8d95b9a5729b69ab897c137b59d63322bcee6ec564e0e5937cb1ef986312

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp313-cp313-macosx_15_0_arm64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: hugiml_core-1.1.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 305.2 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 hugiml_core-1.1.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 aa8558f9ec35c5ad9a5640ef32d757fc2c3bd6aaa75c1d215113cdb211b7239d
MD5 32052705a368e45adae0629ed5030988
BLAKE2b-256 e06369bdc43000850a25a72e296e056f9aff5d9d2d79a5fecaa0d4d8b3c87171

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp312-cp312-win_amd64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for hugiml_core-1.1.3-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 12f0e9ae1c3b6e8c19960eb6596ac1a976031713ba758927bd0c07635ad28468
MD5 8f510a48bee959a5a09c6c5a6ec63c75
BLAKE2b-256 8e2763fd69b613f87ea65058684e3327b33b544fcbfb1a18b0022c9d4b455aa6

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp312-cp312-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for hugiml_core-1.1.3-cp312-cp312-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 e775c6699059d5fb9016ee0e17d8f28bf88cd827c982c8898f000101df140e6b
MD5 7f36cbe08d3d499e20000becbc188c57
BLAKE2b-256 0d0cef3e7f4453cdbccc840d701ab61f0b2fb5a9c2b47ae813954178dad4fb9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp312-cp312-macosx_15_0_x86_64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for hugiml_core-1.1.3-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 e29c061b0ceaaa57030d94eb1d41171e3c367a6c24d4874a8a1f69ae139c4233
MD5 efc2740584822d277b8fbf43670faf57
BLAKE2b-256 580fba065a97d7269c2825ead481a119c53d68598a805be21b732565b86057e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp312-cp312-macosx_15_0_arm64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: hugiml_core-1.1.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 303.4 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 hugiml_core-1.1.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6e04741fcbc92bddef337992db7952639de88e3b7fe100b9165e49fb6ab7b45d
MD5 e5d2d49a86462ec00a353085e5579f7c
BLAKE2b-256 798f99b0ebe7e20e11c942d3d11c99c14be69fbd3c47cb2a16acc4aa0ab331fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp311-cp311-win_amd64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for hugiml_core-1.1.3-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6c0a83fe8edb8f5557e743a15bc04d326280bbf3d4c5df63094722abcad04490
MD5 475c5e739675432d15c2e64b6d413cea
BLAKE2b-256 7d8b914a85fcf51a659898e51eab342ef9f220e80afc7d2bbfdb4d78d9d355e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp311-cp311-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for hugiml_core-1.1.3-cp311-cp311-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 775e710dd10268c80bcc28026c4886b707eb88806b6692043e1a6a063716d073
MD5 e353dc74fb024306add68b82f3504ba0
BLAKE2b-256 3865ffc856af47f399b7e32e3ee701ab570760fd0ff23dbcff1a7bb64fbb15f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp311-cp311-macosx_15_0_x86_64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for hugiml_core-1.1.3-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 ef421e3a54760cdfcddf9eb58b1a841adeefea72ed343f115bac027a97a7a4b3
MD5 9f59c743f85464b3d5e77990ff90bcc2
BLAKE2b-256 ed778f5d0384a2648436f102e212e114dfcefb167d6c2f0046d5c00b9048ee5b

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp311-cp311-macosx_15_0_arm64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: hugiml_core-1.1.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 302.6 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 hugiml_core-1.1.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 acac01d1e78d56737b2036b03259c56de4166f3c3ff8b6fc840bb7a577832556
MD5 5f2a2b10f6ed970fce946d5f366b70b0
BLAKE2b-256 8280e8c77fe3a0ff7586c6311cd83a9638bd606d5476e49cf2ee484db5f06a9a

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp310-cp310-win_amd64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for hugiml_core-1.1.3-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cc101ad57819f095f1f6b1cb877e6acc7a12383d60f6d6b9806773cfd3392037
MD5 af639e1cf4696c5212b67fd305f7a9da
BLAKE2b-256 359ff0fd47dca698582c6a8db90d9606111a6428306a809ffa3fdfa0169ad044

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp310-cp310-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for hugiml_core-1.1.3-cp310-cp310-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 c8cd2019aa0916738a63edf5bb0c2d9b501185c61177531ec032767f551cbe6b
MD5 275488f4245cbadc2317425b28d4abe9
BLAKE2b-256 9ef1fec637fe22f8e851d7ac74489fa0c981989a9a8ae45a0679c914a6cbe5a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp310-cp310-macosx_15_0_x86_64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for hugiml_core-1.1.3-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 d5a5af6825cb1529cc036af80ec2e91e43d5305c37d8ee52f3bac11ba52bea61
MD5 0385a45765b5be004055c459a519d178
BLAKE2b-256 2565390234bb4c5280dfe11554a36c1f6dfb745a0211c11e7e64946e4e40f233

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp310-cp310-macosx_15_0_arm64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: hugiml_core-1.1.3-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 305.8 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 hugiml_core-1.1.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 abb6fa60aa7163058a5707814d966c4a8f148b611c314650609414efd29ca13f
MD5 291d2ae27298279bcb11c98dc8ba9bdc
BLAKE2b-256 ad3e36d4488fe579fabf67f0f165554a1dfcfc2e9849bb185202f8f831478ee3

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp39-cp39-win_amd64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for hugiml_core-1.1.3-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 789dcdef771ef476aa7d3bd27c2c7cd720437268531c15bd50cac4072687da9a
MD5 a5d383e417884c72722d37612c636e77
BLAKE2b-256 e0d71feecd323d178692a639ee8bec0667c8bf9c5aa81d20f753703c30e4de65

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp39-cp39-manylinux_2_28_x86_64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp39-cp39-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for hugiml_core-1.1.3-cp39-cp39-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 a624dd23580105d8a413be706afd545126492ec487381ca80315409781e065f8
MD5 5e22e51447c134bf365df7861c923262
BLAKE2b-256 6e42453e1ec6df3bef534b67b910d6b09b3c49232783c6ddb1e7de3aa3dcba1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp39-cp39-macosx_15_0_x86_64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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

File details

Details for the file hugiml_core-1.1.3-cp39-cp39-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for hugiml_core-1.1.3-cp39-cp39-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 77f8a7b64dfc66a2aaba80391ebc679cf32adf74616a23cc9e2e8757358f6f7d
MD5 f73a9fbb67e79aecc88b015aee5a6a9f
BLAKE2b-256 4540186a3b59a05807d4d13eb3df168eaabc06d448a07028e7d7c2790227e5fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for hugiml_core-1.1.3-cp39-cp39-macosx_15_0_arm64.whl:

Publisher: release.yml on srikumar2050/hugiml-core

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