MiniBoosts for Python
Python bindings for the Rust MiniBoosts library, with algorithm-specific, scikit-learn-style binary classifiers. Boosting and aggregation use the Rust implementations; weak learners can be native Rust learners or Python/sklearn estimators.
Try the algorithms in the browser with the interactive demo.
Install
Requires Python 3.10+, NumPy 1.24+, and scikit-learn 1.6+ (below 2):
python -m pip install miniboosts
Prebuilt wheels cover Linux (glibc and musl; x86_64 and aarch64), macOS (x86_64 and arm64), and Windows (x64 and arm64), for every CPython from 3.10 (one abi3 wheel per platform). On other platforms pip builds the source distribution, which needs Rust 1.85+.
To install from a checkout instead, run this from the repository root:
python -m pip install ./python
The Rust crate remains usable without Python or PyO3; python/ is a separate
Cargo package that is published to PyPI only.
For development:
python -m pip install 'maturin>=1.9,<2' 'pytest>=8' 'numpy>=1.24' 'scikit-learn>=1.6,<2'
maturin develop --manifest-path python/Cargo.toml --release
python -m pytest python/tests
Train and predict
import numpy as np
from miniboosts import AdaBoostClassifier, DecisionTreeClassifier
X = np.array([[-2.0], [-1.0], [1.0], [2.0]])
y = np.array(["cat", "cat", "dog", "dog"])
model = AdaBoostClassifier(
estimator=DecisionTreeClassifier(max_depth=1),
tolerance=0.01,
max_iterations=100,
)
model.fit(X, y) # warns: 'cat' -> -1, 'dog' -> +1
labels = model.predict(X) # original labels
scores = model.decision_function(X)
fit(X, y) returns the same estimator and always starts a fresh fit. Predictions
before a successful fit raise sklearn.exceptions.NotFittedError. A failed
refit discards the previous model. Constructors only store configuration.
Inputs must be dense, finite real numeric matrices and one-dimensional binary
labels (finite numbers, booleans, or strings; do not mix text and numbers). classes_ gives the sorted classes:
classes_[0] maps to -1 and classes_[1] to +1. Conversion emits one
UserWarning per fit showing the mapping; labels already equal to -1/+1 need
no warning. Missing labels, one class, and more than two classes are errors.
A zero ensemble score predicts classes_[1].
decision_function preserves the Rust algorithm's aggregation and scale. It
is not a probability, and the ensemble has no imposed [-1, +1] bound.
get_params, set_params, sklearn.base.clone, Pipeline, and sequential
GridSearchCV are supported. Full sklearn estimator-check compliance is not
claimed.
Choose a weak learner
The default estimator=None uses DecisionTreeClassifier(max_depth=1)
(RegressionTreeRegressor() for the regression boosters below).
A custom learner should implement sklearn's estimator cloning convention
(e.g. inherit BaseEstimator and expose constructor parameters), and:
fit(X, y, sample_weight=weights)trains on encoded -1/+1 labels and the boosting distribution. It must actually use those sample weights.decision_function(X)returns a numeric vector of shape(len(X),). Every value must be finite and within [-1, +1]. Positive confidence means the +1 class. If the learner exposesclasses_, it must be[-1, +1].
GradientBoostingClassifier and LogitBoostClassifier instead need a
regression weak learner, such as sklearn's DecisionTreeRegressor or the
native RegressionTreeRegressor:
fit(X, z, sample_weight=weights)fits the real-valued working responsez(pseudo-residuals for gradient boosting, the clipped Newton response for LogitBoost) under the given weights (uniform for gradient boosting).predict(X)returns a finite numeric vector of shape(len(X),); the values are unbounded.
Each boosting round fits an independent clone. The original estimator is not modified. Predictions must be deterministic for a fitted learner and fixed inputs: Rust caches training scores. Set random seeds on stochastic learners for reproducible training.
Invalid confidence raises an error during training or prediction, with the
learner class, round, row (zero-based), and value for range/nonfinite failures.
There is no clipping or automatic score/probability transformation. Exceptions
raised by custom learners propagate to the caller. Rust algorithm failures and
numerical solver stops of SoftBoost, TotalBoost, BrownBoost, RobustBoost,
gradient boosting, and LogitBoost raise RuntimeError.
Many sklearn estimators have unbounded decision_function outputs or only
provide predict. To explicitly use hard predictions as -1/+1 weak scores:
from sklearn.tree import DecisionTreeClassifier as SklearnTree
from miniboosts import AdaBoostClassifier, PredictionAdapter
model = AdaBoostClassifier(
estimator=PredictionAdapter(SklearnTree(max_depth=2, random_state=0)),
max_iterations=100,
)
model.fit(X, y)
PredictionAdapter discards confidence magnitude. Its wrapped estimator must
accept sample_weight. It does not silently rescue invalid confidence from a
learner passed directly to a booster.
Native weak learners
These wrap the Rust weak learners. Each can also be used on its own: its fit
accepts sample_weight (normalized to a distribution), and labels are encoded
as for the boosters. Rust failures (e.g. non-convergence) raise RuntimeError.
| Python class | Parameters (defaults) | Hypothesis |
|---|---|---|
DecisionTreeClassifier |
max_depth=1 |
Entropy-split tree with bounded leaf confidence |
BoundedLinearClassifier |
none | Edge-maximizing (w·x + b) / S, ‖(w, b)‖₂ ≤ 1, S = √(R² + 1) |
LogisticRegressionClassifier |
regularization=1e-4, output="sign" |
Weighted L2-regularized logistic regression |
NaiveBayesClassifier |
var_smoothing=1e-9 |
Weighted Gaussian naive Bayes, P(+1∣x) − P(−1∣x) |
RBFClassifier |
bandwidth (required), centers=None |
Edge-maximizing Gaussian bump ±exp(−‖x − c‖² / (2σ²)) |
FiniteClassClassifier |
hypotheses (required), with_negations=False |
Edge-maximizing member of a fixed list |
RegressionTreeRegressor |
max_depth=3, n_bins=None |
Weighted least-squares regression tree (for regression boosters) |
RegressionTreeRegressor considers every split between consecutive distinct
values of a feature (threshold at the midpoint) when the feature has at most
n_bins distinct values (default cap 255); above the cap it uses n_bins
equal-width bins, and the best split may be missed.
BoundedLinearClassifierexactly maximizes the edge over its class;Ris the largest training-row norm, and confidences outside that radius are clamped to [-1, +1]. Boosting it yields a single linear function. The class depends on feature scale.LogisticRegressionClassifierminimizes a surrogate loss and need not maximize the edge (it can return a zero-edge hypothesis on symmetric data).output="sign"gives a halfspace;"tanh"givestanh((w·x + b)/2). The bias is regularized too.NaiveBayesClassifieruses weighted means, variances, and priors; it has no edge guarantee. With uniform weights it matches sklearn'sGaussianNB.RBFClassifierchooses among bumps centered at the training rows indexed bycenters(all rows by default). After fitting,center_index_,center_, andsign_describe the chosen bump. The class has no bias term, and each fit evaluates every bump on every row (O(n k d)forkcenters).FiniteClassClassifiertakes already fitted objects withdecision_functionvalues in [-1, +1] and selects the one with the largest weighted edge (-htoo withwith_negations=True; ties go to the smaller index, then to+h).index_,sign_, andhypothesis_describe the choice.clonekeeps the same hypothesis objects instead of refitting copies; do not mutate them.
Algorithms and parameters
All boosters accept estimator=None and max_iterations=100 (SparsiBoost and
boost-by-majority: None, see below). The latter is a hard cap on calls to the Rust boosting
step; the algorithm may stop earlier.
| Python class | Additional parameters (defaults) |
|---|---|
AdaBoostClassifier |
tolerance=0.01 |
AdaBoostVClassifier |
tolerance=0.01 |
ArcGvClassifier |
none |
BoostByMajorityClassifier |
gamma (required), tolerance=0.01, max_iterations=None |
BrownBoostClassifier |
tolerance=0.1, edge_threshold=1e-3 |
GradientBoostingClassifier |
loss="logistic", shrinkage=1.0 (regression weak learner) |
LogitBoostClassifier |
max_response=4.0 (regression weak learner) |
MadaBoostClassifier |
tolerance=0.01 |
LPBoostClassifier |
nu=1.0, tolerance=0.01 |
ERLPBoostClassifier |
nu=1.0, tolerance=0.01 |
CorrectiveERLPBoostClassifier |
nu=1.0, tolerance=0.01, update_rule="short_step" |
MLPBoostClassifier |
nu=1.0, tolerance=0.01, update_rule="line_search" |
RobustBoostClassifier |
tolerance=0.1, theta=0.0, sigma_f=0.1 |
SmoothBoostClassifier |
gamma=0.25, kappa=0.1 |
SoftBoostClassifier |
nu=1.0, tolerance=0.01 |
SparsiBoostClassifier |
n_hypotheses=None, tolerance=None, seed=0, max_iterations=None |
TotalBoostClassifier |
tolerance=0.01 |
GraphSeparationBoostingClassifier |
none |
tolerance has the original algorithm-specific meaning: an iteration-budget
parameter for AdaBoost/MadaBoost, a margin-update and budget parameter for
AdaBoostV, or an optimization stopping tolerance for the LP-based methods.
Equal values do not imply equal accuracy. nu lies in [1, number of examples]
and caps example weights at 1/nu. SmoothBoost requires 0 < gamma < 0.5 and
0 < kappa < 1; its weak-learning assumption must hold on each distribution.
update_rule accepts classic, short_step, or line_search.
BrownBoost's tolerance is the target training error ε in (0, 1), which
sets the total time c = (erfc⁻¹(ε))²; edge_threshold is ν in [0, 1).
BrownBoost has no iteration bound, so max_iterations matters. After fitting,
total_time_ is c and remaining_time_ is the time left: ≤ 0 means the
loop exited, which is when Theorem 2 of Freund (2001) bounds the training error
by ε. A positive value means training stopped early and the bound does not
apply.
RobustBoost (Freund, 2009) is a BrownBoost variant for label noise.
tolerance is the error goal ε in (0, 1), theta ≥ 0 the goal margin (on the
scale of the unnormalized scores; choose it by cross-validation), and
sigma_f > 0 the final width. remaining_time_ is 1 - t: 0 means the
clock reached 1, so at most a fraction 2ε of the training scores y H(x) are
at most theta (and so at most 2ε of the training examples are
misclassified). A positive value means training stopped early.
Arc-gv (Breiman, 1999) converges to the best minimal margin only
asymptotically, so max_iterations is the round limit. "algorithm_stop"
means a step of size 0: the weak hypothesis does not beat the current minimal
margin, which certifies the optimum only if the weak learner minimizes the
weighted loss over its class.
Boost-by-majority (Freund, 1995) is not adaptive: gamma in (0, 1/2) is the
assumed advantage (weighted error at most 1/2 - gamma) and tolerance the
target training error. It combines k = ⌈ln(1/tolerance) / (2 gamma²)⌉
hypotheses (n_rounds_) by an unweighted vote of their predicted signs, so
decision_function is the mean vote. With max_iterations=None all k rounds
can run; decided_early_ is True if training stopped because every
example's final vote was already decided. If the advantage assumption fails,
the bound exp(-2 gamma² k) ≤ tolerance on the training error does not apply.
Gradient boosting (Friedman, 2001) fits each regression weak learner to the
pseudo-residuals with uniform weights, line-searches the step, and multiplies
it by shrinkage in (0, 1]. loss is "logistic" (binomial deviance),
"exponential", or "squared". LogitBoost (Friedman, Hastie, and Tibshirani,
2000) takes Newton steps on the binomial log-likelihood, fitting the working
response clipped to [-max_response, max_response] (max_response ≥ 1) by
weighted least squares. Both run exactly max_iterations rounds unless they
stop early, and give no training-error bound. After fitting, intercept_ and
coefficients_ give the additive score F = intercept_ + Σ coefficients_[t] h_t(x) over the kept hypotheses; decision_function is tanh(F) (F
clamped to [-1, +1] for the squared loss), the class-probability difference
when F is half the log-odds.
SparsiBoost needs n_hypotheses (at most T output hypotheses), tolerance
(target gap v), or both; the size cap takes precedence. It runs AdaBoostV
for a round count derived from the target, then sparsifies the ensemble with a
seeded randomized discrepancy step (equal seeds give equal results). With
max_iterations=None all of these rounds run; a smaller cap truncates
AdaBoostV and voids the guarantee. After fitting, adaboostv_rounds_ and
adaboostv_tolerance_ give the AdaBoostV stage, n_selected_ the number of
hypotheses with nonzero weight (possibly fewer than T),
sparsification_error_ the largest change of a training margin, and
sparsification_within_tolerance_ whether it is at most v/2 (None without
a tolerance). estimators_ holds all AdaBoostV-round learners, including
those the sparsification dropped.
See the repository README and the Rust documentation for references and guarantees.
After fitting, n_iter_ records the number of successfully produced weak
learners, excluding terminal calls that do not train a learner. stop_reason_ is "max_iterations",
"algorithm_stop", or one of the algorithm-specific values below. "algorithm_stop" is an algorithm stop, not a generic
convergence certificate. "round_budget" means SmoothBoost reached its
theoretical round bound without its stopping test firing, so its margin
guarantee does not apply. "edge_threshold" means a BrownBoost weak hypothesis
had weighted correlation at most edge_threshold; it was discarded, training
stopped before the time ran out, and Theorem 2 does not apply.
"nonpositive_edge" is the same for a RobustBoost weak hypothesis with
nonpositive weighted correlation. "zero_hypothesis" means a gradient
boosting weak learner predicted 0 on every training row, so the step is
undefined. "no_minimizer" means that, for the logistic or exponential loss,
the weak hypothesis ordered every training example correctly
(y h(x) ≥ 0), so the loss decreases for every step size and the line search
has no minimizer; on small or separable data a deep tree can cause this in
round 1, leaving only the intercept (use a shallower tree or the squared loss). "weights_underflow" means every LogitBoost weight p(1 - p)
underflowed to 0 (the training scores have saturated); it is detected before
the weak learner is called. In the other cases the candidate of the last
round is discarded.
estimators_ and estimator_rounds_ expose all successfully
produced candidates, including candidates discarded by the Rust algorithm.
Do not mutate these fitted learners or lists.
Current limits
This first binding supports dense binary classification. It does not yet
provide sparse inputs, multiclass, model persistence/pickling, predict_proba,
or an interactive UI. Do not share a fitted model across concurrent prediction
calls. Process-based workflows that serialize fitted native models are not
supported. Native weak-learner fitting releases the Python GIL; the entire boosting
loop does not. Array conversion and callback copies incur overhead, so include
them when reporting Python-facing timings. Training caches use O(nT) memory
for n examples and T candidate learners, in addition to algorithm-specific
storage. Free-threaded CPython builds are not supported.
Metadata
Release files for miniboosts 0.5.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| miniboosts-0.5.2.tar.gz | 329.9 kB | With provenance | Details for miniboosts-0.5.2.tar.gz |
Built distributions (wheels)
Total release size: 7.6 MB
Release files / miniboosts-0.5.2.tar.gz
| Download URL | miniboosts-0.5.2.tar.gz |
|---|---|
| Size | 329.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
62d73ba69796563de39605d4a86942bbbe25a27772bbd24774dab8d3f76d4eb2
|
|
BLAKE2b-256 checksum How to use checksums |
67ddae23dec3b3c80175fcb9c93b9066f9b67b7babf3520be532bb97478b0567
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 3, 2026.
Transparency logRelease files / miniboosts-0.5.2-cp310-abi3-win_arm64.whl
| Download URL | miniboosts-0.5.2-cp310-abi3-win_arm64.whl |
|---|---|
| Size | 677.7 kB |
| Tags | CPython 3.10 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
7b22e8353cfb5dc1dd36e5d2b2c73d59a84191e08ef5035551082a14f4f99888
|
|
BLAKE2b-256 checksum How to use checksums |
a891e1b60775fc5676a577bb864db1d2e6613c227cad25c14af3a250ae90a652
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 3, 2026.
Transparency logRelease files / miniboosts-0.5.2-cp310-abi3-win_amd64.whl
| Download URL | miniboosts-0.5.2-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 740.5 kB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
66fc294325feb4c31c75896b43d3a185d6e5056c5977fc4181b3635164590d05
|
|
BLAKE2b-256 checksum How to use checksums |
c2dc226454cf6386f5bfc186ec2a95c71af167e66d57e51bdf1f473f43dc85bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 3, 2026.
Transparency logRelease files / miniboosts-0.5.2-cp310-abi3-musllinux_1_2_x86_64.whl
| Download URL | miniboosts-0.5.2-cp310-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
05817ae8b005533a2e44b68dbd597f1f994f9e48707b52a68ee6ac022a1d52dd
|
|
BLAKE2b-256 checksum How to use checksums |
61aac4d217b65be7d04dcde037ae605f234abfef71e96e816602ba8faf929595
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 3, 2026.
Transparency logRelease files / miniboosts-0.5.2-cp310-abi3-musllinux_1_2_aarch64.whl
| Download URL | miniboosts-0.5.2-cp310-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.10 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
7fb273745a737ac17bdad685f96b139c501cc7205baa14cc40b0ba7dd42390d6
|
|
BLAKE2b-256 checksum How to use checksums |
ed70f0a83f3eb705a99276d1e94dc59494b4a4f799d18a016e7a4210c3a68290
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 3, 2026.
Transparency logRelease files / miniboosts-0.5.2-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
| Download URL | miniboosts-0.5.2-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
|---|---|
| Size | 944.9 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
42af48f3a82e7ed424ee8bf50081162e6a7d5331f77a61b0b3964b94ca9cc10e
|
|
BLAKE2b-256 checksum How to use checksums |
a83324ace3d3a40eebba8ad70ff65a1d745a79108d79ab123160ccfd86dedbfe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 3, 2026.
Transparency logRelease files / miniboosts-0.5.2-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
| Download URL | miniboosts-0.5.2-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl |
|---|---|
| Size | 916.3 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
64ac5f9d4440cf478adec9fea99a11e6f101842bac19d30b96d19712767c4b34
|
|
BLAKE2b-256 checksum How to use checksums |
9384cb46ed61c441ba6038f5aa9f248f276af4b6a2038e8ec8091f9dedaf1865
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 3, 2026.
Transparency logRelease files / miniboosts-0.5.2-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | miniboosts-0.5.2-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 834.9 kB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
8e839432b9e0fadfec2eb886c476fa64cf42c1f51f2403b7215dea64a72cdc5b
|
|
BLAKE2b-256 checksum How to use checksums |
5ad6e465057dd9abfbc47c8535830e391425547ac9c5bfae7c23d583b23d4207
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 3, 2026.
Transparency logRelease files / miniboosts-0.5.2-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | miniboosts-0.5.2-cp310-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 857.2 kB |
| Tags | CPython 3.10 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
8f6809acc8941171062f3b47a75628b8157641c6ca73ebfa8502eea418ced804
|
|
BLAKE2b-256 checksum How to use checksums |
aaddf7a376da724caf8fa9bcc82e03ce206cb92fc00123e9d68dd2df96cdfa2d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 3, 2026.
Transparency logSecurity for miniboosts 0.5.2
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.
Full provenance
All 9 files in this release have been uploaded with provenance metadata.
Attestation for miniboosts-0.5.2.tar.gz
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 Nov 3, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.