Skip to main content

In-process libmspack bindings for Microsoft CAB, CHM, SZDD, KWAJ, OAB, and HLP LZSS streams

Project description

pylibmspack

pylibmspack provides in-process Python bindings to libmspack for reading and extracting Microsoft CAB, CHM, SZDD, KWAJ, OAB, and HLP LZSS streams.

Install

pip install pylibmspack

Supports Python 3.9+

Development

python -m pip install -e ".[dev]"
ruff check .
ruff format --check .
python scripts/check_c_binding.py
python scripts/check_parser_exposure.py
python -m pytest

The editable install builds the local C extension and uses the vendored libmspack source tarball.

Optional security and native-code checks:

python -m pip install -e ".[dev,security]"
python -m pip_audit --local
python scripts/check_native_static.py
python scripts/fuzz_smoke.py
python scripts/build_libfuzzer.py
python scripts/run_libfuzzer.py --runs 1000

# Linux/CI only, where Atheris wheels are available:
python -m pip install -e ".[fuzz]"
python scripts/run_atheris.py --exercise-disk --runs 1000

check_native_static.py runs cppcheck and clang-tidy when those tools are installed. CI also runs CodeQL, dependency review, OpenSSF Scorecard, and ASan/UBSan smoke tests. check_parser_exposure.py asserts that each parser is covered by Python wrappers, byte-backed and disk-backed fuzz smoke paths, native fuzz targets, seed corpus routing, and binding hardening checks. The Atheris harness fuzzes the public Python APIs, while the libFuzzer harnesses compile the vendored libmspack sources into standalone per-format fuzz targets. On macOS, install Homebrew LLVM and put /usr/local/opt/llvm/bin or /opt/homebrew/opt/llvm/bin on PATH if build_libfuzzer.py cannot find a libFuzzer-capable clang. The libFuzzer build defaults to AddressSanitizer; pass --sanitizers address,undefined when you want a UBSan campaign. Atheris currently runs in the Ubuntu CI job via the Linux PyPI wheels; macOS local Atheris runs may require a separate upstream installation path.

For longer local fuzzing campaigns, keep the corpus and crash artifacts between runs:

python scripts/run_atheris.py \
  --corpus-root build/fuzz-corpus/atheris \
  --artifact-dir build/fuzz-artifacts/atheris \
  --exercise-disk \
  --runs 100000

python scripts/build_libfuzzer.py --out-dir build/libfuzzer
python scripts/run_libfuzzer.py \
  --fuzzers-dir build/libfuzzer \
  --corpus-root build/fuzz-corpus/libfuzzer \
  --artifact-dir build/fuzz-artifacts/libfuzzer \
  --runs 100000 \
  --value-profile

Both runners accept --target repeatedly to focus one or more formats, and pass extra fuzzer flags after --. For example:

python scripts/run_libfuzzer.py --target cab --runs 0 --max-total-time 3600 -- -print_pcs=1

The repository also includes per-format dictionaries in fuzz/dictionaries/. The Docker fuzz check runs both Atheris and libFuzzer inside Linux:

docker build -f fuzz/Dockerfile -t pylibmspack-fuzz-check .

Because this package is intended to process broadly untrusted files, the repository also includes self-contained ClusterFuzzLite integration for GitHub CI. This does not require enrolling the project in external OSS-Fuzz service; the OSS-Fuzz-compatible builder image is used only as a standard way to compile and run the native libFuzzer targets:

  • .clusterfuzzlite/ builds the native fuzz targets with the ClusterFuzzLite toolchain.
  • cflite_pr.yml fuzzes pull requests for 10 minutes.
  • cflite_batch.yml runs a weekly one-hour batch campaign.
  • cflite_cron.yml performs scheduled corpus pruning.

Optional compatibility check from a local oss-fuzz checkout:

python infra/helper.py build_image --external /path/to/pylibmspack
python infra/helper.py build_fuzzers --external /path/to/pylibmspack --sanitizer address
python infra/helper.py check_build --external /path/to/pylibmspack --sanitizer address

Usage

from pylibmspack import CabArchive

cab = CabArchive("example.cab")
print(cab.files())

print(cab.read("hello.txt"))

cab.extract("hello.txt", "./out")

cab.extract_all("./out")

In-memory usage

from pylibmspack import CabArchive

data = open("example.cab", "rb").read()
cab = CabArchive.from_bytes(data)

info = cab.info()
print(info["files_count"], info["flags"])

payload = cab.read("hello.txt")

Safe vs raw extraction

from pylibmspack import CabArchive, CabPathTraversalError

cab = CabArchive("example.cab")
try:
    cab.extract_all("./out", safe=True)
except CabPathTraversalError as exc:
    print("Blocked unsafe path:", exc)

# Raw extraction (no safety checks)
cab.extract_all_raw("./out-raw")

CHM extraction

from pylibmspack import ChmArchive

chm = ChmArchive("manual.chm")
print(chm.info())
print(chm.files())

data = chm.read("index.html")
chm.extract_all("./chm-out")

CHM from bytes

from pylibmspack import ChmArchive

data = open("manual.chm", "rb").read()
chm = ChmArchive.from_bytes(data)
print(chm.files())

SZDD extraction

from pylibmspack import SzddFile

szdd = SzddFile("readme.tx_")
print(szdd.info())

payload = szdd.read()
szdd.extract("./out")

SZDD from bytes

from pylibmspack import SzddFile

data = open("readme.tx_", "rb").read()
szdd = SzddFile.from_bytes(data, name="readme.tx_")
print(szdd.info())

KWAJ extraction

from pylibmspack import KwajFile

kwj = KwajFile("setup.kwj")
print(kwj.info())
data = kwj.read()
kwj.extract("./out")

KWAJ from bytes

from pylibmspack import KwajFile

data = open("setup.kwj", "rb").read()
kwj = KwajFile.from_bytes(data, name="setup.kwj")
print(kwj.info())

HLP LZSS stream extraction

from pylibmspack import HlpFile

hlp = HlpFile("compressed-help-stream.hlp")
data = hlp.read()
hlp.extract("./out", out_name="help-stream.bin")

The bundled libmspack source exposes the Microsoft Help LZSS codec, but does not implement a full WinHelp .hlp container and topic parser.

OAB extraction

from pylibmspack import OabFile, OabPatch

oab = OabFile("full-download.lzx")
data = oab.read()
oab.extract("./out", out_name="address-book.oab")

patch = OabPatch("incremental-patch.lzx")
patch.apply("address-book.oab", "./out", out_name="address-book-new.oab")

OAB .lzx files are Exchange Offline Address Book payloads that use LZX compression; this is not a generic LZX archive interface.

Multi-cabinet sets

from pylibmspack import CabArchive

cab = CabArchive("part1.cab")
info = cab.info()

if info["has_next"]:
    print("Next cabinet:", info["next_cabinet"])
    print("Disk label:", info["next_disk"])

FAQ / troubleshooting

Why do I get CabPathTraversalError?
The archive contains absolute paths or .. segments. Use safe=False only if you trust the archive contents.

Can I read from bytes instead of a file path?
Yes. Use CabArchive.from_bytes(data) and then call files(), read(), or info().

Why does extraction fail with CabDecompressionError?
The CAB may be corrupt, truncated, or uses an unsupported compression method.

API reference

CabArchive(path: str)

Open a CAB archive on disk.

CabArchive.files() -> list[CabFileInfo]

Return metadata for each member as a CabFileInfo TypedDict. Each entry includes:

  • name (str)
  • size (int)
  • dos_date (int)
  • dos_time (int)
  • date_y / date_m / date_d (int)
  • time_h / time_m / time_s (int)
  • datetime_utc (str, ISO 8601)
  • attrs (int)
  • is_readonly / is_hidden / is_system / is_archive (bool)
  • folder_index (int)
  • offset (int)
  • compression (str: none, mszip, quantum, lzx)
  • has_prev / has_next (bool)
  • prev_cabinet / next_cabinet (str | None)
  • cabinet_set_id / cabinet_set_index (int | None)

CabArchive.read(name: str, , max_size: int = 2561024*1024) -> bytes

Extract a member and return its bytes. Enforces a max_size limit and uses safe path validation.

CabArchive.extract(name: str, dest_dir: str, , safe: bool = True, max_size: int = 2561024*1024) -> str

Extract a member to disk and return the output path. When safe=True, absolute paths and traversal are rejected. max_size is enforced while decompressed bytes are written.

CabArchive.extract_all(dest_dir: str, , safe: bool = True, max_size: int = 25610241024, max_total_size: int = 10241024*1024, max_files: int = 10000) -> list[str]

Extract all members to disk and return output paths. max_size is enforced per member, max_total_size caps total decompressed output, and max_files caps the number of extracted members.

CabArchive.extract_raw(name: str, dest_dir: str, , max_size: int = 2561024*1024) -> str

Extract a member using the raw path (no safety checks).

CabArchive.extract_all_raw(dest_dir: str, , max_size: int = 25610241024, max_total_size: int = 10241024*1024, max_files: int = 10000) -> list[str]

Extract all members using raw paths (no safety checks).

CabArchive.from_bytes(data: bytes) -> CabArchive

Create an archive backed by in-memory bytes instead of a file path.

CabArchive.info() -> CabInfo

Return parsed CAB header metadata. The CabInfo dict includes:

  • filename (str | None)
  • base_offset (int)
  • length (int)
  • set_id (int)
  • set_index (int)
  • header_resv (int)
  • flags (int)
  • has_prev / has_next (bool)
  • prev_cabinet / next_cabinet (str | None)
  • prev_disk / next_disk (str | None)
  • files_count (int)
  • folders_count (int)

ChmArchive(path: str)

Open a CHM archive on disk.

ChmArchive.files(*, include_system: bool = True) -> list[ChmFileInfo]

Return metadata for each member as a ChmFileInfo TypedDict. Each entry includes:

  • name (str)
  • size (int)
  • offset (int)
  • section_id (int)
  • section (str: uncompressed, mscompressed, unknown)
  • is_system (bool)

ChmArchive.read(name: str, , max_size: int = 2561024*1024) -> bytes

Extract a member and return its bytes.

ChmArchive.extract(name: str, dest_dir: str, , safe: bool = True, max_size: int = 2561024*1024) -> str

Extract a member to disk and return the output path. max_size is enforced while decompressed bytes are written.

ChmArchive.extract_all(dest_dir: str, , safe: bool = True, include_system: bool = True, max_size: int = 25610241024, max_total_size: int = 10241024*1024, max_files: int = 10000) -> list[str]

Extract all members to disk and return output paths. max_size is enforced per member, max_total_size caps total decompressed output, and max_files caps the number of extracted members.

ChmArchive.extract_raw(name: str, dest_dir: str, , max_size: int = 2561024*1024) -> str

Extract a member using the raw path (no safety checks).

ChmArchive.extract_all_raw(dest_dir: str, , include_system: bool = True, max_size: int = 25610241024, max_total_size: int = 10241024*1024, max_files: int = 10000) -> list[str]

Extract all members using raw paths (no safety checks).

ChmArchive.info() -> ChmInfo

Return parsed CHM header metadata. The ChmInfo dict includes:

  • filename (str | None)
  • length (int)
  • version (int)
  • timestamp (int)
  • language (int)
  • dir_offset (int)
  • num_chunks (int)
  • chunk_size (int)
  • density (int)
  • depth (int)
  • index_root (int)
  • first_pmgl (int)
  • last_pmgl (int)
  • files_count (int)
  • sysfiles_count (int)

ChmArchive.from_bytes(data: bytes) -> ChmArchive

Create an archive backed by in-memory bytes instead of a file path.

SzddFile(path: str)

Open a SZDD-compressed file on disk.

SzddFile.info() -> SzddInfo

Return parsed SZDD header metadata. The SzddInfo dict includes:

  • format_id (int)
  • format (str: normal, qbasic, unknown)
  • length (int)
  • missing_char (int)
  • missing_char_str (str)
  • suggested_name (str)

SzddFile.read(, max_size: int = 2561024*1024) -> bytes

Decompress and return the file contents.

SzddFile.extract(dest_dir: str, , safe: bool = True, out_name: str | None = None, max_size: int = 2561024*1024) -> str

Decompress to disk and return the output path. max_size is enforced while decompressed bytes are written.

SzddFile.extract_raw(dest_dir: str, , out_name: str | None = None, max_size: int = 2561024*1024) -> str

Decompress using raw (unsafe) path handling.

SzddFile.from_bytes(data: bytes, *, name: str = "memory.sz_") -> SzddFile

Create a SZDD reader backed by in-memory bytes.

KwajFile(path: str)

Open a KWAJ-compressed file on disk.

KwajFile.info() -> KwajInfo

Return parsed KWAJ header metadata. The KwajInfo dict includes:

  • comp_type (int)
  • compression (str: none, xor, szdd, lzh, mszip, unknown)
  • data_offset (int)
  • headers (int)
  • length (int)
  • filename (str | None)
  • extra_length (int)
  • extra (bytes | None)
  • has_length / has_filename / has_fileext / has_extra (bool)

KwajFile.read(, max_size: int = 2561024*1024) -> bytes

Decompress and return the file contents.

KwajFile.extract(dest_dir: str, , safe: bool = True, out_name: str | None = None, max_size: int = 2561024*1024) -> str

Decompress to disk and return the output path. max_size is enforced while decompressed bytes are written.

KwajFile.extract_raw(dest_dir: str, , out_name: str | None = None, max_size: int = 2561024*1024) -> str

Decompress using raw (unsafe) path handling.

KwajFile.from_bytes(data: bytes, *, name: str = "memory.kwj") -> KwajFile

Create a KWAJ reader backed by in-memory bytes.

HlpFile(path: str)

Open a raw Microsoft Help LZSS-compressed stream on disk.

The bundled libmspack source exposes the Microsoft Help LZSS codec, but not a full WinHelp .hlp container/topic parser.

HlpFile.suggested_name() -> str

Return the default output filename.

HlpFile.read(, max_size: int = 2561024*1024) -> bytes

Decompress and return the stream contents.

HlpFile.extract(dest_dir: str, , safe: bool = True, out_name: str | None = None, max_size: int = 2561024*1024) -> str

Decompress to disk and return the output path. max_size is enforced while decompressed bytes are written.

HlpFile.extract_raw(dest_dir: str, , out_name: str | None = None, max_size: int = 2561024*1024) -> str

Decompress using raw (unsafe) path handling.

HlpFile.from_bytes(data: bytes, *, name: str = "memory.hlp") -> HlpFile

Create an HLP stream reader backed by in-memory bytes.

OabFile(path: str)

Open an Exchange Offline Address Book .LZX full-download file on disk.

OabFile.suggested_name() -> str

Return the default output filename. .lzx inputs default to a .oab output name.

OabFile.read(, max_size: int = 2561024*1024, decompbuf: int = 4096) -> bytes

Decompress a full OAB .LZX file and return its bytes.

OabFile.extract(dest_dir: str, , safe: bool = True, out_name: str | None = None, decompbuf: int = 4096, max_size: int = 2561024*1024) -> str

Decompress a full OAB .LZX file to disk and return the output path. max_size is enforced while decompressed bytes are written.

OabFile.extract_raw(dest_dir: str, , out_name: str | None = None, decompbuf: int = 4096, max_size: int = 2561024*1024) -> str

Decompress using raw (unsafe) path handling.

OabFile.from_bytes(data: bytes, *, name: str = "memory.lzx") -> OabFile

Create an OAB reader backed by in-memory bytes.

OabPatch(path: str)

Open an Exchange Offline Address Book .LZX incremental patch file on disk.

OabPatch.suggested_name() -> str

Return the default patched output filename.

OabPatch.read(base: str | bytes, , max_size: int = 2561024*1024, decompbuf: int = 4096) -> bytes

Apply this incremental patch to a base OAB and return patched bytes.

OabPatch.apply(base: str | bytes, dest_dir: str, , safe: bool = True, out_name: str | None = None, decompbuf: int = 4096, max_size: int = 2561024*1024) -> str

Apply this incremental patch to a base OAB and return the output path. max_size is enforced while patched bytes are written.

OabPatch.apply_raw(base: str | bytes, dest_dir: str, , out_name: str | None = None, decompbuf: int = 4096, max_size: int = 2561024*1024) -> str

Apply this patch using raw (unsafe) path handling.

OabPatch.from_bytes(data: bytes, *, name: str = "memory.lzx") -> OabPatch

Create an OAB incremental patch reader backed by in-memory bytes.

Exceptions

All errors derive from MspackError:

  • MspackError
  • MspackFormatError
  • MspackDecompressionError
  • MspackPathTraversalError
  • CabError / CabFormatError / CabDecompressionError / CabPathTraversalError
  • ChmError / ChmFormatError / ChmDecompressionError / ChmPathTraversalError
  • SzddError / SzddFormatError / SzddDecompressionError / SzddPathTraversalError
  • KwajError / KwajFormatError / KwajDecompressionError / KwajPathTraversalError
  • HlpError / HlpFormatError / HlpDecompressionError / HlpPathTraversalError
  • OabError / OabFormatError / OabDecompressionError / OabPathTraversalError

Safe extraction

By default, extract() and extract_all() reject:

  • absolute paths (/, \, drive letters, UNC paths)
  • path traversal (.. after normalization)
  • mixed or odd separators (/ and \ are normalized)
  • symlinked destination directories, parent directories, and output files

CAB and CHM extract_all() also cap archive-wide expansion with max_total_size and max_files. Use safe=False only for trusted inputs when you need to preserve original paths or write through existing filesystem layout.

Build from source

This project uses setuptools and builds a shared libmspack that is bundled into wheels. A pinned libmspack source tarball is included under pylibmspack/vendor/ and used for offline builds (SHA-256 verified).

python -m pip install -U pip setuptools wheel
python -m pip install -e .

If you want to supply a local tarball, pass --tarball to scripts/build_libmspack.py. To allow a network download during builds, set PYLIBMSPACK_ALLOW_DOWNLOAD=1 (disabled by default).

CHM test fixture

The CHM tests use the redistributable fixture at tests/fixtures/sample.chm (NSIS documentation under the zlib/libpng license).

Licensing

  • pylibmspack code is MIT licensed.
  • Wheels bundle libmspack under LGPL-2.1. The corresponding libmspack source tarball is included under pylibmspack/vendor/. You may replace the shared library inside pylibmspack/.libs with a compatible build.

See THIRD_PARTY_LICENSES/LGPL-2.1.txt and NOTICE for details.

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

pylibmspack-0.4.0.tar.gz (979.0 kB view details)

Uploaded Source

Built Distributions

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

pylibmspack-0.4.0-cp313-cp313-win_arm64.whl (605.3 kB view details)

Uploaded CPython 3.13Windows ARM64

pylibmspack-0.4.0-cp313-cp313-win_amd64.whl (610.0 kB view details)

Uploaded CPython 3.13Windows x86-64

pylibmspack-0.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (687.6 kB view details)

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

pylibmspack-0.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (684.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pylibmspack-0.4.0-cp313-cp313-macosx_11_0_universal2.whl (830.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ universal2 (ARM64, x86-64)

pylibmspack-0.4.0-cp312-cp312-win_arm64.whl (605.3 kB view details)

Uploaded CPython 3.12Windows ARM64

pylibmspack-0.4.0-cp312-cp312-win_amd64.whl (610.0 kB view details)

Uploaded CPython 3.12Windows x86-64

pylibmspack-0.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (687.5 kB view details)

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

pylibmspack-0.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (684.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pylibmspack-0.4.0-cp312-cp312-macosx_11_0_universal2.whl (830.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ universal2 (ARM64, x86-64)

pylibmspack-0.4.0-cp311-cp311-win_arm64.whl (605.2 kB view details)

Uploaded CPython 3.11Windows ARM64

pylibmspack-0.4.0-cp311-cp311-win_amd64.whl (609.8 kB view details)

Uploaded CPython 3.11Windows x86-64

pylibmspack-0.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (681.3 kB view details)

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

pylibmspack-0.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (678.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pylibmspack-0.4.0-cp311-cp311-macosx_11_0_universal2.whl (830.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ universal2 (ARM64, x86-64)

pylibmspack-0.4.0-cp310-cp310-win_arm64.whl (605.2 kB view details)

Uploaded CPython 3.10Windows ARM64

pylibmspack-0.4.0-cp310-cp310-win_amd64.whl (609.8 kB view details)

Uploaded CPython 3.10Windows x86-64

pylibmspack-0.4.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (680.3 kB view details)

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

pylibmspack-0.4.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (678.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pylibmspack-0.4.0-cp310-cp310-macosx_11_0_universal2.whl (830.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ universal2 (ARM64, x86-64)

pylibmspack-0.4.0-cp39-cp39-win_arm64.whl (605.2 kB view details)

Uploaded CPython 3.9Windows ARM64

pylibmspack-0.4.0-cp39-cp39-win_amd64.whl (609.9 kB view details)

Uploaded CPython 3.9Windows x86-64

pylibmspack-0.4.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (680.0 kB view details)

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

pylibmspack-0.4.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (677.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pylibmspack-0.4.0-cp39-cp39-macosx_11_0_universal2.whl (830.0 kB view details)

Uploaded CPython 3.9macOS 11.0+ universal2 (ARM64, x86-64)

File details

Details for the file pylibmspack-0.4.0.tar.gz.

File metadata

  • Download URL: pylibmspack-0.4.0.tar.gz
  • Upload date:
  • Size: 979.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pylibmspack-0.4.0.tar.gz
Algorithm Hash digest
SHA256 2c926fc1729056e94cad98117991b442a4ad25cebb03f9b28914b77cdfda93ec
MD5 616dae28704267a9568ef54459eac1ec
BLAKE2b-256 6775e9f0f5a96f70224229c912425fc254a49b3b713314045a869c29a8d20303

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0.tar.gz:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: pylibmspack-0.4.0-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 605.3 kB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pylibmspack-0.4.0-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 40d35952a586693d8d6780cda2d5ae57df14c91c511d1e746d822f45adfffb0e
MD5 64cd03db614f07ba6d7280bfe18af101
BLAKE2b-256 306ba86eb08087581ccf2903ebcd4d277d1074aa6b6f9a46d49091bcfec616aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp313-cp313-win_arm64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pylibmspack-0.4.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 610.0 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 pylibmspack-0.4.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5ff26d82080e1c2eea7059b39f55a33a4a704f972f6370eb69bb387dd472fd44
MD5 95e1180563ac9cc8da7350ea4c838cce
BLAKE2b-256 3ffee29a0ab269731277f8db199485c946e52dd44c89847a60456fabc99dcd24

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp313-cp313-win_amd64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pylibmspack-0.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2aae55ceced3e3d3c0401f7c4d4cb272f49436b583f415b3b126087741a3fff1
MD5 164b5be1f32b3b1bc7a37b3dea535f7f
BLAKE2b-256 9091570bc15b126521c051437b7e7ff559cc192b74886dbc716fddaaa9aea473

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pylibmspack-0.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 de7719bcc1bcbe5cefdba375fb76f2974e7fbc49cad50a8fd64be327f3faa9f4
MD5 b30efd02233d01761845e936e48a1666
BLAKE2b-256 c3c25a66fb9e6f54d99be729def8929517e8ad2a9cfc5a8094c320739924d405

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp313-cp313-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for pylibmspack-0.4.0-cp313-cp313-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 9b69c5e7c1c15fa7fa60dac3025ec33f51b3505d5fd05b44fbe9c085b430a5a6
MD5 2ff608d74415dc0bc876fb31b841c901
BLAKE2b-256 67edc50f883adb221f918e27dcb22c7089053d1faddc5bd848e32c0dca4aa815

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp313-cp313-macosx_11_0_universal2.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: pylibmspack-0.4.0-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 605.3 kB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pylibmspack-0.4.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 4f3a32a96ba92763af69c9e19512b38819dc4c9a108798fcdf73d492eaee1bd6
MD5 9ac9a748b4473cc2e6b185537b9f3971
BLAKE2b-256 5f71169504c8a7ed74cb1bdcf68303666bf49855560867c3576887306879cb46

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp312-cp312-win_arm64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pylibmspack-0.4.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 610.0 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 pylibmspack-0.4.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 85b27b556da62ed6a3d91204b3018dbf8cffa80abb83b1a148153a9b3b67a465
MD5 cd3585af25c18f96395c25b739addd0e
BLAKE2b-256 ca617f86484a2d00235e67af9282203be57278c356a4669bde24e5604494e026

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp312-cp312-win_amd64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pylibmspack-0.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 253b8fa888f66f459b1092c253cae1bc8d0bf83c7f5e5f027ccd3b44f9e6b10f
MD5 d48449807245dbd1931b5eea132ae5c8
BLAKE2b-256 dcbcf76856ccc3ed60a7937faa2f2f36118f0f68a60fc29fef1a7b59e5cc73bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pylibmspack-0.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c08dac76f1445d0d641ef3b5c179abebcc17df504f382a6ed07751d5cbb48e4b
MD5 d0db126e9b1a628250799e377fcb2394
BLAKE2b-256 0925fcfcc9e6b00bf9619c196c60a0e0254e90449ec61abe64d631bbe6e42ab1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp312-cp312-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for pylibmspack-0.4.0-cp312-cp312-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 c63b932cea48932848168d51a591672f4795b34aac032aaf9d29d98bf9bbe9bd
MD5 76c7edb5d828a072255d96caf5441ba2
BLAKE2b-256 dd5eb3a421549cd488e989292822f7a974e113918bf5c08de298f5295167ea6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp312-cp312-macosx_11_0_universal2.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: pylibmspack-0.4.0-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 605.2 kB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pylibmspack-0.4.0-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 cb23ee261c503a0fcbf261e0501da4a62e2ee8b7e7d964536645d0f90f20f162
MD5 0686dcaaf3dd98e08ae01861e8f823ce
BLAKE2b-256 995649645cc7e3b4f4d4dc434ba540810e379efec99f811f25955bedef5dd02a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp311-cp311-win_arm64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pylibmspack-0.4.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 609.8 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pylibmspack-0.4.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d96292b7f5cc41a32105510561cb12cae7a3863aad7987f4017fd75a76f035ba
MD5 a72c111c79a57f84663015ca1db45fec
BLAKE2b-256 c1d731b16dcbb8733d626950a2d90738a03c31bedb53114b55626bc0d2976542

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp311-cp311-win_amd64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pylibmspack-0.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 13d441257099232bf14d8d221ea4dc9ee53d19ce08fd46fb0f56f0a78b3dc83c
MD5 031e1cd853c34ca3a117f25e39d68d0e
BLAKE2b-256 a43df46ff9aca20428953b034984be3f1461b6aa51999a5fb8dddb6f046c0d49

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pylibmspack-0.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5842134081bb8125ebae6535b5168b506c5f726e2149f056a399fce390ae498b
MD5 70b73a5579ce7b94b0140170e4646e31
BLAKE2b-256 9221b425f08754e6c3c6a4a8a25c5687e45247a874e2f40d9ffc87ccb4aaced6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp311-cp311-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for pylibmspack-0.4.0-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 33d136ecadfb6231b41578f5b45ffb54b679c4ee1c2e869083d49a3dcbe42397
MD5 29ec285735a2f70fb1a058dbd55a681b
BLAKE2b-256 8105599984f3124def00b0a41407a8036a8fd3ef34b4f55c7def1fd487d00ed6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp311-cp311-macosx_11_0_universal2.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp310-cp310-win_arm64.whl.

File metadata

  • Download URL: pylibmspack-0.4.0-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 605.2 kB
  • Tags: CPython 3.10, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pylibmspack-0.4.0-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 27d043fc4880781ff868babf62c7e4adf3a3e5f7869da89abea191b3904ef6d2
MD5 eb0973199f3432b1d379f8d27f7de208
BLAKE2b-256 adb001cc0dda60240108e3f89db233937d690f1a7aa10e9bb653899754340067

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp310-cp310-win_arm64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pylibmspack-0.4.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 609.8 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pylibmspack-0.4.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 9db4b7f9626558b94a6800f4d4cc6dc7f0824d5f1395252fb57427a1fa6ff31c
MD5 f23cef679799f9732f3dd9c5f0b2c39b
BLAKE2b-256 bb826aca4d466c7ff52a2941ed4010348866a79876238f27ee3147d833f4a5b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp310-cp310-win_amd64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pylibmspack-0.4.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a315ad2f76a6fe4f472da1d077f7889499097430fe2008bebd6716cab9594e13
MD5 252caca3a3199fc28e05ccfff8d22ee6
BLAKE2b-256 089bad180de826ce41371295e04e745b5386eedeb1466f9b206a492299ef0391

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pylibmspack-0.4.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 653c2cc7f9702086819d84dfab3266783cebc78c222e5e9413e8238c58f42220
MD5 5145009b855d7a4b420b3266f469f068
BLAKE2b-256 2d56d68d7f3246c9b0ff4fec6c4fb7b574ed0f0a2a770248dccf511e6e29fbed

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp310-cp310-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for pylibmspack-0.4.0-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 cc61da2a30287ce45d7f043c679014ae4942276f0c9cd0dac34d76d65b9e1c4b
MD5 1c8b5cc20927744b0939f5d276e47ce9
BLAKE2b-256 3bca62763a024a6b0d2c32c658cba1e886f2e0a12bb355c01b7ccd2e35b8b6be

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp310-cp310-macosx_11_0_universal2.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp39-cp39-win_arm64.whl.

File metadata

  • Download URL: pylibmspack-0.4.0-cp39-cp39-win_arm64.whl
  • Upload date:
  • Size: 605.2 kB
  • Tags: CPython 3.9, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pylibmspack-0.4.0-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 e2f26ec0c0a07ab5d6bf7ce248c21ab5ecbb7f225dede4fa183ad6527fb74ec3
MD5 c4a291b309a3cc981fd63e18bba9a48e
BLAKE2b-256 cbf9b69a2c7ae31be4f8df5cabe934c708570675727e89831f5c34b56b2d6b56

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp39-cp39-win_arm64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pylibmspack-0.4.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 609.9 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pylibmspack-0.4.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 71e108eaec294de985806be9d46680c9efa5ebe094b77812eee0b7a792d36706
MD5 07765a93639859c6ac97953140b7ac52
BLAKE2b-256 f5fed06690fa001e159937e2840618390e3e41b11f3dc9f860ab308851255c90

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp39-cp39-win_amd64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pylibmspack-0.4.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0b61d063bbfa0e26610a9d369caf6b8526e8b43b4fb9ae06b8785732ab58b6e8
MD5 8b94e7b60e42a99bbc53a5378d7eff5e
BLAKE2b-256 9c89f3f5c501d05695b35e9c001fa5a3040f600d64ce25ded307af25b9cdf5b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pylibmspack-0.4.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 092444b4f6b4953f3931a67b50e0592802c8a492c55bd9a8af3c2fb3ce99583d
MD5 40919b685f86a9f79218a78046e467e8
BLAKE2b-256 802dd694b2a0b9512a1e99945e098fdec1ce9c46aa28231d0b1e0599f8f60234

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on bwhitn/pylibmspack

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

File details

Details for the file pylibmspack-0.4.0-cp39-cp39-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for pylibmspack-0.4.0-cp39-cp39-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 a9334e2dd0cd6c411d7846b92559f5ae79bb342204e2a841aa2fb9fe2d2869f4
MD5 4aeca6a8a985a8eb02524af646d809a6
BLAKE2b-256 d9e1d72f7e6df88ea9bbeb6b798dbad8b0507c8f3173f3b486ace3210ee62441

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.4.0-cp39-cp39-macosx_11_0_universal2.whl:

Publisher: release.yml on bwhitn/pylibmspack

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