Skip to main content

Robust scatter geometry for anomaly detection, kernels, and ML workflows in Python.

Project description

robustcov

PyPI Python Docs CI Wheels License

robustcov is an experimental Python/C++ library for robust covariance, heavy-tail scatter estimation, and interpretable anomaly diagnostics.

It is designed for workflows where classical covariance estimates are unstable: contamination, heavy-tailed data, small samples, high-dimensional scatter estimation, and robust-distance based anomaly screening.

Status: alpha / experimental. APIs and benchmark pages may change before a stable release.

Highlights

  • Fast robust covariance via FastMCD
  • Heavy-tail scatter estimators: RegularizedCauchy, StudentTScatter, RegularizedTyler
  • Robust anomaly detection with Mahalanobis-style robust distances
  • Robust full-matrix input metrics for GP and kernel-method covariance functions
  • Cluster-aware robust diagnostics for multimodal data
  • Visual diagnostics: distance profiles, QQ plots, covariance heatmaps, anomaly panels
  • Optional OpenMP acceleration in the C++ backend
  • Sphinx documentation with benchmark and use-case galleries
  • Optional external/Kaggle examples for fraud, finance, maintenance, and medical screening

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.

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=est, contamination=0.075).fit(X)
print(det.labels_)

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 automatic exploratory selection:

auto = rc.AutoRobustScatter(selection="diagnostic").fit(X)

print(auto.best_estimator_name_)
print(auto.summary())

Main estimators

Estimator Best use case Notes
FastMCD Separable contamination, n >> p Fast robust covariance and support diagnostics
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

KLRegularizedTyler and WieselTyler are currently documented as aliases/prototype variants around the regularized Tyler implementation. HellingerRegularizedTyler is experimental.

Robust kernels for GP and kernel methods

robustcov can expose a robust scatter estimate as a fixed full-matrix input metric for covariance functions. This deliberately does not add GP regression, KRR, Bayesian optimization, posterior inference, likelihoods, or training loops. The package only supplies the robust covariance structure.

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.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:

  • Use-case gallery: practical application pages organized by topic
  • Benchmark gallery: benchmark plots, tables, and interpretation
  • Algorithms: mathematical descriptions and references
  • Robust statistics background: influence functions, Gateaux derivatives, breakdown point, geodesic convexity, and small-sample issues
  • External and Kaggle gallery: optional external-data results

Do not commit docs/_build/; it is generated by Sphinx.

Benchmarks

Generate the 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

The benchmark documentation is intentionally honest. robustcov is not expected to win every anomaly-detection task. The package is strongest when the signal is covariance-shaped, heavy-tailed, high-dimensional, or benefits from interpretable robust distances.

Examples

Run the reproducible use-case gallery:

python examples/run_use_case_gallery.py --all

Selected examples:

python examples/use_case_finance_risk.py
python examples/use_case_multimodal_anomaly.py
python examples/use_case_sensor_anomaly.py
python examples/use_case_breast_cancer_screening.py
python examples/use_case_digits_one_class_baselines.py
python examples/use_case_ml_preprocessing.py

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/. They are optional and are not part of the test suite because they require manual dataset downloads and may have separate licenses.

Example:

python examples_external/kaggle_credit_card_fraud.py \
  --data examples_external/data/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:

  1. efficient robust covariance for classical contamination;
  2. heavy-tail scatter estimators for small-sample/high-dimensional regimes;
  3. robust-distance anomaly diagnostics;
  4. application and benchmark galleries with reproducible scripts.

Minimum-volume ellipsoid and full robust mixture modeling are not core priorities yet. They may be added later as experimental features if they strengthen the package without distracting from the current scope.

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. Push a v* tag to publish to PyPI via Trusted Publishing after configuring the pypi environment on PyPI/GitHub. 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.

Citation

If you use robustcov in research or applied work, please cite the package using the metadata in CITATION.cff.

Citation and contributing

If you use robustcov in research, please cite the software using the metadata in CITATION.cff. A JOSS paper draft is being prepared in the paper/ directory.

Contributions are welcome. See CONTRIBUTING.md for development setup and checks before opening a pull request. Release notes are tracked in CHANGELOG.md.

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

robustcov-0.0.2.tar.gz (3.1 MB view details)

Uploaded Source

Built Distributions

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

robustcov-0.0.2-cp314-cp314-win_amd64.whl (150.2 kB view details)

Uploaded CPython 3.14Windows x86-64

robustcov-0.0.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (272.4 kB view details)

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

robustcov-0.0.2-cp314-cp314-macosx_11_0_x86_64.whl (141.0 kB view details)

Uploaded CPython 3.14macOS 11.0+ x86-64

robustcov-0.0.2-cp314-cp314-macosx_11_0_arm64.whl (133.0 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

robustcov-0.0.2-cp313-cp313-win_amd64.whl (147.5 kB view details)

Uploaded CPython 3.13Windows x86-64

robustcov-0.0.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (272.4 kB view details)

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

robustcov-0.0.2-cp313-cp313-macosx_11_0_x86_64.whl (141.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ x86-64

robustcov-0.0.2-cp313-cp313-macosx_11_0_arm64.whl (132.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

robustcov-0.0.2-cp312-cp312-win_amd64.whl (147.5 kB view details)

Uploaded CPython 3.12Windows x86-64

robustcov-0.0.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (272.4 kB view details)

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

robustcov-0.0.2-cp312-cp312-macosx_11_0_x86_64.whl (141.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ x86-64

robustcov-0.0.2-cp312-cp312-macosx_11_0_arm64.whl (132.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

File details

Details for the file robustcov-0.0.2.tar.gz.

File metadata

  • Download URL: robustcov-0.0.2.tar.gz
  • Upload date:
  • Size: 3.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for robustcov-0.0.2.tar.gz
Algorithm Hash digest
SHA256 35c12a328eacdef3402845e487ba9ba09aef8d5e2b52430e33b1961e750b3322
MD5 9ae676a6ca198aa2c1997a3cbb962d7b
BLAKE2b-256 e109a0edb77df5cf81af8ba28104dfe26bc7c23035423036d85781dbbfc6336b

See more details on using hashes here.

Provenance

The following attestation bundles were made for robustcov-0.0.2.tar.gz:

Publisher: wheels.yml on smiryusupov/robustcov

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

File details

Details for the file robustcov-0.0.2-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: robustcov-0.0.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 150.2 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for robustcov-0.0.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 1a9398e71d7ab8ed7c7fb513407f6608da44063e6cf8692a88550d7a33734608
MD5 56877244786c432d02f45939bc5528ca
BLAKE2b-256 ae0e126d900aec8f10d962810a38014fe517e33d38f5a5815a9717296e25565e

See more details on using hashes here.

Provenance

The following attestation bundles were made for robustcov-0.0.2-cp314-cp314-win_amd64.whl:

Publisher: wheels.yml on smiryusupov/robustcov

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

File details

Details for the file robustcov-0.0.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for robustcov-0.0.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2135801b6897d94cddb7324bebe93d24a4c1fc6abb7a317b20db32c2a77c21b2
MD5 9231e8c01dd678a2b8edde95daf56e41
BLAKE2b-256 54f49dcf8ce9ae4a5423803e3523ae180f2df7ce14827202b59ac3e1f5dd3c34

See more details on using hashes here.

Provenance

The following attestation bundles were made for robustcov-0.0.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on smiryusupov/robustcov

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

File details

Details for the file robustcov-0.0.2-cp314-cp314-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for robustcov-0.0.2-cp314-cp314-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 156761e6c6a7ab691b07b3a08d2fa30b31e7452601167db9b3d26c23d29cc53c
MD5 eb8a16160e1596738759bab7bed6faf7
BLAKE2b-256 1ad195e857132fe36ed64e54df54e8de0c4852b5e5da1970219837136e56afc2

See more details on using hashes here.

Provenance

The following attestation bundles were made for robustcov-0.0.2-cp314-cp314-macosx_11_0_x86_64.whl:

Publisher: wheels.yml on smiryusupov/robustcov

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

File details

Details for the file robustcov-0.0.2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for robustcov-0.0.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fd27179f22b090bd72590558b615244165668f71f4a0cbe00bbc6bb6cd6403ec
MD5 64f0502e874e5cf56ce0ed802347db40
BLAKE2b-256 cf510694e368e8d5b25b863c4608538e5f13889ca4676abb805756ff7a59994e

See more details on using hashes here.

Provenance

The following attestation bundles were made for robustcov-0.0.2-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: wheels.yml on smiryusupov/robustcov

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

File details

Details for the file robustcov-0.0.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: robustcov-0.0.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 147.5 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for robustcov-0.0.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 655dc1100ae419bc7e4e37f13c9dea4c34b1119c10589ab45038a6220426cde8
MD5 e5161f070395b57ad8a7a6b423dc1abe
BLAKE2b-256 be0a663a6bc3cf74dea15ccfde1bd4081d50d18d8444a50773d75c9ed50b6698

See more details on using hashes here.

Provenance

The following attestation bundles were made for robustcov-0.0.2-cp313-cp313-win_amd64.whl:

Publisher: wheels.yml on smiryusupov/robustcov

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

File details

Details for the file robustcov-0.0.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for robustcov-0.0.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 20893a0f9d027f08f2f268f773b737a2de094c8a03c6fbe730597436f26d8d44
MD5 3df41ceb7a0ad7ffddd9b571572f398b
BLAKE2b-256 dd8611d0e2b78e0002292d5ba5c67bb86823f8a7b052c97f714e59a127f0d148

See more details on using hashes here.

Provenance

The following attestation bundles were made for robustcov-0.0.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on smiryusupov/robustcov

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

File details

Details for the file robustcov-0.0.2-cp313-cp313-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for robustcov-0.0.2-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 2067d31e08a0a0fd406d7b8fb195e4eaead66d0a8006927070f9364811f821d4
MD5 9380af4697b978234a3ae6f91c9b7a3f
BLAKE2b-256 7c2bccddd6d1c4bdba65e80ad33849c69dc6db52c943d3a2c2c1b1c8bd787a06

See more details on using hashes here.

Provenance

The following attestation bundles were made for robustcov-0.0.2-cp313-cp313-macosx_11_0_x86_64.whl:

Publisher: wheels.yml on smiryusupov/robustcov

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

File details

Details for the file robustcov-0.0.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for robustcov-0.0.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8b8aa06ff8fa050f28c645d820bea64e5a804291a9a2741410fdd443215a95f5
MD5 b2f812438664596de0bd794e7b3a0c15
BLAKE2b-256 499296ef9c7e076ee09dd6d0ef0381fa4ba7a59ded05fecaef7d9cbcc4f5f17a

See more details on using hashes here.

Provenance

The following attestation bundles were made for robustcov-0.0.2-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: wheels.yml on smiryusupov/robustcov

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

File details

Details for the file robustcov-0.0.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: robustcov-0.0.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 147.5 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for robustcov-0.0.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 40d2874c841cf59206203517b89dff3447465da5b97ebc40e4e7d0c3a4b71554
MD5 24d1b119c50e9949107eeeddeb68e2cb
BLAKE2b-256 2e1680ceb05eec28e8c6cbe8ba6a77446a7df4c7fa74c2701cbef09f490e6c4b

See more details on using hashes here.

Provenance

The following attestation bundles were made for robustcov-0.0.2-cp312-cp312-win_amd64.whl:

Publisher: wheels.yml on smiryusupov/robustcov

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

File details

Details for the file robustcov-0.0.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for robustcov-0.0.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ea0b7273d8c83d203611dc6e195fe441c76a0a6145625f4b2d94f0dbfac913d2
MD5 c8cd4d55e4d3b850a20ab64489579a7e
BLAKE2b-256 90f0c7c40ca09b6009d430b1e3d41233f7794846485308052c415bdf9df5c2b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for robustcov-0.0.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on smiryusupov/robustcov

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

File details

Details for the file robustcov-0.0.2-cp312-cp312-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for robustcov-0.0.2-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 e0d291f28861bd7dbb77af63f3a186d894fda9fb579b86efccf242180c9cd3cf
MD5 135a7dd748809e5ce17e203c800aec16
BLAKE2b-256 cedc73abcfc298e4370c199cdf85afd5737ef0d7df4acb8013200164fab73b34

See more details on using hashes here.

Provenance

The following attestation bundles were made for robustcov-0.0.2-cp312-cp312-macosx_11_0_x86_64.whl:

Publisher: wheels.yml on smiryusupov/robustcov

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

File details

Details for the file robustcov-0.0.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for robustcov-0.0.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8a2445b6a2e6d1f2d31ca0c1d3bc4ac35c1413f70cf4a27eede9b66494e0ab28
MD5 1f8c7d6abfc2baae83509d8c57475a2e
BLAKE2b-256 1ed27c9757523e2616441763590b11e06514bba9dee71a6598b172b3e95cbd09

See more details on using hashes here.

Provenance

The following attestation bundles were made for robustcov-0.0.2-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: wheels.yml on smiryusupov/robustcov

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