Skip to main content

Native Python bindings for Betterleaks

Project description

PyBetterleaks

PyBetterleaks: Python-native Betterleaks with bundled platform wheels and no runtime subprocess

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: alpha. PyPI wheels are published for CPython 3.9-3.15 on supported glibc Linux, macOS, and Windows targets. 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 coverage run -m pytest
uv run coverage report

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. The supported scope is explicit: SUPPORTED_GIT_SCOPES == ("worktree",).

Programmatic config uses Betterleaks' TOML concepts directly, with helpers for filters, validation results, common rule shapes, and relative extend.path handling:

from pybetterleaks import BetterleaksConfig, Expr, Rule, Validation, scan_dir

config = BetterleaksConfig.with_defaults(
    rules=[
        Rule.regex_rule(
            id="internal-token",
            description="Internal service token",
            regex=r"INTERNAL_[A-Z0-9]{16}",
            keywords=["INTERNAL_"],
            filter=Expr.min_entropy(3.5),
            validate=Validation.needs_validation(provider="internal"),
        )
    ],
    disabled_rules=["generic-api-key"],
)

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

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 wheels published
macOS arm64 macOS 11+ wheels published
macOS x86_64 macOS 11+ wheels published
Windows amd64 win_amd64 wheels published
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. Track musllinux work in issue #1.

Local Development

uv sync --all-extras --dev
uv run python scripts/build_native.py
uv run coverage run -m pytest
uv run coverage report
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

Verify the published PyPI wheel in a temporary virtual environment:

uv run python scripts/pypi_smoke.py

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 and checksum verification
  • GitHub releases attach SHA256SUMS
  • GitHub artifact attestations tie wheels back to the release workflow
  • 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
  • post-publish smoke tests install from PyPI in a temporary virtual environment

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.6.0-cp315-cp315-win_amd64.whl (12.6 MB view details)

Uploaded CPython 3.15Windows x86-64

pybetterleaks-0.6.0-cp315-cp315-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (12.5 MB view details)

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

pybetterleaks-0.6.0-cp315-cp315-macosx_11_0_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.15macOS 11.0+ x86-64

pybetterleaks-0.6.0-cp315-cp315-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.15macOS 11.0+ ARM64

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

Uploaded CPython 3.14Windows x86-64

pybetterleaks-0.6.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.6.0-cp314-cp314-macosx_11_0_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.14macOS 11.0+ x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

pybetterleaks-0.6.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.6.0-cp313-cp313-macosx_11_0_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

pybetterleaks-0.6.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.6.0-cp312-cp312-macosx_11_0_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

pybetterleaks-0.6.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.6.0-cp311-cp311-macosx_11_0_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

pybetterleaks-0.6.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.6.0-cp310-cp310-macosx_11_0_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.10macOS 11.0+ x86-64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

pybetterleaks-0.6.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.6.0-cp39-cp39-macosx_11_0_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.9macOS 11.0+ x86-64

pybetterleaks-0.6.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.6.0-cp315-cp315-win_amd64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp315-cp315-win_amd64.whl
Algorithm Hash digest
SHA256 ef1c68e201b85e3851fa3b6a444172c2dbc05b7b045e19a588ec3a9ba352618f
MD5 d4031259a64644ddc5cb9c79ce9bbdbc
BLAKE2b-256 c5af6c15243d8c74505f24637fab5ed05714304b1a7fe88fd82eadc02eb725b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.0-cp315-cp315-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.6.0-cp315-cp315-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp315-cp315-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 55de2c8f2ff8ce6c519af16a2f1e613127e6596c4476d9eafb8e0c282a756b99
MD5 cc2bf159fdcd8b9477b5892a2838a45a
BLAKE2b-256 59a46a3417efd84788c2336e1e7944ce78b044e21446b50f5a173c2bfaaff61a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.0-cp315-cp315-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.6.0-cp315-cp315-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp315-cp315-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 72c3c6d457fcc3a0a7a16b71b22e0b8d00c6a909534676326862b0845229bde0
MD5 1742ee1659521dd87ee318b440e2cd9f
BLAKE2b-256 39b9ee5932d49857f772a7b721eef51e9a0cedbf673d09b0a194a08696aae537

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.0-cp315-cp315-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.6.0-cp315-cp315-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp315-cp315-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6c6bca647beea835a5e0570576ae054feb45826c61c5399a18cf0141efc34a14
MD5 381af1a154f6a3a5e37b611caf0b4a6e
BLAKE2b-256 a30c88d4cc3fb6a2b305e2705decab2e914c5633f2a74b221e3f4adf7c510076

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.0-cp315-cp315-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.6.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 e4b32d443d6dcdeac1fb73b12f1566b879807472f1261ace5ec0747947bc2fd5
MD5 9b0adb06c6ad8d09ba42faec86d987b9
BLAKE2b-256 7bd8d87d98336c24db5ddb366f5e90092abf4b1cde8e0a2465e5321cb5a4b7b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.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.6.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 557249f47025c858df1a440f76d57b4fd7143bb7db4f3611f9b0af0609d4113b
MD5 6418127094bc992d577af00b2c0c40a1
BLAKE2b-256 ca2af80afc46620a5b34acbbc3b4c976affc5a5f78a23e6f1097e539ad6bddff

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.0-cp314-cp314-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp314-cp314-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 ff6c3bea5efe5579097dae9ba8131aea414a45381c43f4c805d873ddcc4559b1
MD5 718654d92d301b763ca3af467d29dc9f
BLAKE2b-256 b23dc4d6f1cab7268d9b0c50ddb6b4010c645dd271b7f03e6e4ad10aeeb50d87

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 171c6a2f6df1384dfb9063b4a58d873fd4168f110370e7142498f83aa368e52e
MD5 0a44e6fdfb4f8d97463224ab15415d46
BLAKE2b-256 563252e9aadc0b7ef206d7b82a56e756485ad0b29046541f71304aa720e19328

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c2a3396fb9a5c5e561385da79d1cb7352579153d809e73f43d39b4fba3ea6123
MD5 cdaab75af6c3158fb2d2c1d93e40a083
BLAKE2b-256 47d9c776b4d2c2acbc7ef37c745c151969bdb185ec123d90d5b0b075d89bf51a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.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.6.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 874b6191b6a6032bc97fd57c9d2e6906dde4d83191c6187f3901501c961c562f
MD5 bdf08ac254c80fd534790856399a12cc
BLAKE2b-256 5478a282170a21a0f1968f84370a75d66a40ab74d83edd2db09a8a0b71ece4d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.0-cp313-cp313-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 8c027920ab297d9bb5e923581fd940b3f3ec0b52efcfef99edb5eec58ef29fa1
MD5 ed78ac0f21b53549dfc49293c26ca308
BLAKE2b-256 9fef524ecee1eee9c2985556936c23d3b0d428472bd203df2a02ab968cc972e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4fc63db6f0ebbca7e54f91fe3ded6f3e3cccee51e4309a79cfb9e95d178ec609
MD5 c1d7e0f46cb380d06d61367eb83bb6a6
BLAKE2b-256 32ed62ed32ac6b2e9aafa60c0b4311c0f088a9b506b99eed9f77dfcd2453e28c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1aac6483d7fe92dfd4ba1e0653b3ab21d765f0c34afb60b0897db0837bde9bba
MD5 1aae041477933c8993e1787abe670aa5
BLAKE2b-256 b9afcde82afd317c855d75143b9204c4c5acb448fd317120f235695c916757b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.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.6.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 329730b3f0e1b3f8f415d1846e1ac05ad18f2c1a8d71d298246116c6f858c182
MD5 e825e1102496258031a34f547695dda1
BLAKE2b-256 d0af711c4f01c4dc73a74cc3b3e6e2066cae7c916558fc0848d95dad8d1b61aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.0-cp312-cp312-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 56011027980e6b6e26628b5b4fef9e1ea556207f741abcc47a3536aac22eb98f
MD5 ecd6f20d71fa7c14e2c97ac8106fef12
BLAKE2b-256 abfb24702a8c48c4b266978941e45f19a24273c7c69f52a7023824bae21e2d4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 71e4e34d5dd86be4ff9ef4227d089438160f86e84fad129da96721808f76b198
MD5 c58f3fa7b634b40697cc9c8cae791ac0
BLAKE2b-256 a76f1b05d21667b21be9cf1e44ad91563401a65795e287771719c9a93f84211c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 18505408b238c865b8744ab3b252bb14af0c8df4904f5cff17382294a5a33581
MD5 2795c124ef05caf43c7d5e26a8fb0376
BLAKE2b-256 72835173b8f8b6bc193cdd4a552bc8bb2a4f1492fdcbef210167646894fbca63

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.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.6.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 910ef7d40c9aed940e15c629a8883a6bc30e2b5fde1cdc99277d9c195ad4a561
MD5 f25d704c0bb5e87e424264efa2e08d0b
BLAKE2b-256 e79e9f10b2627c56969575445079d0615edee60d787368e47cb0341f7249d3a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.0-cp311-cp311-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 037f5f344b1cea33614c3f7838c6a419850ad4a2449c91dd89c00ed6ccbfbb00
MD5 c7068557b51874c071d64eb3e3ab77f6
BLAKE2b-256 21d64542603841022eaeeda620099551ec37efb33e45fbc25727364b67605e85

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c1615f374d0f2519d808f4b35b4f2d911a14f6f6e053fe33597ef5b5ec5fe843
MD5 1db58cb253ed3841ce726c999e92de27
BLAKE2b-256 08c6c24896c884bfd2943dd32bc1f1acebc41b4b531906143c9d89936c13ea3c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 939f89a41210de31db164e892b094154d3ceab0da74437794e9c44d0a4d7bad6
MD5 1035a59055b0015b56d664149514a5e3
BLAKE2b-256 6d6af59592487c72d73448691ca9935a338a2c8e6e3894d8f3a4e88825dacf2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.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.6.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 13ee1d7257cf591c0f2edadb1d73fd1cdcc29d09b2ba3f34c1024dce3544c023
MD5 4ec277d4a1d8ead2327c86c788427ee9
BLAKE2b-256 0bef7ec6659a68036edd55bb6b7d49139a2412b9f695faabc2dfb2fe861625b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.0-cp310-cp310-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 fa6f501a98eb9f0c2cbd255e14cacdfa933654dab80c2443e05f787c56824bcb
MD5 eca235b45f0f896d013a419f3034c876
BLAKE2b-256 2ba4c1e6f6113a997a499b8779dfe8f78613cdf9aef7ef03beed6acd94f51562

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a4f89d453a10ec467b1aa25bebe41ef9a972cba65548ade4d4dc516cc5963c68
MD5 53148cf77c771d6bbc619c57f543eec7
BLAKE2b-256 65d17565a0b9f25f8daeac4b1802fa37965e3fec62508eb7777cf7fdd1c892a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.0-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 975761c681435c79075213831226acfd78083c0bf9a679144c5bd4c69a6c9627
MD5 6a4214e64f21e36e33d0df150def6135
BLAKE2b-256 d16c7f80601e0ced3fbd664245284191ad88512f57139c7d6ba28e3c47caaf22

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.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.6.0-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 89d6e7ee5f2063ca8176540d4095c167bef0638dce71f2ba34d8c7f749573d71
MD5 a8879cc52f2f5e3b73d9b1193879906f
BLAKE2b-256 d4bde9d243b41a1c87b8e837af0871891dd926ad6cb62d042c8c97ab09b65de6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.0-cp39-cp39-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 01dbda11ee2fae25882e55019e48b2fc9bf3d9498372603381abc171c91f7705
MD5 4c8336626547f995f3cfb389eb47f0c8
BLAKE2b-256 a40379dd84d9ca7c373ad5562383f3063a5214a378568fa2a65111ca3afe0915

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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.6.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cb095d0467a90d5a24f4b02795a0d9683a581a512bf144d9a3a1ba71c782ad89
MD5 82f3407b26bf466885f06d0025fcea02
BLAKE2b-256 db189f2098bfc7b789d1258025e4fd912691f562b2f85424fe4ceab380fdd181

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.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