Skip to main content

hessboost for Python

Fast, deterministic gradient boosting in Rust. The core API (DMatrix, train, cv, Booster, and scikit-learn estimators) takes the parameter names XGBoost users know, and models move to and from XGBoost as JSON or UBJSON.

  • Strict. An unknown parameter, a value of the wrong type or range, or a combination hessboost does not implement raises an error; nothing is silently ignored.
  • Deterministic. The same parameters, data, and seed give the same model at any nthread.
  • Typed (py.typed, complete type information), with the GIL released while training and predicting, and free-threaded CPython supported.
  • Modern modeling (opt-in). Conformal prediction intervals, confidence intervals for the regression function (Boulevard boosting), distributional boosting (a predictive distribution per row), LightGBM/CatBoost tree options, class-balanced binary bagging, and XE-NDCG ranking (objective="rank:xendcg").

Installation

uv add hessboost        # or: pip install hessboost

Extras: hessboost[pandas], hessboost[polars], and hessboost[scikit-learn]. numpy is the only required dependency.

Prebuilt wheels are published for Linux x86_64 and aarch64 (glibc manylinux and musl/Alpine musllinux), macOS arm64 (with Metal support: device="metal" training histograms and Booster.to_gpu() GPU batch prediction), and Windows x86_64: one abi3 wheel per platform for CPython 3.11 and newer, plus a wheel for free-threaded CPython 3.14t. Elsewhere the installer builds from the source distribution, which needs Rust 1.93 or newer and a C compiler (for libzstd).

Quick start

Train on a DMatrix, evaluating a holdout set every round and stopping once it stops improving:

import numpy as np
import hessboost

rng = np.random.default_rng(0)
X = rng.normal(size=(1000, 5))
y = (X[:, 0] + X[:, 1] ** 2 > 1).astype(int)

dtrain = hessboost.DMatrix(X[:800], label=y[:800])
dvalid = hessboost.DMatrix(X[800:], label=y[800:])

booster = hessboost.train(
    {"objective": "binary:logistic", "max_depth": 4, "eta": 0.1, "eval_metric": "auc"},
    dtrain,
    num_boost_round=500,
    evals=[(dvalid, "valid")],
    early_stopping_rounds=20,
    verbose_eval=False,
)

predict takes a DMatrix or anything its constructor accepts. The default range is the iterations through best_iteration (pass iteration_range=(0, 0) for every iteration), except pred_leaf, which defaults to all of the model's trees, not just through best_iteration. The flag arguments are exclusive:

probabilities = booster.predict(X[800:])  # through best_iteration
margins = booster.predict(X[800:], output_margin=True)
shap = booster.predict(X[800:], pred_contribs=True)  # (rows, features + 1)
leaves = booster.predict(X[800:], pred_leaf=True)  # (rows, trees) int32, all trees
print(booster.best_iteration, booster.get_score(importance_type="gain"))

Input data

DMatrix takes numpy arrays of any numeric dtype and memory layout (a C-contiguous float32 array is used without a copy), pandas and polars DataFrames, scipy sparse matrices, and anything numpy.asarray accepts. NaN, and a frame's null, is missing (or pass missing=); ranking data takes group= sizes or qid=, and survival:aft takes label_lower_bound=/label_upper_bound=. Booster.predict accepts the same inputs directly.

Training controls

train supports XGBoost's everyday arguments: evals, evals_result, early_stopping_rounds, verbose_eval (printed live, every round or every n-th), xgb_model (continued training, or tree refresh with process_type="update"), a custom objective obj, a custom_metric, and callbacks. Ctrl-C stops training at the end of the current round and raises KeyboardInterrupt. hessboost.cv cross-validates over shuffled folds, explicit folds, or a scikit-learn splitter.

Subclass TrainingCallback to stop on your own condition; after_iteration sees the round and the evaluation history, and returning True stops training with the rounds so far:

class StopAtTarget(hessboost.TrainingCallback):
    def after_iteration(self, iteration, evals_log):
        return evals_log["valid"]["auc"][-1] > 0.99  # True stops training


hessboost.train(
    {"objective": "binary:logistic", "eval_metric": "auc", "max_depth": 4},
    dtrain,
    1000,
    evals=[(dvalid, "valid")],
    callbacks=[StopAtTarget()],
)

DataFrames and categorical features

pandas and polars column names become feature names, and categorical columns (pandas category; polars Enum and Categorical) become native categorical features. A category's code is its position in the column's categories: a pandas column's or an Enum's declared categories, or a polars Categorical's values, sorted (as pandas infers them). The booster remembers each column's categories and re-codes a frame passed to predict (and the other prediction and calibration methods) whose categories are ordered differently or include unseen values (which count as missing), whichever library the frame is from:

import pandas as pd

df = pd.DataFrame({"color": pd.Categorical(["red", "blue", "red"] * 100), "size": np.arange(300.0)})
booster = hessboost.train({}, hessboost.DMatrix(df, label=np.arange(300.0)), 20)
booster.predict(df)

A DMatrix is coded once, when it is built, so it must have the features of every model or matrix it meets: predict and the calibrators check it against each model reading it, and train checks every evals matrix against dtrain and against xgb_model, and dtrain against xgb_model (continued training or refresh). Feature names (where both have them; predict(validate_features=False) skips them), which features are categorical, and each categorical feature's categories, in order, must match; a mismatch raises HessboostError naming the eval set and the feature. Build eval frames with the training frame's categories (for example valid["color"].cat.set_categories(train["color"].cat.categories) in pandas; in polars, an Enum of the training categories, since a Categorical missing some of its values has other categories). Codes without recorded categories (numpy data with feature_types=["c", ...]) are taken to be the other side's codes; only which features are categorical is compared, and a model continued on them keeps the earlier model's categories. ConformalizedQuantile.calibrate likewise needs its two models to share their features, and re-codes frames to whichever model records categories. The scikit-learn estimators re-code every eval_set frame to the training frame's categories and, with xgb_model, the training frame to the earlier model's.

scikit-learn

The estimators take XGBoost's scikit-learn parameter names, plus callbacks. Parameters left at None keep hessboost's defaults, and params={...} passes any other training parameter; fit(..., verbose=True) (or a period) prints rounds live:

from hessboost.sklearn import HessboostClassifier

model = HessboostClassifier(
    n_estimators=300, max_depth=4, learning_rate=0.1, early_stopping_rounds=20
)
model.fit(X_train, y_train, eval_set=[(X_valid, y_valid)])
model.predict_proba(X_test)
model.feature_importances_

HessboostRegressor (multi-target with a 2-D y), HessboostClassifier (any class labels), HessboostRanker (group= or qid=), and HessboostDistributionRegressor (dist:* objectives; predict returns means, predict_distribution the distributions) work with pipelines, clone, grid search, and pickling, and pass scikit-learn's estimator checks (except three documented deviations). import hessboost does not import scikit-learn; hessboost.sklearn needs it.

Model files

Method Formats
save_model(path, format=None) by extension: .json native JSON, .ubj XGBoost UBJSON, anything else native binary; or format="binary" | "json" | "xgboost-json" | "xgboost-ubjson"
Booster(path_or_bytes), load_model(...) any of the four, or a LightGBM 4.x text model (format="lightgbm", import only), detected from the content (ModelFormatError if it looks like none of them)
save_raw(format="binary") the same formats as bytes
pickle / copy native binary plus feature names, categories, and best_score

The native binary format is compressed, checksummed, and lossless; files load in subsequent releases. A LightGBM model (lightgbm.Booster.save_model) predicts LightGBM's values for inputs with missing values as NaN and categorical features as non-negative codes; models with no exact equivalent raise ModelFormatError:

booster.save_model("model.ubj")  # a file XGBoost loads; .json for native JSON
loaded = hessboost.Booster("model.ubj")  # format detected from the content
early = booster[:10]  # the first 10 boosting iterations, as a Booster

Modern modeling

Conformal intervals

SplitConformal wraps one single-output model in f(x) ± Q, where Q is the calibration set's quantile of |y - f(x)| — finite-sample 1 - alpha coverage for exchangeable rows:

from hessboost.conformal import SplitConformal

cal = SplitConformal.calibrate(booster, X_cal, y_cal, alpha=0.1)
lower, upper = cal.predict_interval(X_test).T

ConformalizedQuantile instead adjusts a quantile band [q_lo(x), q_hi(x)] by its calibration quantile, so it also tightens a band that over-covers. The band comes from two single-quantile models (calibrate), two outputs of one multi-quantile model (calibrate_outputs), or a dist:* model's central quantiles (calibrate_distribution):

from hessboost.conformal import ConformalizedQuantile

band = hessboost.train(
    {"objective": "reg:quantileerror", "quantile_alpha": [0.05, 0.95]},
    hessboost.DMatrix(X_train, y_train),
    200,
)
cqr = ConformalizedQuantile.calibrate_outputs(band, X_cal, y_cal, alpha=0.1)
lower, upper = cqr.predict_interval(X_test).T  # >= 90% coverage, finite-sample

Distributional boosting

A dist:* objective fits a predictive distribution per row instead of a point. predict_distribution returns a Distributions object whose summaries are vectorized over rows:

dist = hessboost.train({"objective": "dist:normal"}, hessboost.DMatrix(X_train, y_train), 300)
d = dist.predict_distribution(X_test)
means, stds = d.mean(), d.std()
lower, upper = d.interval(0.9).T
ll, score = d.log_prob(y_test), d.crps(y_test)

Virtual ensembles

A model trained with posterior_sampling (SGLB: langevin noise plus model_shrink_rate) carries its own posterior ensemble: count members rebuilt exactly from its model shrinkage, member-major ((count, rows) for single-output models), with each member's iteration count alongside:

sglb = hessboost.train({"posterior_sampling": True}, hessboost.DMatrix(X_train, y_train), 1000)
members, iterations = sglb.predict_virtual_ensembles(X_test, 10)
u = sglb.predict_uncertainty(X_test, 10)  # u.mean, u.knowledge, u.data, u.total

predict_uncertainty decomposes the ensemble à la CatBoost: knowledge (epistemic) uncertainty rises off the training data. Plain regression has only mean and knowledge (data/total are None); dist:* and classification models get the full decomposition.

Online updates

OnlineModel keeps a trained model with its training data and updates both in place as rows arrive or must be forgotten. Exact() retrains, so every update equals hessboost.train on the updated data bit for bit; Approximate(tolerance) (default, 0.1) keeps splits that still rank near the top and is faster for small changes. A refused, stopped, or interrupted (Ctrl-C) update changes nothing:

from hessboost.online import Approximate, OnlineModel

online = OnlineModel.train(
    {"tree_method": "hist", "max_depth": 6},
    hessboost.DMatrix(X_train, y_train),
    100,
    Approximate(0.1),
)
report = online.update(hessboost.DMatrix(X_new, y_new), deletions=[3, 17])
online.model.predict(X_test)  # online.data: the updated training rows

The report counts kept nodes, regrown subtrees, and refreshed rows (UpdateReport); OnlineModel.from_model resumes from a saved Booster and its training data. Updates need hist depth-wise trees without sampling or constraints and unweighted data.

Explainable boosting machines

{"booster": "ebm"} trains a cyclic GA2M with outer bags, FAST pairs, and per-bag early stopping. Every term's piecewise-constant shape function is readable from the model (NumericAxis edges or CategoricalAxis codes, plus a missing cell per axis); intercept plus shapes is the margin:

from hessboost import ebm

model = hessboost.train({"booster": "ebm"}, hessboost.DMatrix(X_train, y_train), 50)
shapes = ebm.shape_functions(model)
shapes.intercept, shapes.terms[0].values

A Boulevard EBM ({"booster": "ebm", "ebm_boulevard": True}) additionally supports confidence bands on its shapes via hessboost.inference.EbmInference.term_bands.

Boulevard inference

Boulevard boosting ({"booster": "boulevard"}) samples trees with dropout so the ensemble converges to a kernel ridge posterior, whose leaf kernel gives asymptotic confidence, prediction, and reproduction intervals for f(x). Refit the leaves on independent rows first (honest_refit), fit the kernel over those rows, then query any rows:

from hessboost.inference import BoulevardInference, honest_refit

trained = hessboost.train(
    {"booster": "boulevard", "eta": 0.8, "boulevard_dropout": 0.5, "subsample": 0.8},
    hessboost.DMatrix(X_struct, y_struct),
    200,
)
model = honest_refit(trained, X_values, y_values)  # leaves from independent rows
inference = BoulevardInference.fit(model, X_values, y_values, holdout=X_cal, holdout_label=y_cal)
lower, upper = inference.confidence_intervals(X_test, alpha=0.05).T  # for f(x)

The intervals are conditional on the tree structures: nominal for low-dimensional smooth signals after an honest refit, under-covering elsewhere (see the crate's inference docs). Booster.boulevard records how the model was trained.

Diffusion models

hessboost.diffusion fits nonparametric p(y | x) for scalar or vector labels (multimodal, skewed, heavy-tailed) by conditional diffusion or flow matching with GBDT score models, after Treeffuser and DiffGBM. sample returns (rows, n_samples, outputs) draws, deterministic per seed and step count (n_steps= overrides the model's); mean, quantiles, and crps summarize them:

from hessboost.diffusion import DiffusionModel, DiffusionParams, crps, quantiles

flow = DiffusionModel.fit(DiffusionParams.flow_matching(), X_train, y_train)
draws = flow.sample(X_test, 200, seed=0)  # (rows, 200, outputs) float32
bands = quantiles(draws, [0.05, 0.5, 0.95])  # (rows, 3, outputs)
scores = crps(draws, y_test)  # (rows, outputs)

DiffusionParams is a frozen dataclass tree with presets default(), treeffuser(), and flow_matching(); its training mappings are XGBoost parameters, as train reads them. Models save with to_bytes(format="binary") / save(path, format="binary") ("binary" or "json") and load with from_bytes(data, format="auto") / load(path, format="auto"), or pickle (which also keeps feature names and categories). fit releases the GIL but cannot be interrupted: Ctrl-C takes effect once it returns.

Synthetic tabular data

hessboost.diffusion.forest fits ForestFlow / ForestDiffusion models of whole rows (optionally per class of a label) with per-noise-level GBDTs. sample draws synthetic rows as a ForestSamples (values, plus labels for a class-conditional model); sample_for_labels draws one row per given label:

from hessboost.diffusion.forest import ForestModel, ForestParams

forest = ForestModel.fit(ForestParams.forest_diffusion(), X_with_nans)
synthetic = forest.sample(1000, seed=0)  # .values (1000, columns), .labels None

The diffusion variant also imputes missing values, keeping the observed entries (flow models refuse). Values are in the data's own coding:

filled = forest.impute(X_with_nans, n_imputations=5)  # (5, rows, columns)

ForestParams has presets forest_flow() (the defaults) and forest_diffusion(); its training mappings are XGBoost parameters, and models save and load like DiffusionModels.

GPU prediction

On macOS, Booster.to_gpu() lays the model out for batch prediction on Metal: the forest uploads once, and each call predicts bit-identically to Booster.predict (values or raw margins), faster from roughly a few thousand row-trees upward:

from hessboost import GpuModel

gpu = booster.to_gpu()
probabilities = gpu.predict(X_test)

Validation folds

hessboost.folds builds (train_rows, test_rows) splits for cv or custom loops: shuffled k_fold (what cv uses by default), forward_chaining expanding windows with a purged gap, and purged_forward (timestamped rows, purged by each row's own label window, for overlapping or irregular horizons):

from hessboost import folds

splits = folds.forward_chaining(dtrain.num_row(), 4, gap=24)
result = hessboost.cv({"max_depth": 4}, dtrain, 100, folds=splits)

Extra training options

Every hessboost training option (path_smooth, extra_trees, linear_tree, grow_policy="symmetric", use_quantized_grad, pos_bagging_fraction, neg_bagging_fraction, bagging_by_query, the dist:* objectives and their dist_gradient, rank:xendcg, ...) is a params key. XE-NDCG's keyed per-round random stream differs from LightGBM's rank_xendcg stream.

Differences from XGBoost's Python package

  • Errors: hessboost.HessboostError (a ValueError) for refused inputs, with subclasses InvalidDataError (data content: labels outside the objective's domain, negative weights, bad groups or bounds; the message names the input and any eval set), IncompatibleModelError (a model the parameters or data do not match: continued training, refresh, slicing) and ModelFormatError (model files); invalid or conflicting parameters raise HessboostError itself. TypeError for wrong types. Unsupported parameters are refused, including verbosity; missing belongs to DMatrix.
  • TrainingCallback.after_iteration(iteration, evals_log) -> bool sees the round and the evaluation history, not the model (XGBoost's also gets the booster and has before_training/after_training hooks); returning True stops training with the rounds so far. hessboost.cv has no callbacks and finishes its folds before Ctrl-C takes effect.
  • custom_metric(predictions, labels, weights) returns a float and is named by the function's __name__ (XGBoost passes a DMatrix and returns (name, value)). obj(margins, dtrain) matches XGBoost; the model then predicts margins from a zero intercept (or base_score). obj replaces objective, which params must then not set, and num_class is the custom objective's output count (XGBoost's custom-softmax convention; default: one per label column).
  • cv returns a dict of numpy arrays (test-<metric>-mean/-std) with held-out metrics only; there is no stratified or as_pandas.
  • predict defaults to the iterations through best_iteration (XGBoost's scikit-learn behavior); pass iteration_range=(0, 0) for all. SHAP and leaf ranges start at iteration 0; pred_leaf defaults to every iteration instead, and returns int32.
  • On macOS, Booster.to_gpu() lays the model out for GPU batch prediction on Metal (GpuModel.predict, bit-identical to Booster.predict; see whether a device exists with GpuModel.available()).
  • Model files do not store feature names or categories (pickles do).
  • Not available: DMatrix from files or QuantileDMatrix, inplace_predict (predict takes arrays directly), Booster.get_dump/trees_to_dataframe /dump_model, attributes (set_attr), plotting, distributed (Dask/Spark) and CUDA training, approx_contribs, and strict_shape. The macOS wheels support device="metal" (GPU histograms while training).

Development

From python/ in the repository, with uv:

uv sync --locked              # build the extension and install dev tools
uv run --locked pytest
uv run --locked pyright --verifytypes hessboost --ignoreexternal

Lint, format, and type-check all of the repository's Python from its root (configuration: ruff.toml, ty.toml):

uv run --project python --locked ruff check
uv run --project python --locked ruff format --check
uv run --project python --locked ty check

License

Apache-2.0.

Release files for hessboost 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hessboost 0.2.1
File Size Uploaded
hessboost-0.2.1.tar.gz 1.8 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for hessboost 0.2.1
File
hessboost-0.2.1-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
hessboost-0.2.1-cp314-cp314t-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 Details
hessboost-0.2.1-cp314-cp314t-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64 Details
hessboost-0.2.1-cp314-cp314t-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64 Details
hessboost-0.2.1-cp314-cp314t-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64 Details
hessboost-0.2.1-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
hessboost-0.2.1-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details
hessboost-0.2.1-cp311-abi3-musllinux_1_2_x86_64.whl CPython 3.11 abi3 Linux musl 1.2+ x86-64 Details
hessboost-0.2.1-cp311-abi3-musllinux_1_2_aarch64.whl CPython 3.11 abi3 Linux musl 1.2+ ARM64 Details
hessboost-0.2.1-cp311-abi3-manylinux_2_28_x86_64.whl CPython 3.11 abi3 Linux glibc 2.28+ x86-64 Details
hessboost-0.2.1-cp311-abi3-manylinux_2_28_aarch64.whl CPython 3.11 abi3 Linux glibc 2.28+ ARM64 Details
hessboost-0.2.1-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details

Total release size: 31.6 MB

Release files / hessboost-0.2.1.tar.gz

Download URL hessboost-0.2.1.tar.gz
Size 1.8 MB
Tags Source
SHA-256 checksum
How to use checksums
c6f404cbbc75bc80ed84fc4559801807018bd0bfb81ddd26ba477b58693726df
BLAKE2b-256 checksum
How to use checksums
d9b7ec34ffc6e10318449f0907972fbd6eeb24fdbcb18c7118eb56cb944110de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / hessboost-0.2.1-cp314-cp314t-win_amd64.whl

Download URL hessboost-0.2.1-cp314-cp314t-win_amd64.whl
Size 2.3 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
4f34084c1097e67d94f6bb3015adade2994b5f4c35ad241a23a29c73d3ca91db
BLAKE2b-256 checksum
How to use checksums
4a3a4c396bc522f37068e6c18ff8c474f32aac30a92a7782a434b224b712b5f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / hessboost-0.2.1-cp314-cp314t-musllinux_1_2_x86_64.whl

Download URL hessboost-0.2.1-cp314-cp314t-musllinux_1_2_x86_64.whl
Size 2.7 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
db6439b0c64386e1bb633e84f7d3baaaf07687b21c40ed2b1f34aaf13f8abf04
BLAKE2b-256 checksum
How to use checksums
1c53599c97bb190c4dc4a181283b8ff5b12720b32815fe2c95cb8e5cc4e0e56f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / hessboost-0.2.1-cp314-cp314t-musllinux_1_2_aarch64.whl

Download URL hessboost-0.2.1-cp314-cp314t-musllinux_1_2_aarch64.whl
Size 2.5 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
c913818680a2ea20155acd1e19bd231519dec0656277fffe08fcb6cfe80233b8
BLAKE2b-256 checksum
How to use checksums
71c952bf211e88c6c48f5633ce5e2dfbb053ec4f09b0db4a3dafa32773821861
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / hessboost-0.2.1-cp314-cp314t-manylinux_2_28_x86_64.whl

Download URL hessboost-0.2.1-cp314-cp314t-manylinux_2_28_x86_64.whl
Size 2.6 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
83561255ae5e6cc5e9e6c6e4c5ca38b64eb9e015a04cbcb91a85ac3b966d3c77
BLAKE2b-256 checksum
How to use checksums
120a0bb618225cc8a27cdfe9c51c0d95b9990b0535571d586226f6db29dd2648
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / hessboost-0.2.1-cp314-cp314t-manylinux_2_28_aarch64.whl

Download URL hessboost-0.2.1-cp314-cp314t-manylinux_2_28_aarch64.whl
Size 2.4 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
1ec2a5ce2023f4aa234f052455266f5581ff5d4f93eab1161aacd30eb6af7839
BLAKE2b-256 checksum
How to use checksums
894813626fead935a13a37e42ab31975ce9d5b04ebd0753905be713ccb74b246
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / hessboost-0.2.1-cp314-cp314t-macosx_11_0_arm64.whl

Download URL hessboost-0.2.1-cp314-cp314t-macosx_11_0_arm64.whl
Size 2.3 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d8ff050438406325c4d7adad7beb441dbf93979e0cc4fc5aede8382a4cf4a9a7
BLAKE2b-256 checksum
How to use checksums
2c377c5e3ec7b6cfdc42352ad0c276077bd042713bae55d15e56f374864641b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / hessboost-0.2.1-cp311-abi3-win_amd64.whl

Download URL hessboost-0.2.1-cp311-abi3-win_amd64.whl
Size 2.3 MB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
800a29918f5bfb6587ebc71ad0bc1e21e4d57c04a7c11b0c33b83742de5402ce
BLAKE2b-256 checksum
How to use checksums
4b750084220343eb2f2b39ce4ec79fea46a86dbaf54545b806ebf44e4945e5c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / hessboost-0.2.1-cp311-abi3-musllinux_1_2_x86_64.whl

Download URL hessboost-0.2.1-cp311-abi3-musllinux_1_2_x86_64.whl
Size 2.7 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
1785900c89d21c655a60692005f676ce77ff183ec1c613edbda063a0cfa89340
BLAKE2b-256 checksum
How to use checksums
c1f7b57468a0b922e307614b5adb7e914a1b319804ed9aebd5e600bcb424f395
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / hessboost-0.2.1-cp311-abi3-musllinux_1_2_aarch64.whl

Download URL hessboost-0.2.1-cp311-abi3-musllinux_1_2_aarch64.whl
Size 2.5 MB
Tags CPython 3.11 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
b46bb8c250c4253e92bd105fb051262ae674ebd83f3d7af5816f4320bf0875f4
BLAKE2b-256 checksum
How to use checksums
ea35660066084d6fe7476b24fce8ae5ebd1957755ebb2d0ce198c18c17b9475e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / hessboost-0.2.1-cp311-abi3-manylinux_2_28_x86_64.whl

Download URL hessboost-0.2.1-cp311-abi3-manylinux_2_28_x86_64.whl
Size 2.6 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
2158524f5f0e01bcf15f828f002de8d79f0c71094112dd137477b96a19ae1029
BLAKE2b-256 checksum
How to use checksums
7c8041ac432e6e284db1244bf6d0f388ce47d936decfd6fe7b024f625f6fc15f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / hessboost-0.2.1-cp311-abi3-manylinux_2_28_aarch64.whl

Download URL hessboost-0.2.1-cp311-abi3-manylinux_2_28_aarch64.whl
Size 2.4 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
9b29bdfda0fef793cffdd853886a9a46660ab3ed2718d2db42a799cc589b6c6a
BLAKE2b-256 checksum
How to use checksums
4ba62e07acd8cb9a0436df1f5abb09980dc6dec01d9c7d67481d9625b18273cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / hessboost-0.2.1-cp311-abi3-macosx_11_0_arm64.whl

Download URL hessboost-0.2.1-cp311-abi3-macosx_11_0_arm64.whl
Size 2.4 MB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d0145dade6d647964b500188182f3cbd2a121bec20b17e89d07a02be94cc2eb3
BLAKE2b-256 checksum
How to use checksums
0ef449c57b62505ffcf3d61865737120d5ee5d020b0a2600d0ca95e8f3c75b3e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.2

13 release files

This release

0.2.1 This release

13 release files

0.2.0

13 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page