Skip to main content

Native Python bindings for Betterleaks

Project description

PyBetterleaks

PyPI Python License Wheels Docs

Python-native Betterleaks. No CLI wrapper. No Go toolchain in your runtime image. No runtime subprocess.

pip install pybetterleaks
from pybetterleaks import BetterleaksConfig, Rule, scan_text

config = BetterleaksConfig(
    rules=[
        Rule(
            id="internal-token",
            description="Internal service token",
            regex=r"INTERNAL_[A-Z0-9]{16}",
            keywords=["INTERNAL_"],
        )
    ]
)

result = scan_text("INTERNAL_0123456789ABCDEF", config=config)
for finding in result.findings:
    print(f"{finding.rule_id}: {finding.secret}")

PyBetterleaks wraps the Betterleaks Go engine through a tiny ctypes JSON ABI and returns typed Python dataclasses. It is built for CI jobs, Python services, notebooks, agent tools, and Docker images that should stay simple.

Status: v0.2 development. The SDK, Go bridge, typed config API, async wrapper, packaging tests, docs, and CI workflows are in place. Musllinux/Alpine remains unsupported for the current Go c-shared design; see Platforms.

Getting Started

From a checkout:

uv sync --all-extras --dev
uv run python scripts/build_native.py
uv run pytest

Run a scan with the bundled Betterleaks defaults:

uv run python - <<'PY'
from pybetterleaks import betterleaks_version, scan_text

print("Betterleaks:", betterleaks_version())

result = scan_text(
    "AGE-SECRET-KEY-"
    + "1QPZRY9X8GF2TVDW0S3JN54KHCE6MUA7LQPZRY9X8GF2TVDW0S3JN54KHCE"
)

for finding in result.findings:
    print(f"{finding.rule_id}: {finding.secret}")
PY

Expected output:

Betterleaks: v1.6.1
age-secret-key: REDACTED

The example secrets are synthetic fixtures.

Why Not Subprocess?

Shelling out is fine for one script. It becomes awkward as an SDK boundary:

  • process output becomes the API contract
  • quoting and path behavior leak into user code
  • Docker images need extra binaries
  • errors are process-shaped instead of Python-shaped
  • async and agent workflows pay process startup overhead

PyBetterleaks keeps the Betterleaks engine native and gives Python an importable API:

Python app
  -> pybetterleaks
    -> ctypes JSON ABI
      -> bundled Go shared library
        -> Betterleaks

API

from pybetterleaks import SUPPORTED_GIT_SCOPES, betterleaks_version, scan_dir, scan_git, scan_text

print(betterleaks_version())
print(SUPPORTED_GIT_SCOPES)

text_result = scan_text("token goes here", validation=False, redact=True)
dir_result = scan_dir(".", config_path=".betterleaks.toml")
git_result = scan_git(".", scope="worktree", config_path=".betterleaks.toml")

scan_git currently supports local worktree scans. It validates that the target is inside a Git worktree, skips .git metadata, and does not invoke the Git executable.

Programmatic config uses Betterleaks' TOML concepts directly:

from pybetterleaks import BetterleaksConfig, Expr, Rule, scan_dir

config = BetterleaksConfig.with_defaults(
    rules=[
        Rule(
            id="internal-token",
            description="Internal service token",
            regex=r"INTERNAL_[A-Z0-9]{16}",
            keywords=["INTERNAL_"],
            filter=Expr('filter.containsAny(finding["secret"], ["_TEST_"])'),
        )
    ],
    disabled_rules=["generic-api-key"],
)

result = scan_dir("src", config=config)

Async wrappers run the blocking native scan in an executor and request cooperative cancellation from the Go bridge when the task is cancelled:

import asyncio
from pybetterleaks import scan_text_async

async def main() -> None:
    result = await scan_text_async("INTERNAL_0123456789ABCDEF", timeout_seconds=5)
    print(result.ok, len(result.findings))

asyncio.run(main())

Docker

FROM python:3.12-slim

RUN pip install --only-binary=:all: pybetterleaks

COPY . /app
WORKDIR /app

CMD ["python", "scan.py"]

No go install. No Betterleaks CLI. No install-time binary downloads.

Platforms

Target wheel matrix:

Platform Status
Linux x86_64 manylinux target
macOS arm64 macOS 11+ target
macOS x86_64 macOS 11+ target
Windows amd64 win_amd64 target
Linux arm64 future CI capacity
Alpine/musllinux unsupported; no wheels published

Previous Alpine experiments failed while loading the Go shared library through Python ctypes on musl:

initial-exec TLS resolves to dynamic definition

This is a Go + musl shared-library loader limitation, not a missing Docker package. The same failure reproduces with Go c-shared and a Go c-archive linked into a musl shared object, so the project will not publish musllinux wheels until that loader path is fixed. Use Debian/Ubuntu-style glibc Python images, such as python:3.12-slim, for supported Linux runtime images.

Local Development

uv sync --all-extras --dev
uv run python scripts/build_native.py
uv run pytest
uv run ruff check .
uv run mypy python
uv run --group docs mkdocs build --strict

Build a local wheel after the native library exists:

uv build --wheel

Run the Docker packaging E2E:

bash e2e/run.sh

Benchmarks

Synthetic benchmarks live in benchmarks/:

uv run python benchmarks/bench.py --rounds 10 --files 50 --secrets-per-file 2

To compare against a local Betterleaks CLI:

uv run python benchmarks/bench.py --cli --cli-path /path/to/betterleaks

README numbers will stay blank until they are measured on release hardware. No fake charts.

Security And Supply Chain

  • Betterleaks is pinned in bridge/go.mod
  • the bundled Betterleaks pin is documented in docs/betterleaks-pin.md
  • CI checks that go.mod, go.sum, and the bridge version constant agree
  • wheels are built in GitHub Actions
  • release artifacts get SHA256 checksums
  • PyPI publication uses trusted publishing
  • runtime installs never download native binaries
  • wheel smoke tests import the package, run betterleaks_version(), scan text, and exercise typed config plus async wrappers
  • Docker E2E installs a locally built wheel into a no-Go runtime image

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

pybetterleaks-0.3.0-cp314-cp314-win_amd64.whl (12.6 MB view details)

Uploaded CPython 3.14Windows x86-64

pybetterleaks-0.3.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (12.5 MB view details)

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

pybetterleaks-0.3.0-cp314-cp314-macosx_11_0_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.14macOS 11.0+ x86-64

pybetterleaks-0.3.0-cp314-cp314-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pybetterleaks-0.3.0-cp313-cp313-win_amd64.whl (12.4 MB view details)

Uploaded CPython 3.13Windows x86-64

pybetterleaks-0.3.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (12.5 MB view details)

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

pybetterleaks-0.3.0-cp313-cp313-macosx_11_0_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ x86-64

pybetterleaks-0.3.0-cp313-cp313-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pybetterleaks-0.3.0-cp312-cp312-win_amd64.whl (12.4 MB view details)

Uploaded CPython 3.12Windows x86-64

pybetterleaks-0.3.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (12.5 MB view details)

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

pybetterleaks-0.3.0-cp312-cp312-macosx_11_0_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ x86-64

pybetterleaks-0.3.0-cp312-cp312-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pybetterleaks-0.3.0-cp311-cp311-win_amd64.whl (12.4 MB view details)

Uploaded CPython 3.11Windows x86-64

pybetterleaks-0.3.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (12.5 MB view details)

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

pybetterleaks-0.3.0-cp311-cp311-macosx_11_0_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

pybetterleaks-0.3.0-cp311-cp311-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pybetterleaks-0.3.0-cp310-cp310-win_amd64.whl (12.4 MB view details)

Uploaded CPython 3.10Windows x86-64

pybetterleaks-0.3.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (12.5 MB view details)

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

pybetterleaks-0.3.0-cp310-cp310-macosx_11_0_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.10macOS 11.0+ x86-64

pybetterleaks-0.3.0-cp310-cp310-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pybetterleaks-0.3.0-cp39-cp39-win_amd64.whl (12.4 MB view details)

Uploaded CPython 3.9Windows x86-64

pybetterleaks-0.3.0-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (12.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

pybetterleaks-0.3.0-cp39-cp39-macosx_11_0_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.9macOS 11.0+ x86-64

pybetterleaks-0.3.0-cp39-cp39-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file pybetterleaks-0.3.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 97b5631609a36da27452307f197d0f0453ef9a2aa8a02379285c578889283678
MD5 732b4e77c2b3df00c3414db2d70dc043
BLAKE2b-256 df04448a2eba6b9af0f9f63463fe40d29eb5bec5bbfa99c75027fe0c37e94377

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 4bb7ce55042da9294114ab6f8acbf8ca873ddb7d80f73e353a760666de2c123a
MD5 c521c7aa91048efc5aa5fefafa7cef8f
BLAKE2b-256 5e208e11978244ea7ba0cd83e48a92d6e9b402d21f32fc3ebf2250f9ae9aea00

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp314-cp314-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp314-cp314-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 820a90f5392f02488204cbeedfe18adf7e79198f03eb70b811274dc1b6ed815c
MD5 52ab5dc60b5774d42b28ee9babe52270
BLAKE2b-256 a4eec4fe7284faaaeb6395ad2452bd447ec05326a61f4ed0ff2f843257045816

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp314-cp314-macosx_11_0_x86_64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c2ad782bde831b242d1236b6eb798bb44543fc8eee2da174d491b1a4354d4b79
MD5 d13432d8d4676d0e2a821695b41d1683
BLAKE2b-256 b7cfa455f1b899bba11a60cd06824339f7582f5681bd6b8344846559d79dc95d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5520e6ee2b54267e7dcf57f159d578405554fdaa629cb7b523001e175a3bc644
MD5 3100bb9a1150b5aa49151d5b3d12567e
BLAKE2b-256 63e700d045db410d3acff62d4756f88d4c6b83d5dbb70bce8692d6da3ed5ebf7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 ab16ee21a5e3b6201e8b689123d82d0679b7dcab2ac603dff17c55e01de3c443
MD5 914f4776e8b4588ad8fe0e298599b2e0
BLAKE2b-256 bd90e210a87b0de5a6107d79adcf2750b4302ed08d1b33306798ecbdc7683de3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp313-cp313-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 a594ab4e825bd1515564a82c7e32304303bfeb2ac4e2a83071c500eed20fa1a5
MD5 65627d8c74e67c65b2ce1c86962d292d
BLAKE2b-256 f8c82742b63f314205da9a30bf98a93ccec9bec479a7c2636a3d71af228fd6c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp313-cp313-macosx_11_0_x86_64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 055c73786ccff0978802599e55e3ab0868aa4fbe3f64f9d8888b97571daa800a
MD5 e4cf0008d69b7b54bafb2e302c18c7ee
BLAKE2b-256 ec61ca18193ddffa5bdc3a977844f571963007915d187152f83385af1feb1fbb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 969d63d694a5323ac5567001f3225ac89c02b66212e7933f58a05ee37696e79f
MD5 7b0dd8a9546d79ce4b438b78d4e2858e
BLAKE2b-256 6778e23e8482fb63985bd9a94b175112d73ee3f13d55d218b6846e314c25228a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 f99c90da2ba47ba86195a20ff770358428af81697eb8c263692e81af307fb187
MD5 149be5ee76580fb90984a97d56716c09
BLAKE2b-256 90c36d10621f0a2e2d59aada965aa4caced85ebf357767fd3fa4edca9f384c64

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp312-cp312-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 090e4c18b75d3afee6563ee12e5c94af7edd8b6da66830fc1dacde8c2fef4bf1
MD5 57de5b7899161e2da3a5a2b9650f2bc7
BLAKE2b-256 50ee425dbfe025e94412423383ca097a59605d5c96874ccb4f67a4c4e9549439

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp312-cp312-macosx_11_0_x86_64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4d5117f4b4dc51df367c355b63fd7f1011967af59717907ce4a6ca6d481b75df
MD5 3740f8d35b589b4d50656108b04781ec
BLAKE2b-256 61b7abc4b3bb6462c0772ae5221111c66953aea7b146a30d2f3cca7ff0c5ab59

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 407a668e5dac717624f3cfd9b9de4055c25539c667d97d12fbd8367c0f8da5f2
MD5 0379090043fcd7ae3476dddc3b46fca4
BLAKE2b-256 34cb492605fbb88b9ba89505d47ddd33a0a1f1dba2f15b1f706fe71e51dd391d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 9739b16c17e392568f06cff66010ce8522cb894adb0d30da072f730a1f5ffdae
MD5 801219d99e8a82af6108151471db6870
BLAKE2b-256 74b8cdaff54cbb58f52cdb72b74a587e473d4b668b9f1404602f98ea73842cc3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp311-cp311-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 db76b552dad0525f757faef221433b41dbcde0a729e276cb622bfdff00e7be75
MD5 9a8d0eabdb47829391c1d31566a68e33
BLAKE2b-256 40c8cfec66bbf02540480ee1114e0d9c7833ceb717e1dd90b952914809980885

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp311-cp311-macosx_11_0_x86_64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aafc20a71c2992cefe53857b4b2c92bb24cf9f4cb30172d0b6dffc1bb03edc78
MD5 f9c45a336fc3804d19173967e308b441
BLAKE2b-256 0e5e75746bb45cc03c83d251acfec6ebf176165b3025cdaee6b1e46527ef10a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b282e0b1159ce387a3fceb45abd2f09f0f58e4d77ff93603c4cecded77bf2de6
MD5 a60c4b088e2ee5428847ab1e29b1ec2c
BLAKE2b-256 ce0af4fbc90af6662455f5ce86d12f49cc60249f5aeb3402094e289ec9169bf2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 7480066e21c13d60dce3853dfc228ee0601f2392048c539a8eff21de60efb9a5
MD5 261807845338c7b4766f42aad5de0118
BLAKE2b-256 9cade050f060af93681383ac841a5082cd493c6b1401d24790a6c6bd33c3a5e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp310-cp310-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 c1d5b67a1582742b75049995d76c3843b28c90ef1ece121d9c2775bce83e8756
MD5 9677edd2656382d6809b803c0d3eb415
BLAKE2b-256 cec6c8920dadbcf42dadf5febba76548f13abdce468501e7806873b497a7a4d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp310-cp310-macosx_11_0_x86_64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b80ed1ca672b75a602da87bb7b3a86bdbace523d01f491de9c2f6cecdc11682b
MD5 7104b16f5e2b7d5c539ecec05240cf1e
BLAKE2b-256 7031ee01a4e69cdeab4aa86b627dc9df44e7aae2ab63133129ae3e7aa3e3d945

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 6f63678cc1dbaf665a1b4c11779691f35ee0a41cf8476da8c73003bed6331eb4
MD5 de32c0fd0c7fb7da6bcbe9c90d7b8b29
BLAKE2b-256 644484e6f6a0ab640fddf2b0e4f434487153c84c23634628bde1fae4acb38f6a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp39-cp39-win_amd64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 f1a338cfb09e0aa58fe961ca3c5126d1dc2f372d25ac3db453132861631bee8d
MD5 2f50ef1ee6788a07282ee3fde493f3a0
BLAKE2b-256 4823218225449e7bebf1c793084e97d1b16470a342242347fe94f6925a1a29ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp39-cp39-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 0769d8c3bebf3aa8b0f70886adc53280e48c9595e13318725e6fa87d324d0558
MD5 99430b955776d60f04271c180f29f330
BLAKE2b-256 1fed2e95ebeb68b432d77e0a84418f6dfab0eb6bcdc5a5ef7ef9bcc74f144fad

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp39-cp39-macosx_11_0_x86_64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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

File details

Details for the file pybetterleaks-0.3.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.3.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bbd0eb3714b3e739a93a26f86834dbb547359d38d770497c1c7e42ea3aca34ab
MD5 bba3edbea69f5378ca48f59b93f77975
BLAKE2b-256 615b3da9c2d9b461c9e0a21792636946574a06f77e7f5b9544f1ff3cc40eae3d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.3.0-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: publish.yml on roymezan/pybetterleaks

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