Skip to main content

Gradient boosted decision trees for multiple outputs

Project description

OmniGBDT

OmniGBDT packages the original GBDT-MO algorithm as a regular Python library. It keeps the native C++ training core and adds modern Python packaging, cross-platform wheels, public custom-objective hooks, and optional sklearn-compatible wrappers.

The main public classes are MultiOutputGBDT and SingleOutputGBDT.

For the original project, benchmark figures, experiment scripts, and upstream research context, please see:

Installation

Install the released package

pip install omnigbdt

or with uv:

uv add omnigbdt

OmniGBDT targets wheel-based installs on:

  • Linux x86_64
  • Windows x86_64
  • macOS arm64 (Apple Silicon, 14+)

The GitHub Actions workflow builds these wheels in CI and publishes them on version tags matching v*.

Optional extras

Install plotting support if you want to render dumped trees with create_graph():

pip install "omnigbdt[plot]"

Install sklearn-compatible wrappers if you want to use tools such as permutation_importance:

pip install "omnigbdt[sklearn]"

The same extras can be installed with uv:

uv add "omnigbdt[plot]"
uv add "omnigbdt[sklearn]"

The optional sklearn wrappers are a fork-specific addition. They make it possible to use sklearn inspection utilities such as permutation-based feature importance:

Quick Start

Minimum workable example

The example below creates a multi-output regression problem with intentionally correlated targets. It compares:

  • one MultiOutputGBDT model trained on the full target matrix
  • one SingleOutputGBDT model per target column
import numpy as np
from omnigbdt import SingleOutputGBDT, MultiOutputGBDT, Verbosity

rng = np.random.default_rng(0)

n_samples = 512
n_features = 4
n_outputs = 3

X = rng.random((n_samples, n_features)).astype("float64")
shared_signal = (
    1.5 * X[:, 0]
    - 0.8 * X[:, 1]
    + 0.4 * np.sin(np.pi * X[:, 2])
)
target_specific = np.column_stack([
    0.3 * X[:, 2] * X[:, 3],
    -0.4 * X[:, 0] + 0.2 * X[:, 3],
    0.5 * X[:, 1] * X[:, 3],
])
shared_noise = 0.05 * rng.standard_normal(n_samples)[:, None]
independent_noise = 0.02 * rng.standard_normal((n_samples, n_outputs))
Y = np.column_stack([
    1.2 * shared_signal,
    0.9 * shared_signal,
    1.1 * shared_signal,
]).astype("float64")
Y += target_specific + shared_noise + independent_noise

params = {
    "loss": b"mse",
    "max_depth": 3,
    "lr": 0.1,
    "num_threads": 1,
    "verbosity": Verbosity.SILENT,
}

multi = MultiOutputGBDT(out_dim=n_outputs, params=params)
multi.set_data((X, Y))
multi.train(1)
multi_preds = multi.predict(X)

single_models = []
for col in range(n_outputs):
    model = SingleOutputGBDT(params=params)
    target = np.ascontiguousarray(Y[:, col])
    model.set_data((X, target))
    model.train(1)
    single_models.append(model)

single_preds = np.column_stack([model.predict(X) for model in single_models])

multi_rmse = np.sqrt(np.mean((multi_preds - Y) ** 2))
single_rmse = np.sqrt(np.mean((single_preds - Y) ** 2))

print("MultiOutputGBDT RMSE:", round(float(multi_rmse), 6))
print("SingleOutputGBDT-per-target RMSE:", round(float(single_rmse), 6))
print("Prediction shape from MultiOutputGBDT:", multi.predict(X[:3]).shape)
print("Prediction shape from stacked SingleOutputGBDT models:", single_preds[:3].shape)

Custom objectives

You can supply gradients and Hessians from Python with an XGBoost-style callback:

import numpy as np

from omnigbdt import MultiOutputGBDT, Verbosity


def mse_objective(preds, target):
    return preds - target, np.ones_like(preds)


def rmse_metric(preds, target):
    return float(np.sqrt(np.mean((preds - target) ** 2)))


rng = np.random.default_rng(0)
X_train = rng.random((256, 4)).astype("float64")
Y_train = rng.random((256, 3)).astype("float64")
X_valid = rng.random((64, 4)).astype("float64")
Y_valid = rng.random((64, 3)).astype("float64")

booster = MultiOutputGBDT(
    out_dim=Y_train.shape[1],
    params={
        "loss": b"mse",
        "max_depth": 3,
        "lr": 0.1,
        "early_stop": 2,
        "num_threads": 1,
        "verbosity": Verbosity.FULL,
    },
)
booster.set_data((X_train, Y_train), (X_valid, Y_valid))
booster.train(
    20,
    objective=mse_objective,
    eval_metric=rmse_metric,
    maximize=False,
)
preds = booster.predict(X_valid)
print(preds.shape)

Notes:

  • SingleOutputGBDT.train(..., objective=...) expects 1D preds and target arrays.
  • MultiOutputGBDT.train(..., objective=...) expects 2D arrays shaped (n_samples, out_dim).
  • loss must still be a supported built-in native loss name such as b"mse" because the native booster validates it at construction time, but custom rounds use your Python callback instead of the built-in objective.
  • If early_stop > 0 on the custom-objective path, you must also provide eval_set, eval_metric, and maximize.
  • The protected _set_gh(...) plus boost() workflow still exists as an advanced manual escape hatch.

Permutation importance with sklearn

Install the optional sklearn extra first:

pip install "omnigbdt[sklearn]"

or with uv:

uv add "omnigbdt[sklearn]"

Then use the sklearn-compatible multi-output wrapper with permutation importance:

import time

import numpy as np
from sklearn.inspection import permutation_importance

from omnigbdt import MultiOutputGBDTRegressor

rng = np.random.default_rng(0)
X = rng.random((256, 4)).astype("float64")
shared_signal = (
    1.2 * X[:, 0]
    - 0.7 * X[:, 1]
    + 0.3 * np.sin(np.pi * X[:, 2])
)
shared_noise = 0.05 * rng.standard_normal(256)[:, None]
Y = np.column_stack([
    1.1 * shared_signal + 0.2 * X[:, 3],
    0.9 * shared_signal - 0.3 * X[:, 0],
    1.0 * shared_signal + 0.4 * X[:, 1] * X[:, 3],
]).astype("float64")
Y += shared_noise + 0.02 * rng.standard_normal((256, 3))

model = MultiOutputGBDTRegressor(
    num_rounds=10,
    max_depth=3,
    num_threads=1,
)
model.fit(X, Y)

start_time = time.time()
result = permutation_importance(
    model,
    X,
    Y,
    scoring="r2",
    n_repeats=10,
    random_state=42,
    n_jobs=1,
)
elapsed_time = time.time() - start_time

print(f"Elapsed time: {elapsed_time:.3f} seconds")
print(result.importances_mean)

The sklearn-compatible wrappers also accept objective=..., eval_metric=..., and maximize=..., and forward them to the same custom-objective training path.

Source and Development Installs

Install from source

pip install .

or with uv:

uv add ./OmniGBDT

On Windows, use either uv add .\\OmniGBDT or uv add ./OmniGBDT. Do not use uv add OmniGBDT without ./ or .\\, because that asks the package registry for a published package named omnigbdt instead of using the local folder.

Use OmniGBDT inside an existing uv project

Add OmniGBDT as a normal released dependency:

uv add omnigbdt

Add a sibling checkout as an editable dependency while developing two projects side by side:

uv add --editable ../OmniGBDT

If you copy the OmniGBDT folder inside an existing uv workspace and run:

uv add ./OmniGBDT

then uv may treat it as a workspace member. If you want it to remain a plain path dependency, use:

uv add --no-workspace ./OmniGBDT

On Windows, the same commands are:

uv add .\\OmniGBDT
uv add --no-workspace .\\OmniGBDT

The equivalent manual configuration in pyproject.toml is:

[project]
dependencies = ["omnigbdt"]

[tool.uv.sources]
omnigbdt = { path = "../OmniGBDT", editable = true }

Windows source builds

Local installs (uv add ./OmniGBDT or pip install .) compile the native C++ library during installation.

So on Windows, you must install first:

  • Visual Studio Build Tools 2022 (or Visual Studio 2022)
  • the Desktop development with C++ workload
  • MSVC build tools and a working OpenMP-capable compiler

If CMake fails with an error such as:

Running 'nmake' '-?' failed with: no such file or directory
CMAKE_CXX_COMPILER not set, after EnableLanguage

then the package is being built from source but the MSVC toolchain is not available in the current shell.

In this case, try:

  1. Installing Visual Studio Build Tools 2022 with the C++ workload.
  2. Reopening the terminal from x64 Native Tools Command Prompt for VS 2022.
  3. Rerun uv add ./OmniGBDT or pip install ..

If the toolchain is already installed, also check that CMAKE_GENERATOR is not forcing NMake Makefiles in a shell where nmake.exe is unavailable.

What OmniGBDT Adds

Compared with the upstream GBDTMO repository, OmniGBDT:

  • replaces the old make.sh and manual shared-library workflow with standard Python packaging
  • bundles the native library inside the Python package
  • keeps load_lib(path=None) for advanced or compatibility workflows
  • adds wheel automation for Linux, macOS, and Windows
  • adds public Python callback hooks for custom gradients, Hessians, metrics, and early stopping
  • adds optional sklearn-compatible wrappers so users can apply sklearn inspection tools such as permutation-based feature importance

Core native-code deviations from upstream GBDT-MO

Most changes in this fork are packaging and distribution changes. The native C/C++ training code has only been changed in a few targeted ways so far:

  • stricter min_samples enforcement during split scoring: candidate split points are rejected unless both child branches satisfy min_samples
  • safe child-node materialization after a split: if a branch cannot be split further, it is emitted as an explicit leaf instead of being left implicit or partially unassigned
  • proper root-leaf fallback: if no valid split exists at the root, the model stores a true single-leaf tree and prediction, dump, and load work cleanly for that case

As a consequence, same-seed runs do not necessarily match older buggy runs exactly. Trees can be smaller because invalid small-child splits are filtered earlier, and the control flow through the native code changes accordingly.

Outside of those fixes, the core objective functions, histogram-based split search, and overall training structure are still inherited from the original repository.

Project Provenance

This fork builds directly on the original GBDT-MO implementation by Zhendong Zhang and Cheolkon Jung.

OmniGBDT is intended to make the package easier to build, install, and distribute. It is not the canonical source for the paper, benchmark tables, figures, or research documentation.

For evaluation metrics, dataset-specific experiments, and extended project context, please refer to:

Development

Run tests

For local development with uv, sync the project together with the optional test dependencies:

uv sync --extra test

Then run the test suite with:

uv run pytest

If you only want the smoke coverage in this repository, you can run:

uv run pytest tests/test_smoke.py

Build the documentation locally

The hosted documentation is configured through the repository-level .readthedocs.yaml file and the pinned dependencies in docs/requirements.txt.

To preview the docs locally with the same Sphinx dependency set used on Read the Docs, run:

uv run --no-project --with-requirements docs/requirements.txt sphinx-build -W -n -b html docs _build/html

Build the native library directly

To build the native library:

cmake -S . -B build
cmake --build build --config Release

Versioning

This fork follows Semantic Versioning independently from the upstream GBDT-MO repository.

License

This fork is distributed under the Apache License 2.0. The main license text for this fork is in LICENSE.

Because this repository incorporates and modifies the original GBDT-MO codebase, the original upstream MIT license notice from Zhendong Zhang is preserved in LICENSE.upstream. Additional attribution and fork-specific notice text is provided in NOTICE.

Citation

If you use this project in research, please credit the original paper by Zhang and Jung:

@article{zhang2020gbdt,
  title={GBDT-MO: Gradient-boosted decision trees for multiple outputs},
  author={Zhang, Zhendong and Jung, Cheolkon},
  journal={IEEE transactions on neural networks and learning systems},
  volume={32},
  number={7},
  pages={3156--3167},
  year={2020},
  publisher={Ieee}
}

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

omnigbdt-0.2.0.tar.gz (88.2 kB view details)

Uploaded Source

Built Distributions

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

omnigbdt-0.2.0-cp313-cp313-win_amd64.whl (86.8 kB view details)

Uploaded CPython 3.13Windows x86-64

omnigbdt-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (206.1 kB view details)

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

omnigbdt-0.2.0-cp313-cp313-macosx_14_0_arm64.whl (331.0 kB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

omnigbdt-0.2.0-cp312-cp312-win_amd64.whl (86.8 kB view details)

Uploaded CPython 3.12Windows x86-64

omnigbdt-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (206.1 kB view details)

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

omnigbdt-0.2.0-cp312-cp312-macosx_14_0_arm64.whl (331.0 kB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

omnigbdt-0.2.0-cp311-cp311-win_amd64.whl (86.8 kB view details)

Uploaded CPython 3.11Windows x86-64

omnigbdt-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (206.1 kB view details)

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

omnigbdt-0.2.0-cp311-cp311-macosx_14_0_arm64.whl (331.0 kB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

omnigbdt-0.2.0-cp310-cp310-win_amd64.whl (86.8 kB view details)

Uploaded CPython 3.10Windows x86-64

omnigbdt-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (206.1 kB view details)

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

omnigbdt-0.2.0-cp310-cp310-macosx_14_0_arm64.whl (331.0 kB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

File details

Details for the file omnigbdt-0.2.0.tar.gz.

File metadata

  • Download URL: omnigbdt-0.2.0.tar.gz
  • Upload date:
  • Size: 88.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for omnigbdt-0.2.0.tar.gz
Algorithm Hash digest
SHA256 17156d5fe0c940ec6d7b0b4d1a418a1d22927867de7b382f26ded6d9e12104a9
MD5 b38f8ab14d837b178158437c330cf6e2
BLAKE2b-256 f0c8bfdff3242be6042d182c1ff032dcfafe74389215b9020dd8be3a98357965

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.2.0.tar.gz:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

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

File details

Details for the file omnigbdt-0.2.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: omnigbdt-0.2.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 86.8 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for omnigbdt-0.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 65dba11eb3895cca652aa3d3fcfd1daba19c32a063101af6d012fdf6e02c33f3
MD5 b1cd614917c5bd033f758df2d79c84ff
BLAKE2b-256 c61e8f95f1a6dd4f85462cd5bdcf39a87e15fcfe917a49394dbde42b8988e3a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.2.0-cp313-cp313-win_amd64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

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

File details

Details for the file omnigbdt-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omnigbdt-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 887552ad021bd1e0ca6d0f78862bae6a43c1c518e69b8e9e9b09fafee1dc188f
MD5 429ea879971c8a842bf60809050f9cd1
BLAKE2b-256 4af28442f65d259f223a1b9cf8f8455b30a39dde23f468063dae19c3352d8104

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

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

File details

Details for the file omnigbdt-0.2.0-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for omnigbdt-0.2.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 1fda15cbda719761a6d518f6bfec5c1bca9d3bee6793beb571b709869a11677e
MD5 681e311c1bcc2902e24ef5147f25ad5e
BLAKE2b-256 d87e8eef633dc9d37ede1f4b23d78287aebefff53b5ca4145cb2eb5f7669fc2c

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.2.0-cp313-cp313-macosx_14_0_arm64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

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

File details

Details for the file omnigbdt-0.2.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: omnigbdt-0.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 86.8 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for omnigbdt-0.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ba66d26e5cb7b16d88854c6b58bbd10a951506c87c6a88cd3f281099e101e200
MD5 95b87bdd1a730594eb5462a379281770
BLAKE2b-256 398e52d09425a6cc56e511a434bfeffab40baef198aec8a63275cf57ea6770ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.2.0-cp312-cp312-win_amd64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

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

File details

Details for the file omnigbdt-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omnigbdt-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 635cd154dbd107305dab680dc6772d601a84b1c9c9af0c6acfb9cb0c076785cf
MD5 760e616ee95e76ea80516e2b5e66267f
BLAKE2b-256 dfcee929bece788cfd2c4e963362c900508a8947530bfc43ccf21260bfac47f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

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

File details

Details for the file omnigbdt-0.2.0-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for omnigbdt-0.2.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 916deee464563bdb4d09abcb98f1b14605078524b252bdfe6c25d7934a28e7d7
MD5 ca2ed0cd58d9c25e67338a9d1cdf4c27
BLAKE2b-256 4147a859e28ca578d8227539fab2a2e281c764ffe795861ab9a2dedeaea5cd25

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.2.0-cp312-cp312-macosx_14_0_arm64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

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

File details

Details for the file omnigbdt-0.2.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: omnigbdt-0.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 86.8 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for omnigbdt-0.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ba4e1e2394890f7aa97524f40774ac02b1a89bef3649b7326b83dfdaa3849f2f
MD5 6e31f4cd420c4f1613a3e8c8562b6da3
BLAKE2b-256 e475925f6d959839103c159f429ca4983ba82b7f3c9c8cafea84a74338c1fa8c

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.2.0-cp311-cp311-win_amd64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

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

File details

Details for the file omnigbdt-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omnigbdt-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dacc86d2f387f2139328efc2563d0dfaf6970405d8e39c5f1f3465ff0939b147
MD5 0dca287c0a6b2cd7d9e63bcb8cbaab8f
BLAKE2b-256 d39a9a6de852034b8147809ca6e63567f281359ffe7a28558c4eb0eae5bc9fe2

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

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

File details

Details for the file omnigbdt-0.2.0-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for omnigbdt-0.2.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 3a00330c2a57ba2facc49d31b52a6f6850cae524723171f16318d82543b91421
MD5 96f8373302e225130fb1a981b851173e
BLAKE2b-256 6db1bec4775d92c9bb37fc7c9dfd6c6213ac4446b976426d4054ab1825e76bf4

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.2.0-cp311-cp311-macosx_14_0_arm64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

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

File details

Details for the file omnigbdt-0.2.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: omnigbdt-0.2.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 86.8 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for omnigbdt-0.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4b050f94ecc1b7f9ed4caf696a34b251823ecb35c97d76b06cf7a421e754b3aa
MD5 715680602d4a3ceca8aea6c76d142814
BLAKE2b-256 712292a0e389cc119eac754a2644c72429b099d964105f38f8fa2b35b69aaedf

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.2.0-cp310-cp310-win_amd64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

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

File details

Details for the file omnigbdt-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omnigbdt-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3db6ebe5f0cfce6c1e52b61f14ebe76b75a9c0be3fd383e1cb11eb181bfb8c58
MD5 8d5488a178ef8513a2ef152c0004fed4
BLAKE2b-256 74f3d8d2ccb81af21da0f892981df075a8b9a915accff65d95b511bd2ee65e31

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

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

File details

Details for the file omnigbdt-0.2.0-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for omnigbdt-0.2.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 242360a80a38e86076ed725b9297c1eefc43955d42058ad759396499eb50d3ba
MD5 9c82887de032c7c5d2316c843453b217
BLAKE2b-256 3b2f093dfe4d97acfcaeaf62f713b246403163676679b07bfc695d68f5faa7d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.2.0-cp310-cp310-macosx_14_0_arm64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

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