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

The power of Betterleaks with Gitleaks-style secret detection, in the palm of your Python hand:

from pybetterleaks import scan_text

result = scan_text(
    "AGE-SECRET-KEY-"
    + "1QPZRY9X8GF2TVDW0S3JN54KHCE6MUA7LQPZRY9X8GF2TVDW0S3JN54KHCE",
    validation=True,
    redact=True,
)

for finding in result.findings:
    print(f"{finding.rule_id}: {finding.secret}")
    # age-secret-key: REDACTED

Need app-specific rules, validation metadata, and safe logs? Keep redaction on, let Betterleaks' built-in classifier shape the finding, and ask the native engine to validate when the rule supports it:

from pybetterleaks import BetterleaksConfig, Rule, scan_text

config = BetterleaksConfig(
    rules=[
        Rule.prefixed_token_rule(
            id="service-token",
            description="Internal service token",
            prefix="SERVICE_TOKEN_",
            token_pattern=r"[A-Z0-9]{16}",
            validate='{"result":"needs_validation","provider":"internal"}',
        )
    ]
)

result = scan_text(
    "SERVICE_TOKEN_0123456789ABCDEF",
    config=config,
    validation=True,
    redact=True,
)

finding = result.findings[0]
print(finding.rule_id)           # service-token
print(finding.secret)            # REDACTED
print(finding.validation_status) # needs_validation
print(finding.validation_meta["provider"]) # internal

The same importable API scans directories and Git worktrees without a Betterleaks CLI process:

from pybetterleaks import scan_dir, scan_git

dir_result = scan_dir("src", validation=True, redact=True)
git_result = scan_git(".", scope="worktree", redact=True)

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

Uploaded CPython 3.15Windows x86-64

pybetterleaks-0.6.2-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.2-cp315-cp315-macosx_11_0_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.15macOS 11.0+ x86-64

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

Uploaded CPython 3.15macOS 11.0+ ARM64

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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14macOS 11.0+ x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10macOS 11.0+ x86-64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.9macOS 11.0+ x86-64

pybetterleaks-0.6.2-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.2-cp315-cp315-win_amd64.whl.

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp315-cp315-win_amd64.whl
Algorithm Hash digest
SHA256 b9836e5873ecd9b8fb911f99b1f180f7c20d02cce5de13e934c0c5bcb9d61f15
MD5 0fa0d693258be34233c13f779b1ca373
BLAKE2b-256 0a0254ccc2ce4e9d16c39188487d68c6d72d607eb529a3b729937935bc893451

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.2-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.2-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.2-cp315-cp315-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 984ac3e2ec9f8a013bff050e33003da887444b9b8f06803681ef7aad4c7caec3
MD5 6252952e503f449b480f1ab806d754c1
BLAKE2b-256 fa0996308eb420095a307fc3698bae1602f83b73dd877233893410e7f0b00beb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp315-cp315-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 f7012f24c9bad5a69ec2582a7161178e8d25d55b758b3be2a92908d48b06db3b
MD5 848b58325698287ae33e44608853c2b0
BLAKE2b-256 562fbb583bd4ea236ff0f8e53546e0e53b60933e85136f116404e58cd7e91075

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp315-cp315-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 02215d3a937369fe27f1c5e5b2722a8c98846399557b99a81dfb1ca2e2d11c22
MD5 85d74ffa83bac77195517332fd35cd55
BLAKE2b-256 4a40e9a7c78a40dff697bcc03e652565af4e3e96706736d3961e870277edddfa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 b0fa51b6a6dc37bbcad37f2e5f31921d6f92ffbb077772fb161826cd5770e379
MD5 c7db1bf51faf36eb7ffab373b3e285c3
BLAKE2b-256 b3399b5e6739dfaed460eee24bba16c09eb05b49db703a9828cb9ae7bf4f660c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.2-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.2-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.2-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 ca9a48885655bddecab176bae860c5c08d54eacc7f29271a3fe80d68140fb2c1
MD5 3b4b3a2292a1d25efe0149b34c6e2567
BLAKE2b-256 4eda9b404098e4906bbbca7fdeb33cb00b21b0340931602a6e914e013b015d16

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp314-cp314-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 da17134929209102eb5a9c0bee235f79cacd88dad3f04dd66bc14a5e6e8a4708
MD5 3cc5226065edc5de8685d40eb0049777
BLAKE2b-256 6e992422c372c4f872996ac6a55c1f356b5c5fbe795c91894233e25a98626f2e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eb82a0acad84b6a842c4e67d34cef2e5ba2e48931fc1764fc8381871ac6fd62b
MD5 bc54a5cd552db2a651636c039db33a04
BLAKE2b-256 c41f35772b6e5d57b56842ed6cbe2c9b090d53f6e501bfd604bc9350c7b93cef

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 406ca96caad01e8e995b936f066b278baf787368f2c7b62c46aa06ccf36c9d0f
MD5 87bd95b54f0f3170dce4399d860b77c1
BLAKE2b-256 30d24ea8cd391e6059f2bf85a67dac051843d39828032da9283ad53956e7c452

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.2-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.2-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.2-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 c8cbb8045e0c6b7e95b4a62679d9478ce82671fe53c8341c76830a154bfc096f
MD5 731ae2340d05bd791650458e99e157fe
BLAKE2b-256 9ad181da013a3de9c8d962203fba51c591f154989973a50f1c1ebc4355ba66a6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 0b60b3b9732402f1811daa9dc5cf3ff8c9177aa163a3e4eb9c6cc4ebb5b14f54
MD5 14af5a6c17cfafca442350a99aac7a97
BLAKE2b-256 32da881f2aaad3c8279b3ffe289b3e89d6a7ea4d45ff94b11174fd1d45a00827

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 04957a962ed0f1eabc0bd6e160d1a0346bf76450f1f9f58831eaa30be5f7641c
MD5 53103e7c5c0132b74b7a6c61162aa365
BLAKE2b-256 49172a0fa5399ccbd089f1bcf9426d5e1d32b37807b8963bf1f5aa50b271b95d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 821ed35d9f873ae001e188a5342e7ec2140dbf00a02a2a0cc7e82b8ea1b64e66
MD5 a79785c94949320de647768b39917820
BLAKE2b-256 80cde5a59a9eb678d7b6cf6c03418869928273fa53a98c1219404df577787bfc

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.2-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.2-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.2-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 cb29b9fb646751865ccc630520db1df87176fd5eb45bd13d0d1260664766e70f
MD5 425b10803eac9d6e73b9f8c0de391e63
BLAKE2b-256 1b7e01dec555a9941f6a8b9b062226a3371f3b8024d17898707e1b7a4917ce2b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 827caa6d94beb76c0fead9d1c9273bdf1bd10421f7c53018b7ccde130b5f573b
MD5 e42970f4e7884a7c01210294b5553d80
BLAKE2b-256 0a3aec249cd7df56c1ec9cc7ef7ad6de7e8874a057993dd32ad99d40aa23be35

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 78ddeb96cc0e9e1059992ce8212b3c4af56e5cf687a19b816efaee2a826acfb7
MD5 7f2f015ec24f6a2a758b9cc02f21a629
BLAKE2b-256 f38bf68de9e2f776aae73613b83b8171bbc8400d2a16829cc66aecc702b7b12c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 008d984fa527b2e6116fd7ed9b504108a02d601144d0ce077170bae88bae2508
MD5 21bb17d68e2b5b7e158bc87596d70ab3
BLAKE2b-256 4158722d806540b6ec7372461f32150b4783c76ffac24333d20ada10d54233d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.2-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.2-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.2-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 dc5325903a97376900492e0e71327dc7f28ab3486ae1d7cc53da6982db970f6b
MD5 cd67b1952dabcac60cfb8c45c565a09b
BLAKE2b-256 28486b3eea4c22a127b833128297dfe2f24769a84cd91a0fe4e5d1740b695cdf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 f17f8122238ba37755787825d1492493dd80e11496ebe699629542edbb4179e8
MD5 a0befb5a2fc25c92411f49f19c8f9f2a
BLAKE2b-256 fc2125cb99a4111eddcb45e053eb99f78b48fce3e632de91f6a2d205dabe5b53

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8d59dbc649cbefa9678b18889f86faf036c2651969e3d72af77fa8746a7f3ddb
MD5 d5df0914b0382df2f5a7a3279b7730e1
BLAKE2b-256 5c66106b9db7dda7e45298068023798e8d33e8a0f9ddc31b9da9b748221afa29

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 759d11024f308a5290c55dfab044813768083e1cbb2da63ea9df59d99e7d142e
MD5 0873602836fc02751d123c1d69af604e
BLAKE2b-256 6b1be5226bfed07cf028e9b16971f7aecdc5421ce7891e00f5f4036c1ad982a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.2-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.2-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.2-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 85246ca2bba5e11f5a1de3a12f302f88e111ab14190b6124d695c7364dad93a6
MD5 37f6d26e52bfd540f6eef1e113b63035
BLAKE2b-256 aecdaca1b475a38f1ace193b8d2dfcce989048801f427cb2ff558c2e03b92c05

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 7174d5bdbcddedcb8bd16794240aa2905daa82ecef1f64ce96b571a56e994539
MD5 3b54c26fa2c0435a4e79f75a4155a780
BLAKE2b-256 c4dc67ba3e51d5ca268921f3a6f1be5479690555584c6a93f62af86d67ed37b9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f7daa5f1cdcbfaaf270f789af35ab1edcf3b90688c54e6f9010affee3c4df0e
MD5 673d8514e19f341c9d0bd1f48c839f41
BLAKE2b-256 7f9cac600350bdcaa8bd552a98405c2be6248e9255117bc97ba235c0c2e69dcc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b945bf9f8ee83c19b328072b8fbe01e39f7944a14f0f69b51ca9d120f75de68b
MD5 6eba6bad1510e0b7e65c433577586135
BLAKE2b-256 99b7802e1a597a0523547e8bfbf8b1cea5aff196ceab19f7a5e62bd6de358ee8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybetterleaks-0.6.2-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.2-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.2-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 dd24cb806091b4e731c7fdcf30e689f795f0489d8e1031c81718e621aa5483cb
MD5 a68100c0384199adf39d61c47998ca4a
BLAKE2b-256 15b40347bf3b0eeed5674c9976c09834571b5871acfaf21157c6a94676f2f973

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 8c6dc813051baa7b214f9c461ee233fd6264439b06536c31c80f3be81e529b5e
MD5 eb09c0ba04059fda22defb33f2c93d61
BLAKE2b-256 91884cd981e98a2606e4d6f3f3416143f810e43792f7b5b3a57ef069d5dd7ce1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybetterleaks-0.6.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d50e54172f7b3ccb1564a245a9117b4ecfe41e26c6908ab0335ec0673399f7f1
MD5 be54fd34f5e10e269f1eb848e5244ad7
BLAKE2b-256 5ac2960344dd0ec8f02558e4763f126c5b25687fc9310aa1dae32068632f9647

See more details on using hashes here.

Provenance

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