Skip to main content

In-process libmspack bindings for Microsoft CAB, CHM, SZDD, and KWAJ files

Project description

pylibmspack

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

Install

pip install pylibmspack

Supports Python 3.9+

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())

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) -> str

Extract a member to disk and return the output path. When safe=True, absolute paths and traversal are rejected.

CabArchive.extract_all(dest_dir: str, *, safe: bool = True) -> list[str]

Extract all members to disk and return output paths.

CabArchive.extract_raw(name: str, dest_dir: str) -> str

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

CabArchive.extract_all_raw(dest_dir: str) -> 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) -> str

Extract a member to disk and return the output path.

ChmArchive.extract_all(dest_dir: str, *, safe: bool = True, include_system: bool = True) -> list[str]

Extract all members to disk and return output paths.

ChmArchive.extract_raw(name: str, dest_dir: str) -> str

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

ChmArchive.extract_all_raw(dest_dir: str, *, include_system: bool = True) -> 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) -> str

Decompress to disk and return the output path.

SzddFile.extract_raw(dest_dir: str, *, out_name: str | None = None) -> 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) -> str

Decompress to disk and return the output path.

KwajFile.extract_raw(dest_dir: str, *, out_name: str | None = None) -> 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.

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

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)

Use safe=False to allow the original paths.

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.2.0.tar.gz (793.3 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.2.0-cp313-cp313-win_arm64.whl (433.7 kB view details)

Uploaded CPython 3.13Windows ARM64

pylibmspack-0.2.0-cp313-cp313-win_amd64.whl (440.6 kB view details)

Uploaded CPython 3.13Windows x86-64

pylibmspack-0.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (508.1 kB view details)

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

pylibmspack-0.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (506.2 kB view details)

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

pylibmspack-0.2.0-cp313-cp313-macosx_11_0_universal2.whl (656.8 kB view details)

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

pylibmspack-0.2.0-cp312-cp312-win_arm64.whl (433.7 kB view details)

Uploaded CPython 3.12Windows ARM64

pylibmspack-0.2.0-cp312-cp312-win_amd64.whl (440.6 kB view details)

Uploaded CPython 3.12Windows x86-64

pylibmspack-0.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (508.1 kB view details)

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

pylibmspack-0.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (506.1 kB view details)

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

pylibmspack-0.2.0-cp312-cp312-macosx_11_0_universal2.whl (656.8 kB view details)

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

pylibmspack-0.2.0-cp311-cp311-win_arm64.whl (433.6 kB view details)

Uploaded CPython 3.11Windows ARM64

pylibmspack-0.2.0-cp311-cp311-win_amd64.whl (440.4 kB view details)

Uploaded CPython 3.11Windows x86-64

pylibmspack-0.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (502.8 kB view details)

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

pylibmspack-0.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (501.1 kB view details)

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

pylibmspack-0.2.0-cp311-cp311-macosx_11_0_universal2.whl (656.5 kB view details)

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

pylibmspack-0.2.0-cp310-cp310-win_arm64.whl (433.6 kB view details)

Uploaded CPython 3.10Windows ARM64

pylibmspack-0.2.0-cp310-cp310-win_amd64.whl (440.4 kB view details)

Uploaded CPython 3.10Windows x86-64

pylibmspack-0.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (502.2 kB view details)

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

pylibmspack-0.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (500.7 kB view details)

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

pylibmspack-0.2.0-cp310-cp310-macosx_11_0_universal2.whl (656.5 kB view details)

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

pylibmspack-0.2.0-cp39-cp39-win_arm64.whl (433.6 kB view details)

Uploaded CPython 3.9Windows ARM64

pylibmspack-0.2.0-cp39-cp39-win_amd64.whl (440.5 kB view details)

Uploaded CPython 3.9Windows x86-64

pylibmspack-0.2.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (501.8 kB view details)

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

pylibmspack-0.2.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (500.3 kB view details)

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

pylibmspack-0.2.0-cp39-cp39-macosx_11_0_universal2.whl (656.5 kB view details)

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

File details

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

File metadata

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

File hashes

Hashes for pylibmspack-0.2.0.tar.gz
Algorithm Hash digest
SHA256 739dfa36ead5399688441009c7164cfe570bebc20a579c855293aeef4c59e99a
MD5 9d4f130869a50a2eefe13989e86d2fb5
BLAKE2b-256 e78c4216ff9b74e4d0a238597a100a54c0dde07348edef2b04b8aeb9e29d30ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp313-cp313-win_arm64.whl.

File metadata

File hashes

Hashes for pylibmspack-0.2.0-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 50d6ae5616995ae212e5007af6ec2fb972e840764dd8b8931c9ca9b2bcace251
MD5 553c0c505c4605b0fad6ab0589c78c59
BLAKE2b-256 f1f2877ee9da8cfc37b4e6ea579426c57457a6970c64d14be6de943ef134c53e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pylibmspack-0.2.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 440.6 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pylibmspack-0.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6d94f7a1472f2c6252ef8995af09aa60ea3eb912c4a8aebf6007aceb4b41d7c1
MD5 6c91f339e4f4458db9579522324a9a21
BLAKE2b-256 7c99b5e67087cf77bfc5f061b070c04c742078b52d4f09f81e37ad636848b686

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.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.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2d204311c1098a7040f6e28dec5c1df7439cd1a8e220959331cd910d448ba821
MD5 794c6c7d2fe1724a308ae333c073d625
BLAKE2b-256 f89d9349aebae2d694ad6ac8d639db233e4bb42bc18a37a5248642acfb1ce24d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pylibmspack-0.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 821d4787c3e079f9207be868213f11614af376db29df4b01a8068a38083a6826
MD5 0536e163d1e49370d040c9ebd256c301
BLAKE2b-256 3f1605753fd385599fe1231e3cd35efb72e44344c0e15b0307e237178ca7d021

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp313-cp313-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for pylibmspack-0.2.0-cp313-cp313-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 0da28b600088eb8d3edb8a7a0f993d7a19f5b0f320a1923cf575013fe0f631b7
MD5 b7e5e3e428a2d78e5a70e3296cb1ba80
BLAKE2b-256 7f22d0c4b79d57516f4676aaade5cc06647a8a943f87dcc65ac4437f327a83d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp312-cp312-win_arm64.whl.

File metadata

File hashes

Hashes for pylibmspack-0.2.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 130dfdb840f5ef39063de9cff418c89a1a4408dca92b0091dba451236d50ef84
MD5 347cfa521e3043e25a692098adf8bd3b
BLAKE2b-256 af992082458533475aad40b4d577645ed253763971807f31df532eeff6c07ca2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pylibmspack-0.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 440.6 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pylibmspack-0.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 28d88b23ed443ce457b9f11d71d6f4228962deafa3c54241a9efad3ff6279b5a
MD5 5f1a696fdcd5d95d3e75c5203fdef6c2
BLAKE2b-256 f2901f884be564355d9c179e0179694791fafb732d80e2e3750891b3c10ac95c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.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.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 77c104055488f2ef266a0fe12f77092d036db04de2b7da3b3b2f707b269dc933
MD5 652482176122ece7e3d4d46dbf6d9273
BLAKE2b-256 4343816afea747015fb3d9fcf56fc317f2deb69a1fc0e791fbb621a8a5032b39

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pylibmspack-0.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1f44d88be1cabd56cb8559d5e3665eea92e343094a1c287d155ec72f723def9d
MD5 943fa1ae3405944b1e6a46f594bb9a04
BLAKE2b-256 0c0ca540e53c7b6c3d220022571631f885a372577986fc089fce339faf2c0e24

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp312-cp312-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for pylibmspack-0.2.0-cp312-cp312-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 7e1a6dad9e84febd262b25331b4db62c2b8cb2cb3b1203483faa2cbc1e4133e6
MD5 c33f0ac7d024f6d919b9b932d6c63e29
BLAKE2b-256 54a5e5a193d04f83b9b36f347d52d9885e20df4bdc2812a9d7a5d1f0b6bf97e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp311-cp311-win_arm64.whl.

File metadata

File hashes

Hashes for pylibmspack-0.2.0-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 da0f413d7462b5f7d4071d9c45c68c8f96db9cfbc6c8ace03837e872145790f0
MD5 41822eb772635bcf65b30dfb7fea1708
BLAKE2b-256 884cdf5fcbc8c57d82b718914223e6ae6c3345d3d4a801c0c93d77d7cf8aaec8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp311-cp311-win_amd64.whl.

File metadata

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

File hashes

Hashes for pylibmspack-0.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 469142275527e81c24c579b6a30b1e8f9ed857fc121c3bb192d2ecf63782c532
MD5 82b10bbaf9478cd7501488d565918990
BLAKE2b-256 4a4598e7ac5b120a0e0b324a853d0f93bd3bfc647bdd89c4c744b15667409fbe

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.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.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 41333cee02e9f0971a4689807b383d1e8065c73c71781aaf7157865db3872708
MD5 3908d880692abe22fe916afcc0959079
BLAKE2b-256 01db741fe03e320ff5ffa51ff5f5bc44942ca4399668f84c88cc4f953a9a3918

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pylibmspack-0.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 105c82e1d0b02b19121acca83a7a96af8bd9b283a35b2f16c97ecfaf35a11224
MD5 2a6a8e8855634296d44f2471200365d1
BLAKE2b-256 385c30722c3513e1016ba1fd47abb4e18c712c9e046d88342f95bf859760daf8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp311-cp311-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for pylibmspack-0.2.0-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 465104c821865458b74262d0ac012da79ca7b70c486cba92b046116b29432afb
MD5 9d151cf71bee0f7df860385e2d274b37
BLAKE2b-256 2461d48155bf24c60df1bbc4c2a4db2bd4c9b83776df05a32b9ce024569fa94c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp310-cp310-win_arm64.whl.

File metadata

File hashes

Hashes for pylibmspack-0.2.0-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 e200d0129305c72cd42c16b05ddc775018c00797edf77e6ebdbc1496fdf5e659
MD5 425ca01afcfc3099719cf0bd78e48e0d
BLAKE2b-256 5c3ff0692310d9a5966336126f2ed1e2f2efb13e18790ebc9ddaa79fbd93f622

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp310-cp310-win_amd64.whl.

File metadata

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

File hashes

Hashes for pylibmspack-0.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8d38872fcf3ab8b0e31461a86efe013b5247cf506277a0cde258263d40c970cb
MD5 a35ce2018a7607e499ca0c65f73387ea
BLAKE2b-256 c5dfeb40567c82cf1bb5d7379918a3f3aad6631e62dc5445e6b692283714aeab

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.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.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 20c7713f260e57c9b6cf271e723e0a276cf0893b200827b1ae44d1d1349c3f9e
MD5 ced07bee42ee3ab6f6a28273f0e9cef7
BLAKE2b-256 530b5d16597492fa412160c22d031bd26029e208819e1bbc3ea27c02a3915b0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pylibmspack-0.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fe1326db9f6401e21c5b2bad6db3341ad844c0b2b5146b4f53be0ebed4050402
MD5 db376e1e4694b854aefa7c293d1bd5e2
BLAKE2b-256 63def13ca716bb9f260a3b63f7bfa5be06ce05950caf599b2e8e6f4bdc71ceff

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp310-cp310-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for pylibmspack-0.2.0-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 88a996c7e914c8f1dad46758b2b67b3e421109d0542e099a4920ec528b8e00ee
MD5 8b48fcea946c35fa4f1fb19b80fd2962
BLAKE2b-256 9a01bb27000dee433fa6696a8676189ac4ac6c86223da085524656e956ea3ccd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp39-cp39-win_arm64.whl.

File metadata

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

File hashes

Hashes for pylibmspack-0.2.0-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 e73e5f594793cd5a7bedd2d2b9e69abd3410f80bf2ee9a3d3fa4c7cce28c7f64
MD5 bf587441e5bd9d782dddbb06aebe2812
BLAKE2b-256 b77e16f7c2911a75971c6587875fe8a2656adb067d356be77acd870839121244

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp39-cp39-win_amd64.whl.

File metadata

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

File hashes

Hashes for pylibmspack-0.2.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 d623af4c1d17fa93277032016e0d78c21fc3aeaef5616c102fa67b9126f3d9a1
MD5 52e9f5597f3a46a867da0c08f5f9a005
BLAKE2b-256 acc9753878c213a238d6d748bb17cb66f9f46a2a740baa6ca420c9bd81967ba8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.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.2.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d104dce2739e06615c70653d59e4fdfbb28b3fb72a4215e756d07400cdbffc95
MD5 89cf97c13a21ab1382a974fd18485ebf
BLAKE2b-256 f1850737b9cf0de35f6f27dac6a16b2d7651e0fa4976c7e398b87a56c4b8bd69

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pylibmspack-0.2.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fdf738507ba670f93feaf2b0b444fdb3e87043f924664d40c04c329f5abcdde2
MD5 f5afd833bbfc0792960bbb72b163cd88
BLAKE2b-256 d3f6ce891cd6fedff375508a8564dd959d334bc7c5ae3a72dd37e7cb4639df71

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.2.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.2.0-cp39-cp39-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for pylibmspack-0.2.0-cp39-cp39-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 569b605a855ffb2dbd5f343fe6050d9a676754b42853476b041ef995404ed5c0
MD5 d2e2606da16e2874ae24735c6bcbca80
BLAKE2b-256 c4986531d6507802064cb9ebed0412957b097c90de0fd4b2e29a22632bd0a008

See more details on using hashes here.

Provenance

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