RobustCov
Robust covariance, anomaly scoring, PCA, and monitoring for difficult multivariate data.
robustcov is a Python/C++ library for robust multivariate geometry. It
estimates covariance, scatter, precision, principal subspaces, and related
latent structure when empirical covariance is unreliable because the data are
contaminated, heavy-tailed, high-dimensional, incomplete, structured, or
shifting.
Use it to:
- fit robust covariance or scatter and compute Mahalanobis anomaly scores;
- convert held-out anomaly or monitoring scores into conformal p-values and calibrated alert labels;
- perform robust PCA, low-rank-plus-sparse decomposition, reconstruction diagnostics, and subspace monitoring;
- build robust whitening transforms, kernels, and metrics for learned features or embeddings;
- handle bad cells, missing values, matrix-valued observations, and multilinear low-rank structure;
- estimate sparse precision graphs or recover robust independent sources and latent factors.
The package provides numerical estimators and diagnostics with sklearn-style
fit APIs. It does not train neural networks or replace a production monitoring
platform.
Status: alpha / experimental. Core estimator interfaces are intended to remain recognizable, but some APIs may change before 1.0.
Start from your problem
| Your data or goal | Start with |
|---|---|
A minority of complete rows are outliers and n is comfortably larger than p |
FastMCD, DetS, or DetMM |
| Broad heavy tails or an ill-conditioned/high-dimensional covariance | RegularizedCauchy, StudentTScatter, RegularizedTyler, or MRCD |
| Isolated bad cells or missing entries | CellMCD, CellRCov, CellPCA, or SparseCellPCA |
| A matrix is low rank plus sparse, arbitrarily large cell corruption | PrincipalComponentPursuit (PCP) |
| Matrix-valued or multilinear observations | MMCD or RobustMultilinearPCA |
| Robust dimensionality reduction or a fixed-reference subspace monitor | RobustPCA, DistributionallyRobustPCA, SubspaceStability, or RobustSubspaceMonitor |
| Follow a slowly changing subspace in a stream | Experimental OnlineRobustSubspaceTracker |
| Turn a held-out anomaly or monitoring score into a finite-sample alert | ConformalAlertCalibrator |
| Sparse conditional-dependence structure | RobustGraphicalLasso or SGLASSO |
| Learned features, embeddings, whitening, or robust kernels | FeatureGeometry |
| Independent or temporally correlated latent sources | TwoScatterICA, RobustSOBI, or RobustFactorModel |
See the documentation for the task-oriented workflow map, estimator selection guide, examples, benchmarks, and API reference.
Method families
- Covariance and scatter:
FastMCD,DetS,DetMM,MRCD,KMRCD, regularized Cauchy, Student-t, and Tyler estimators. - Cellwise and structured data:
CellMCD,CellRCov,MMCD,RobustMultilinearPCA,CellPCA, andSparseCellPCA. - Matrix decomposition, PCA, and monitoring:
PrincipalComponentPursuit,RobustPCA,DensityPowerRobustPCA, experimentalDistributionallyRobustPCA,SubspaceStability,RobustSubspaceMonitor, experimentalOnlineRobustSubspaceTracker, andConformalAlertCalibrator. - Sparse precision:
RobustGraphicalLassoandSGLASSO. - Latent structure:
TwoScatterICA,SOBI,RobustSOBI, andRobustFactorModel. - Reusable geometry: robust distances, anomaly diagnostics, whitening,
FeatureGeometry, full-matrix kernels, SPD utilities, and optional OpenMP acceleration.
Installation
From PyPI after a release is published:
python -m pip install -U pip
python -m pip install robustcov
Supported release wheels are built for CPython 3.12, 3.13, and 3.14 on Ubuntu, Windows, and macOS by GitHub Actions. The package uses a C++/pybind11 backend built with scikit-build-core.
Dependency lower bounds are selected per Python version so Python 3.12 users are
not forced onto the versions needed only for Python 3.14. The exact oldest tested
sets are recorded in requirements/minimum.txt and exercised by CI.
Plotting is optional and is not installed with the numerical core:
python -m pip install "robustcov[plot]"
The package can be imported without the compiled extension. NumPy-backed estimators continue to work, while native-only estimators such as FastMCD and TylerShape raise an actionable error when fitted. Check the active installation with robustcov.native_available(). A native-free development wheel can be built explicitly with:
python -m build --wheel -Ccmake.define.ROBUSTCOV_BUILD_NATIVE=OFF
Inside a conda environment, install the PyPI wheels with pip:
conda create -n robustcov python=3.12 pip
conda activate robustcov
python -m pip install robustcov
For local development:
git clone https://github.com/smiryusupov/robustcov.git
cd robustcov
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
python -m pip install -U pip
python -m pip install -e ".[dev,docs,examples]"
python -m compileall -q robustcov tests examples benchmarks docs
python -m pytest -q
Quickstart
import numpy as np
import robustcov as rc
rng = np.random.default_rng(0)
# Heavy-tailed data with injected outliers
X = rng.standard_t(df=3, size=(400, 5))
X[:30] += 8.0
est = rc.FastMCD(quality="balanced", random_state=42).fit(X)
print(est.location_)
print(est.covariance_)
print(est.radial_kurtosis_)
det = rc.RobustOutlierDetector(
estimator=rc.FastMCD(quality="balanced", random_state=42),
contamination=0.075,
).fit(X)
print(det.labels_)
Calibrate a separate held-out set of anomaly scores instead of choosing an operational alert threshold heuristically:
calibrator = rc.ConformalAlertCalibrator(alpha=0.05).fit(
-det.score_samples(X_calibration)
)
p_values = calibrator.p_values(-det.score_samples(X_new))
alerts = calibrator.predict_alerts(-det.score_samples(X_new))
The usual finite-sample marginal interpretation requires exchangeability between the held-out calibration scores and future inlier scores.
For a normal subspace that is expected to evolve gradually, use the experimental online tracker rather than silently updating a frozen monitor:
tracker = rc.OnlineRobustSubspaceTracker(
n_components=3,
update_interval=64,
buffer_size=256,
adaptation_rate=0.5,
).fit(X_initial)
update = tracker.update(X_next_batch)
print(update.n_accepted, update.n_rejected, update.change_detected)
The tracker is a RobustCov composition inspired by robust subspace-tracking research; it is not an implementation of NORST and does not inherit NORST's theoretical guarantees.
For deterministic smooth high-breakdown scatter and an efficiency refinement:
dets = rc.DetS(breakdown=0.50).fit(X)
detmm = rc.DetMM(breakdown=0.50, efficiency=0.95).fit(X)
print(dets.weights_)
print(detmm.covariance_)
These estimators require the central half-sample to be nonsingular. Use MRCD
when p is too large for that condition.
For small-sample or high-dimensional heavy-tailed data:
est = rc.RegularizedCauchy(alpha=0.10).fit(X)
print(est.covariance_)
student = rc.StudentTScatter(df=3, alpha=0.05).fit(X)
print(student.radial_kurtosis_)
For high-dimensional data with a minority of contaminated rows:
mrcd = rc.MRCD(
contamination=0.20,
max_condition_number=50,
random_state=0,
).fit(X)
print(mrcd.regularization_)
print(mrcd.standardized_condition_number_)
print(mrcd.support_)
For non-elliptical inlier structure, fit MRCD in a kernel feature space:
kmrcd = rc.KMRCD(
kernel="rbf",
gamma="median",
contamination=0.15,
random_state=0,
).fit(X)
print(kmrcd.support_)
print(kmrcd.distances_)
The RBF bandwidth strongly affects the geometry. The median heuristic is a useful starting point, not an automatic guarantee of good separation.
For matrix-valued observations such as sensor-by-time windows:
mmcd = rc.MMCD(
contamination=0.20,
random_state=0,
).fit(X_matrices)
print(mmcd.row_covariance_)
print(mmcd.column_covariance_)
print(mmcd.mahalanobis(X_matrices))
For tables with isolated bad cells and missing entries:
cellmcd = rc.CellMCD(alpha=0.75, quantile=0.99).fit(X)
print(cellmcd.cell_outlier_mask_)
X_corrected = cellmcd.corrected_data_
For high-dimensional tables with bad cells, abnormal rows, and missing entries:
cellrcov = rc.CellRCov(
n_components=4,
residual_shrinkage="auto",
).fit(X)
print(cellrcov.covariance_)
print(cellrcov.residual_shrinkage_)
print(cellrcov.cell_outlier_mask_)
For sparse interpretable loadings under the same contamination model:
sparse_pca = rc.SparseCellPCA(
n_components=3,
alpha=0.05,
sparsity_threshold=0.01,
).fit(X)
print(sparse_pca.n_nonzero_loadings_)
print(sparse_pca.loading_support_)
For a sparse conditional-dependence graph:
graph = rc.RobustGraphicalLasso(
alpha="ebic",
scatter_estimator=rc.CellMCD(
alpha=0.75,
min_samples_per_feature=None,
),
).fit(X)
print(graph.partial_correlation_)
print(graph.edge_list(feature_names))
For a sparse graph when radial magnitudes are extremely heavy-tailed:
shape_graph = rc.SGLASSO(
alpha=0.12,
).fit(X)
print(shape_graph.partial_correlation_)
print(shape_graph.edge_list(feature_names))
SGLASSO estimates a shape precision matrix up to a common scale. It is not
cellwise robust; use a CellMCD-based RobustGraphicalLasso when individual
coordinates are corrupted.
For dimensionality reduction under cellwise and rowwise contamination:
cellpca = rc.CellPCA(n_components=3).fit(X)
Z = cellpca.transform(X)
print(cellpca.cell_outlier_mask_)
print(cellpca.case_outlier_mask_)
X_corrected = cellpca.corrected_data_
For automatic exploratory selection:
auto = rc.AutoRobustScatter(selection="diagnostic").fit(X)
print(auto.best_estimator_name_)
print(auto.summary())
Low-rank plus sparse decomposition
PrincipalComponentPursuit implements the canonical convex program often
called robust PCA in the matrix-decomposition literature. It separates one
observed matrix into a low-rank signal and sparse, arbitrarily large cell
corruption:
pcp = rc.PrincipalComponentPursuit(tol=1e-7).fit(X)
low_rank = pcp.low_rank_
sparse_corruption = pcp.sparse_
flagged_cells = pcp.sparse_support_
print(pcp.decomposition_summary())
Use it when the scientific model is X = low_rank + sparse. It is not a
covariance estimator, does not handle missing values or dense noise, and does
not replace RobustPCA for heavy tails or rowwise outliers.
Robust PCA
RobustPCA computes principal components from any compatible robust scatter
estimator. The interface follows ordinary PCA, with additional distances for
diagnosing unusual observations.
pca = rc.RobustPCA(
n_components=0.95,
estimator=rc.RegularizedCauchy(alpha=0.10),
).fit(X)
Z = pca.transform(X)
score_distance = pca.score_distances(X)
orthogonal_distance = pca.orthogonal_distances(X)
rc.plot_robust_pca_outlier_map(
pca,
output_path="robust_pca_outlier_map.png",
show=False,
)
Score distance measures how far a row lies along the retained components. Orthogonal distance measures the part that those components cannot reconstruct. This implementation uses an eigendecomposition of a robust scatter matrix; it is not the low-rank-plus-sparse method with the same common name.
For a direct low-rank fit with density-power residual weighting:
dpd_pca = rc.DensityPowerRobustPCA(
n_components=5,
alpha=0.30,
).fit(X)
Z_dpd = dpd_pca.transform(X)
cell_weights = dpd_pca.cell_weights(X)
This estimator requires a fixed component count and complete finite input.
Bootstrap the fitted loadings and retained subspace with:
stability = rc.SubspaceStability(
pca=pca,
n_resamples=200,
resampling="stationary",
block_length=20,
random_state=0,
).fit(X)
print(stability.loading_interval_)
print(stability.max_principal_angle_degrees_)
Use resampling="iid" for independent rows, a block or stationary bootstrap
for ordered weakly dependent observations, and resampling="cluster" for
repeated measurements grouped by subject, site, or account.
Experimental adversarial covariance filtering
For an approximately Gaussian reference with a known upper bound on arbitrarily
replaced rows, robustcov.experimental provides a practical spectral-filtering
composite:
from robustcov.experimental import SpectralFilteringCovariance
filtered = SpectralFilteringCovariance(
contamination=0.10,
random_state=0,
).fit(X)
print(filtered.n_removed_)
print(filtered.covariance_)
The estimator filters dominant directions in lifted quadratic features and
exposes its support and iteration diagnostics. It is inspired by algorithmic
robust-statistics filtering, but it is not the optimal Gaussian algorithm from
the cited papers and carries no corresponding finite-sample guarantee. Use the
Tyler/Student-t/Cauchy family instead for clean heavy-tailed data, and CellMCD or
CellRCov for cellwise corruption. See docs/adversarial_covariance_filtering.rst.
Experimental distributionally robust PCA
DistributionallyRobustPCA is available only from robustcov.experimental.
It evaluates a weighted-Wasserstein worst-case reconstruction risk over a
deterministic adaptive candidate path. Identity transport geometry is retained
as a required ordinary-PCA control; anisotropic geometry is what expresses the
assumed train-to-deployment shift.
from robustcov.experimental import DistributionallyRobustPCA
dro_pca = DistributionallyRobustPCA(
n_components=2,
radius=2.5,
transport_geometry="residual",
formulation="exact",
).fit(X_train)
print(dro_pca.exact_worst_case_risk_)
print(dro_pca.selected_gamma_)
The current exact formulation ranks a finite deterministic path using the exact
scalar-dual ambiguity-set risk; it does not claim a global solution of the
non-convex Grassmann problem. See docs/distributionally_robust_pca.rst and the
held-out shift benchmark before using it in scientific comparisons.
Rolling subspace monitoring
RobustSubspaceMonitor compares incoming batches with a fixed reference fit. A
separate robust model is fitted to the current rolling window, allowing the
monitor to distinguish movement of the center from changes in scale, covariance
shape, or principal directions.
monitor = rc.RobustSubspaceMonitor(
n_components=0.95,
estimator=rc.RegularizedCauchy(alpha=0.10),
window_size=256,
threshold_scale=1.2,
alarm_patience=2,
).fit(X_reference)
result = monitor.update(X_batch)
if result.ready:
print(result.summary())
print(result.exceeded)
New rows are scored against the reference before the rolling model is updated. A persistent production problem therefore cannot redefine the baseline before it is detected.
Main estimators
| Estimator | Best use case | Notes |
|---|---|---|
FastMCD |
Separable contamination, n >> p |
Fast robust covariance and support diagnostics |
DetS |
Rowwise contamination with smooth high-breakdown weighting | Deterministic Tukey-bisquare S-estimator; requires ceil(n/2) > p |
DetMM |
The same regime when higher Gaussian efficiency is desired | DetS start with fixed robust scale and a less aggressive MM refinement |
MRCD |
Rowwise contamination with p close to or greater than n |
Regularized high-breakdown subset covariance with automatic condition control |
KMRCD |
Non-elliptical inlier structure or implicit kernel data | MRCD subset search in a positive-semidefinite kernel feature space |
MMCD |
Matrix-valued observations with contaminated rows/samples | Robust mean matrix and Kronecker row/column covariance factors |
RobustMultilinearPCA |
Matrix-valued low-rank data with bad cells, abnormal samples, and missing entries | Robust Tucker-2 fit with cellwise and casewise redescending weights |
CellMCD |
Tables with isolated corrupted or missing cells and n > p |
Observed-likelihood covariance fit with cell-level flags and conditional predictions |
CellRCov |
High-dimensional tables with bad cells, abnormal rows, and missing entries | Robust low-rank covariance plus a diagonally regularized residual covariance |
CellPCA |
Low-rank tables with cell errors, abnormal rows, and missing entries | Cellwise and casewise redescending weights in a weighted low-rank fit |
SparseCellPCA |
Interpretable low-rank tables with the same contamination model | CellPCA weights plus exact-zero elastic-net loading updates |
RegularizedCauchy |
Very heavy tails, small samples, p close to n |
Strong radial downweighting plus shrinkage |
StudentTScatter |
Diffuse heavy tails | Smooth heavy-tail scatter estimator |
RegularizedTyler |
Heavy-tailed shape estimation | Scale-free shape unless scale correction is requested |
AutoRobustScatter |
Exploratory estimator selection | Diagnostic or stability-based selector |
ClusterRobustOutlierDetector |
Multimodal data | Cluster-then-local-robust-scatter diagnostic |
PrincipalComponentPursuit |
One matrix is low rank plus sparse gross cell corruption | Nuclear-norm plus entrywise-L1 convex decomposition solved by inexact ALM |
RobustPCA |
Robust dimensionality reduction and subspace diagnostics | Eigendecomposition of a robust location and scatter estimate |
DensityPowerRobustPCA |
Direct robust low-rank fitting with cell residual weights | Gaussian density-power-divergence alternating regressions |
experimental DistributionallyRobustPCA |
Principal subspaces under stated train-to-target distribution shift | Exact weighted-Wasserstein risk over a deterministic adaptive candidate path |
KLRegularizedTyler and WieselTyler are currently documented as aliases/prototype variants around the regularized Tyler implementation. HellingerRegularizedTyler is experimental.
For a scenario-specific decision table, capability limits, and cross-method results, see docs/method_comparison.rst. The comparison separates covariance, PCA, matrix-valued, and sparse-graph tasks rather than declaring one global winner.
Robust kernels for GP and kernel methods
A robust scatter estimate can be used as a fixed full-matrix input metric for
kernel methods. robustcov supplies the metric and kernel adapters; model
fitting remains in scikit-learn, GPyTorch, or another downstream library.
import robustcov as rc
metric = rc.RobustInputMetric(
estimator=rc.RegularizedCauchy(alpha=0.05, scale_correction="radial_median"),
).fit(X_train)
K = rc.robust_rbf_kernel(
X_train,
precision=metric.precision_,
center=metric.location_,
length_scale=1.0,
)
For scikit-learn's GaussianProcessRegressor, use the optional adapter:
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import ConstantKernel, WhiteKernel
from robustcov.sklearn_kernels import RobustMahalanobisRBF
kernel = (
ConstantKernel(1.0)
* RobustMahalanobisRBF(precision=metric.precision_, center=metric.location_)
+ WhiteKernel(1e-2)
)
gp = GaussianProcessRegressor(kernel=kernel).fit(X_train, y_train)
For GPyTorch, robustcov.gpytorch_kernels.RobustMahalanobisRBFKernel and
RobustMahalanobisMaternKernel provide frozen robust metric kernels that can be
wrapped by gpytorch.kernels.ScaleKernel.
Visual diagnostics
est = rc.FastMCD(quality="balanced", random_state=0).fit(X)
rc.plot_robust_distance_profile(
est,
output_path="distance_profile.png",
show=False,
)
rc.plot_mahalanobis_qq(
est,
output_path="qq.png",
show=False,
)
rc.plot_covariance_heatmap(
est.covariance_,
title="FastMCD covariance",
output_path="covariance.png",
show=False,
)
Diagnostic reports summarize robust-distance behavior:
report = rc.diagnostic_report(est)
print(report.summary())
Reports include radial kurtosis, detected fraction, condition number, support fraction, QQ tail deviation, and heuristic recommendations.
Multimodal data
A single global robust covariance model can fail when the data have several legitimate modes. Use cluster-aware diagnostics when modes correspond to meaningful groups, regimes, or segments.
det = rc.ClusterRobustOutlierDetector(
n_clusters=3,
contamination=0.05,
random_state=0,
).fit(X)
scores = det.decision_function(X)
labels = det.predict(X)
rc.plot_cluster_robust_distances(
det,
X,
output_path="cluster_distances.png",
show=False,
)
This is not a full robust mixture model. It is a practical cluster-then-robust-scatter diagnostic.
OpenMP acceleration
If OpenMP is available at build time, the C++ backend can parallelize distance evaluation, covariance accumulation, Tyler scatter updates, and FastMCD candidate evaluation.
import robustcov as rc
print(rc.native_available())
print(rc.has_openmp())
rc.set_num_threads(4)
est = rc.FastMCD(n_init=500, n_jobs=4, random_state=0).fit(X)
For reproducible scaling benchmarks, avoid BLAS/OpenMP oversubscription:
OMP_NUM_THREADS=4 OPENBLAS_NUM_THREADS=1 MKL_NUM_THREADS=1 \
python benchmarks/openmp_scaling.py \
--n 8000 \
--p 20 \
--threads 1 2 4 \
--csv results/openmp_scaling.csv
Documentation
Build the Sphinx docs locally:
python -m pip install -e ".[docs]"
python -m sphinx -b html docs docs/_build/html
Main documentation entry points:
- What RobustCov does: package scope, boundaries, and the reusable geometry model
- Workflows: anomaly scoring, PCA and monitoring, feature geometry, structured data, sparse precision, and latent factors
- Choose an estimator: recommendations by contamination model and dimensional regime
- Examples by task and domain: runnable examples with source and generated figures
- Benchmarks and validation: task-specific comparisons, failure cases, performance, and reviewed C-MAPSS snapshots
- Methods and API reference: mathematical details, provenance, fitted attributes, and public interfaces
Do not commit docs/_build/; it is generated by Sphinx.
Benchmarks
Run the task-specific cross-method comparison:
OPENBLAS_NUM_THREADS=1 MKL_NUM_THREADS=1 OMP_NUM_THREADS=2 \
python benchmarks/compare_methods.py \
--profile quick \
--csv results/method_comparison.csv \
--rst results/method_comparison.rst
The script compares methods only where their fitted quantities and ground-truth
metrics are compatible. It now covers scatter, kernel outlier detection, robust
PCA, matrix/tensor methods, sparse precision, ICA, SOBI, and robust factor
models. Use --profile full --families scatter --repeats 3 (and repeat for the
other families) for slower, more stable local timing runs.
Run the focused latent-structure benchmark and generate its plots:
OPENBLAS_NUM_THREADS=1 MKL_NUM_THREADS=1 OMP_NUM_THREADS=2 \
python benchmarks/latent_structure_benchmarks.py \
--profile quick \
--families ica sobi pca factor \
--csv results/latent_structure.csv \
--plot-dir results/latent_structure_plots
Audit benchmark ownership across the public estimator surface:
python benchmarks/benchmark_inventory.py --strict
Generate the older benchmark report:
OMP_NUM_THREADS=4 OPENBLAS_NUM_THREADS=1 MKL_NUM_THREADS=1 \
python benchmarks/make_report.py --outdir results/report
This writes CSV files, plots, a Markdown report, and a standalone HTML report:
results/report/benchmark_report.html
results/report/benchmark_report.md
results/report/*.csv
results/report/*.png
results/report/latent_structure/*.png
The benchmark pages report both successful and weak cases. Covariance-based methods are most appropriate when anomalies or changes are expressed through location, scale, correlation, or a low-dimensional subspace.
Examples
The example gallery is grouped by method family. List the available groups:
python examples/run_use_case_gallery.py --list
Run one family:
python examples/run_use_case_gallery.py --group ica
python examples/run_use_case_gallery.py --group pca
python examples/run_use_case_gallery.py --group robust
python examples/run_use_case_gallery.py --group monitoring
The new source-separation and factor-model examples are explicit scripts:
python examples/ica_two_scatter.py
python examples/sobi_source_separation.py
python examples/robust_factor_model.py
Run every registered gallery example with:
python examples/run_use_case_gallery.py --all
Refresh generated gallery assets after editing examples:
python docs/generate_gallery_assets.py
python -m sphinx -b html docs docs/_build/html
External and Kaggle examples
External examples live under examples_external/. Raw datasets are never bundled with the package or committed to the repository. Optional loaders cache explicit downloads under ROBUSTCOV_DATA_DIR, XDG_CACHE_HOME/robustcov, or ~/.cache/robustcov.
List supported cached datasets:
python -m robustcov.datasets list
python -m robustcov.datasets info gas_sensor_drift
python -m robustcov.datasets info cmapss
Run the distribution-shift examples without storing data in the repository:
python examples_external/gas_sensor_drift_dro_pca.py --download
python examples_external/cmapss_dro_pca_monitoring.py --download --subset FD002
Kaggle-style manual example:
python examples_external/kaggle_credit_card_fraud.py \
--data /path/to/creditcard.csv \
--outdir results/external/credit_card_fraud
Collect external result summaries:
python examples_external/collect_external_results.py \
--root results/external \
--outdir results/external_registry
External result pages should be read as evidence, not as leaderboard claims. Some datasets are strong wins, some are competitive but slower, and some are included mainly to show limitations.
Scope
robustcov currently focuses on a coherent robust multivariate workflow:
- covariance, scatter, and sparse precision estimation under rowwise, cellwise, heavy-tailed, and high-dimensional contamination;
- robust PCA, low-rank-plus-sparse decomposition, latent-factor methods, and source separation;
- anomaly scoring, conformal alert calibration, and fixed or adaptive subspace monitoring; and
- reproducible method benchmarks and reviewed external case studies.
The package does not attempt to cover every robust-learning problem. Methods are added when they fit this geometry-and-monitoring workflow and can be supported by clear provenance, tests, diagnostics, and evidence.
Development
python -m pip install -e ".[dev,docs]"
python -m pytest -q
python -m sphinx -b html docs docs/_build/html
Build distribution artifacts:
python -m build
python -m twine check dist/*
Release wheels are built by .github/workflows/wheels.yml using cibuildwheel.
A manual workflow dispatch publishes the release candidate to TestPyPI and
smoke-tests the installed package outside the checkout. A matching signed v*
tag publishes the same checked artifacts to PyPI through a protected Trusted
Publisher environment. See RELEASE.md for the full checklist.
Project status
This is a pre-1.0 alpha package. Public APIs may change. The goal of the early releases is to make the estimators, diagnostics, benchmarks, and documentation easy to inspect before stabilizing the interface.
License
Apache-2.0. See LICENSE.
Methods, attribution, and citation
robustcov distinguishes published algorithms, literature-based adaptations,
package-specific compositions, and software utilities. Each canonical estimator
records its primary references, the package's implementation contribution, and
material differences from the cited method.
import robustcov as rc
info = rc.get_method_provenance(rc.RobustSOBI)
print(info.status)
print(info.references)
print(info.robustcov_contribution)
The full registry is documented in
docs/methods_and_references.rst. Method
pages cite the underlying literature and document implementation-specific
behavior, assumptions, and limitations.
When using robustcov, cite both:
- the software release using
CITATION.cff; and - the primary methodological references for the estimators used.
The machine-readable method bibliography is available in
docs/references.bib. A JOSS paper draft is maintained in
the paper/ directory.
Contributing
Contributions are welcome. See CONTRIBUTING.md for
development setup and checks before opening a pull request. New public
estimators must add both benchmark ownership and method-provenance metadata.
Release notes are tracked in CHANGELOG.md.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file robustcov-0.1.0.tar.gz.
File metadata
- Download URL: robustcov-0.1.0.tar.gz
- Upload date:
- Size: 11.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4232e2e7509893b69b7814f795615352873883607ff79584811f5d65c1d2d935
|
|
| MD5 |
bdbc2408726a0f0fe9fa3acf9cc60b33
|
|
| BLAKE2b-256 |
df9952709a5c783be2f06db37bfba62cbf8322ff80032bbc70400ace07c9df8b
|
Provenance
The following attestation bundles were made for robustcov-0.1.0.tar.gz:
Publisher:
wheels.yml on smiryusupov/robustcov
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
robustcov-0.1.0.tar.gz -
Subject digest:
4232e2e7509893b69b7814f795615352873883607ff79584811f5d65c1d2d935 - Sigstore transparency entry: 2280837703
- Sigstore integration time:
-
Permalink:
smiryusupov/robustcov@c280723d38ef81d0310120f2eb06317333fb8c38 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/smiryusupov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c280723d38ef81d0310120f2eb06317333fb8c38 -
Trigger Event:
push
-
Statement type:
File details
Details for the file robustcov-0.1.0-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: robustcov-0.1.0-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 656.2 kB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14130d260a3e76fcbce6ca6f315e48a121de775054a296f174d4edc186353e7f
|
|
| MD5 |
d6d7e46736dc5bb9bcfb5017162115aa
|
|
| BLAKE2b-256 |
c2a2ca8c0de9e4ba3856efd84e9b217e5fb225c573bb2662cfffbe2f763e959e
|
Provenance
The following attestation bundles were made for robustcov-0.1.0-cp314-cp314-win_amd64.whl:
Publisher:
wheels.yml on smiryusupov/robustcov
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
robustcov-0.1.0-cp314-cp314-win_amd64.whl -
Subject digest:
14130d260a3e76fcbce6ca6f315e48a121de775054a296f174d4edc186353e7f - Sigstore transparency entry: 2280837749
- Sigstore integration time:
-
Permalink:
smiryusupov/robustcov@c280723d38ef81d0310120f2eb06317333fb8c38 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/smiryusupov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c280723d38ef81d0310120f2eb06317333fb8c38 -
Trigger Event:
push
-
Statement type:
File details
Details for the file robustcov-0.1.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: robustcov-0.1.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 467.8 kB
- Tags: CPython 3.14, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5f7e93e00b5ccb1108af3a2c46ce8e50b08998b4780524764f033b8af436381
|
|
| MD5 |
9fc56f1d2cce2ef1d8243d30cf50c515
|
|
| BLAKE2b-256 |
5644c12eecd420faac31e5cc9cb835578d23be0687d6b8243c03650c3224e53f
|
Provenance
The following attestation bundles were made for robustcov-0.1.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
wheels.yml on smiryusupov/robustcov
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
robustcov-0.1.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
d5f7e93e00b5ccb1108af3a2c46ce8e50b08998b4780524764f033b8af436381 - Sigstore transparency entry: 2280838003
- Sigstore integration time:
-
Permalink:
smiryusupov/robustcov@c280723d38ef81d0310120f2eb06317333fb8c38 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/smiryusupov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c280723d38ef81d0310120f2eb06317333fb8c38 -
Trigger Event:
push
-
Statement type:
File details
Details for the file robustcov-0.1.0-cp314-cp314-macosx_11_0_x86_64.whl.
File metadata
- Download URL: robustcov-0.1.0-cp314-cp314-macosx_11_0_x86_64.whl
- Upload date:
- Size: 335.8 kB
- Tags: CPython 3.14, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
936ae37c36702b2ed8b03a2049988f71c75fd737bed03babb7020759d340b807
|
|
| MD5 |
027ec47b91e2d025411de26cc7f7b874
|
|
| BLAKE2b-256 |
e9feceb5f5c36d92ac540574dcddcc560e0c5ca38a5e78ae9c71e25e3f723d93
|
Provenance
The following attestation bundles were made for robustcov-0.1.0-cp314-cp314-macosx_11_0_x86_64.whl:
Publisher:
wheels.yml on smiryusupov/robustcov
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
robustcov-0.1.0-cp314-cp314-macosx_11_0_x86_64.whl -
Subject digest:
936ae37c36702b2ed8b03a2049988f71c75fd737bed03babb7020759d340b807 - Sigstore transparency entry: 2280837936
- Sigstore integration time:
-
Permalink:
smiryusupov/robustcov@c280723d38ef81d0310120f2eb06317333fb8c38 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/smiryusupov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c280723d38ef81d0310120f2eb06317333fb8c38 -
Trigger Event:
push
-
Statement type:
File details
Details for the file robustcov-0.1.0-cp314-cp314-macosx_11_0_arm64.whl.
File metadata
- Download URL: robustcov-0.1.0-cp314-cp314-macosx_11_0_arm64.whl
- Upload date:
- Size: 325.5 kB
- Tags: CPython 3.14, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e3bdac5947646017e2cb26331547a968c322a99c04b8cd1fad4bae1b2c8151b
|
|
| MD5 |
72ebfa6ee19efc3d75ebfbe93116f85b
|
|
| BLAKE2b-256 |
65f4dcf68fc7e028f403a6c131649b74ae912bcf2da881bb392fab87e47541d8
|
Provenance
The following attestation bundles were made for robustcov-0.1.0-cp314-cp314-macosx_11_0_arm64.whl:
Publisher:
wheels.yml on smiryusupov/robustcov
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
robustcov-0.1.0-cp314-cp314-macosx_11_0_arm64.whl -
Subject digest:
6e3bdac5947646017e2cb26331547a968c322a99c04b8cd1fad4bae1b2c8151b - Sigstore transparency entry: 2280837777
- Sigstore integration time:
-
Permalink:
smiryusupov/robustcov@c280723d38ef81d0310120f2eb06317333fb8c38 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/smiryusupov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c280723d38ef81d0310120f2eb06317333fb8c38 -
Trigger Event:
push
-
Statement type:
File details
Details for the file robustcov-0.1.0-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: robustcov-0.1.0-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 643.2 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba99a17a7383ab4af3e9516fc3443ce1d300c0bd3327f9d47812d5986587c877
|
|
| MD5 |
3dfc3b9c6a4c44e28faa267eca7dbb8a
|
|
| BLAKE2b-256 |
2dc9e7b4b5656f0533337066d0a117a6d65a677956190fd453845bc65c70e837
|
Provenance
The following attestation bundles were made for robustcov-0.1.0-cp313-cp313-win_amd64.whl:
Publisher:
wheels.yml on smiryusupov/robustcov
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
robustcov-0.1.0-cp313-cp313-win_amd64.whl -
Subject digest:
ba99a17a7383ab4af3e9516fc3443ce1d300c0bd3327f9d47812d5986587c877 - Sigstore transparency entry: 2280837965
- Sigstore integration time:
-
Permalink:
smiryusupov/robustcov@c280723d38ef81d0310120f2eb06317333fb8c38 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/smiryusupov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c280723d38ef81d0310120f2eb06317333fb8c38 -
Trigger Event:
push
-
Statement type:
File details
Details for the file robustcov-0.1.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: robustcov-0.1.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 467.7 kB
- Tags: CPython 3.13, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a1c441a4394134572989aad8875ab54c1c19b62701f7be7858faa47c63ec2b5
|
|
| MD5 |
07350f046a5a7fe889687302bb87704e
|
|
| BLAKE2b-256 |
ebc25b5280e4308a84a34fe5b576030fdf23b0b8d9424a2714da88da4ba3d0ae
|
Provenance
The following attestation bundles were made for robustcov-0.1.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
wheels.yml on smiryusupov/robustcov
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
robustcov-0.1.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
7a1c441a4394134572989aad8875ab54c1c19b62701f7be7858faa47c63ec2b5 - Sigstore transparency entry: 2280837908
- Sigstore integration time:
-
Permalink:
smiryusupov/robustcov@c280723d38ef81d0310120f2eb06317333fb8c38 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/smiryusupov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c280723d38ef81d0310120f2eb06317333fb8c38 -
Trigger Event:
push
-
Statement type:
File details
Details for the file robustcov-0.1.0-cp313-cp313-macosx_11_0_x86_64.whl.
File metadata
- Download URL: robustcov-0.1.0-cp313-cp313-macosx_11_0_x86_64.whl
- Upload date:
- Size: 335.6 kB
- Tags: CPython 3.13, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1bcbae777525b24eac362aa092707a8baa61078da672d97f7cdeef970bc6d9ce
|
|
| MD5 |
c46dad4bfb6c7a1583c5c5c258f36576
|
|
| BLAKE2b-256 |
10dbbcab17f601e379e3e4422f7c7ad9356d85b382ae933513d9cd8fe24a335b
|
Provenance
The following attestation bundles were made for robustcov-0.1.0-cp313-cp313-macosx_11_0_x86_64.whl:
Publisher:
wheels.yml on smiryusupov/robustcov
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
robustcov-0.1.0-cp313-cp313-macosx_11_0_x86_64.whl -
Subject digest:
1bcbae777525b24eac362aa092707a8baa61078da672d97f7cdeef970bc6d9ce - Sigstore transparency entry: 2280837731
- Sigstore integration time:
-
Permalink:
smiryusupov/robustcov@c280723d38ef81d0310120f2eb06317333fb8c38 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/smiryusupov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c280723d38ef81d0310120f2eb06317333fb8c38 -
Trigger Event:
push
-
Statement type:
File details
Details for the file robustcov-0.1.0-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: robustcov-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 325.4 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e67ae117a8ee5031ef320a421d66d7c8bca72e16ed05057cdcf1b533c75ea59
|
|
| MD5 |
0d10811e589f529fc161bc5378c0f262
|
|
| BLAKE2b-256 |
a2386832241eba4cd61e1c469aa8be35ebca6beeec9c24aa70c5b9404439ad93
|
Provenance
The following attestation bundles were made for robustcov-0.1.0-cp313-cp313-macosx_11_0_arm64.whl:
Publisher:
wheels.yml on smiryusupov/robustcov
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
robustcov-0.1.0-cp313-cp313-macosx_11_0_arm64.whl -
Subject digest:
2e67ae117a8ee5031ef320a421d66d7c8bca72e16ed05057cdcf1b533c75ea59 - Sigstore transparency entry: 2280837804
- Sigstore integration time:
-
Permalink:
smiryusupov/robustcov@c280723d38ef81d0310120f2eb06317333fb8c38 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/smiryusupov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c280723d38ef81d0310120f2eb06317333fb8c38 -
Trigger Event:
push
-
Statement type:
File details
Details for the file robustcov-0.1.0-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: robustcov-0.1.0-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 643.2 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f010acd2c112c7c517668ed1bb2d3e1a27ac29f78eb07d18309b234471fc451
|
|
| MD5 |
8efffbe91a481a32c2cf3f6040dcc718
|
|
| BLAKE2b-256 |
f127956215c15a049994d5724c0a227d2e51f5c3eaa82b2a6d5c75ab6a69cd56
|
Provenance
The following attestation bundles were made for robustcov-0.1.0-cp312-cp312-win_amd64.whl:
Publisher:
wheels.yml on smiryusupov/robustcov
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
robustcov-0.1.0-cp312-cp312-win_amd64.whl -
Subject digest:
6f010acd2c112c7c517668ed1bb2d3e1a27ac29f78eb07d18309b234471fc451 - Sigstore transparency entry: 2280837877
- Sigstore integration time:
-
Permalink:
smiryusupov/robustcov@c280723d38ef81d0310120f2eb06317333fb8c38 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/smiryusupov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c280723d38ef81d0310120f2eb06317333fb8c38 -
Trigger Event:
push
-
Statement type:
File details
Details for the file robustcov-0.1.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: robustcov-0.1.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 467.7 kB
- Tags: CPython 3.12, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5bcc8994c27d7cec82c4097337c945a3db7219b9f7851c4c7415f681232100c
|
|
| MD5 |
c09d4e27053a87813098fc14ec30d79e
|
|
| BLAKE2b-256 |
2bab3ff3378f5727db3e9b1b1565f5645342a727b50f9cb77faa492a9f1ca58f
|
Provenance
The following attestation bundles were made for robustcov-0.1.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
wheels.yml on smiryusupov/robustcov
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
robustcov-0.1.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
b5bcc8994c27d7cec82c4097337c945a3db7219b9f7851c4c7415f681232100c - Sigstore transparency entry: 2280837852
- Sigstore integration time:
-
Permalink:
smiryusupov/robustcov@c280723d38ef81d0310120f2eb06317333fb8c38 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/smiryusupov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c280723d38ef81d0310120f2eb06317333fb8c38 -
Trigger Event:
push
-
Statement type:
File details
Details for the file robustcov-0.1.0-cp312-cp312-macosx_11_0_x86_64.whl.
File metadata
- Download URL: robustcov-0.1.0-cp312-cp312-macosx_11_0_x86_64.whl
- Upload date:
- Size: 335.6 kB
- Tags: CPython 3.12, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
598ea37db1297f9602ae72796f2dcd25cdd795216ee5c21f4fd21b4315c60927
|
|
| MD5 |
ec941ce05bc7b715ade8f6cb4fd5a558
|
|
| BLAKE2b-256 |
d8276f21939750a1d9daf6ee523f93b734522114791ea263b1dc30e32b2d41ed
|
Provenance
The following attestation bundles were made for robustcov-0.1.0-cp312-cp312-macosx_11_0_x86_64.whl:
Publisher:
wheels.yml on smiryusupov/robustcov
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
robustcov-0.1.0-cp312-cp312-macosx_11_0_x86_64.whl -
Subject digest:
598ea37db1297f9602ae72796f2dcd25cdd795216ee5c21f4fd21b4315c60927 - Sigstore transparency entry: 2280837984
- Sigstore integration time:
-
Permalink:
smiryusupov/robustcov@c280723d38ef81d0310120f2eb06317333fb8c38 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/smiryusupov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c280723d38ef81d0310120f2eb06317333fb8c38 -
Trigger Event:
push
-
Statement type:
File details
Details for the file robustcov-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: robustcov-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 325.3 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7786f3e9c8413a7017e560c37965f2d04ec778e9182ee410b43e053f9cb33178
|
|
| MD5 |
4da4277f9ba288c32de0a220e5c5b123
|
|
| BLAKE2b-256 |
1e663c4e3b9e245edde6b3b06441f10d41e82677e839e581887f0b925da5cfcd
|
Provenance
The following attestation bundles were made for robustcov-0.1.0-cp312-cp312-macosx_11_0_arm64.whl:
Publisher:
wheels.yml on smiryusupov/robustcov
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
robustcov-0.1.0-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
7786f3e9c8413a7017e560c37965f2d04ec778e9182ee410b43e053f9cb33178 - Sigstore transparency entry: 2280837827
- Sigstore integration time:
-
Permalink:
smiryusupov/robustcov@c280723d38ef81d0310120f2eb06317333fb8c38 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/smiryusupov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c280723d38ef81d0310120f2eb06317333fb8c38 -
Trigger Event:
push
-
Statement type: