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 -m pytest

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

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 0.10.1 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) -> 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
  • 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)

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.3.0.tar.gz (799.5 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.3.0-cp313-cp313-win_arm64.whl (443.8 kB view details)

Uploaded CPython 3.13Windows ARM64

pylibmspack-0.3.0-cp313-cp313-win_amd64.whl (447.9 kB view details)

Uploaded CPython 3.13Windows x86-64

pylibmspack-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (521.9 kB view details)

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

pylibmspack-0.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (519.7 kB view details)

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

pylibmspack-0.3.0-cp313-cp313-macosx_11_0_universal2.whl (666.7 kB view details)

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

pylibmspack-0.3.0-cp312-cp312-win_arm64.whl (443.8 kB view details)

Uploaded CPython 3.12Windows ARM64

pylibmspack-0.3.0-cp312-cp312-win_amd64.whl (447.9 kB view details)

Uploaded CPython 3.12Windows x86-64

pylibmspack-0.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (521.9 kB view details)

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

pylibmspack-0.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (519.7 kB view details)

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

pylibmspack-0.3.0-cp312-cp312-macosx_11_0_universal2.whl (666.7 kB view details)

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

pylibmspack-0.3.0-cp311-cp311-win_arm64.whl (443.6 kB view details)

Uploaded CPython 3.11Windows ARM64

pylibmspack-0.3.0-cp311-cp311-win_amd64.whl (447.7 kB view details)

Uploaded CPython 3.11Windows x86-64

pylibmspack-0.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (515.5 kB view details)

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

pylibmspack-0.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (513.9 kB view details)

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

pylibmspack-0.3.0-cp311-cp311-macosx_11_0_universal2.whl (665.9 kB view details)

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

pylibmspack-0.3.0-cp310-cp310-win_arm64.whl (443.6 kB view details)

Uploaded CPython 3.10Windows ARM64

pylibmspack-0.3.0-cp310-cp310-win_amd64.whl (447.7 kB view details)

Uploaded CPython 3.10Windows x86-64

pylibmspack-0.3.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (514.5 kB view details)

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

pylibmspack-0.3.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (513.0 kB view details)

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

pylibmspack-0.3.0-cp310-cp310-macosx_11_0_universal2.whl (665.9 kB view details)

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

pylibmspack-0.3.0-cp39-cp39-win_arm64.whl (443.7 kB view details)

Uploaded CPython 3.9Windows ARM64

pylibmspack-0.3.0-cp39-cp39-win_amd64.whl (447.7 kB view details)

Uploaded CPython 3.9Windows x86-64

pylibmspack-0.3.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (514.2 kB view details)

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

pylibmspack-0.3.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (512.7 kB view details)

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

pylibmspack-0.3.0-cp39-cp39-macosx_11_0_universal2.whl (665.9 kB view details)

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

File details

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

File metadata

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

File hashes

Hashes for pylibmspack-0.3.0.tar.gz
Algorithm Hash digest
SHA256 d5882236f6e386df1a47763b0f5ba495530347bcff943fa9120f9a90fc2ed1cd
MD5 26f25df5cb6b4c28668a285f0a83021b
BLAKE2b-256 2605b33bab5fc8422c195844ebaf4bf0465d052addab857932ee860b49c888d2

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pylibmspack-0.3.0-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 443.8 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.3.0-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 89153310124e8270e68919405febe03f4e5a344429bc245f52f08b3c30bb9fbf
MD5 cc62ce14fd474faac9badb2252b3e815
BLAKE2b-256 facfa371cccf25b67e490e165cf93d2409494d266121c6ba33c0ebcc8a23ac3e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pylibmspack-0.3.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 447.9 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.3.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d2634dcb66f9a979ff7d712476ddbc274436c35306bfbd09c8a3eaa32d492fb1
MD5 32a21f23b94dd2d8920ef5925e937fab
BLAKE2b-256 9e99edbb25e1325d4c7579019dd715ad972f062b1f073ec191897c8b21cf66a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.3.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.3.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.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 45c1f98353566694fb8d5bf99b982be4e884d903c0bb4590250d48fc5a88da48
MD5 e00510c2d8a48deaa1b88fddc729eebf
BLAKE2b-256 1dd8772f1e8a6c22e09348a617a4425a318df87e5234568be2a09ec42c300c9d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pylibmspack-0.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 312023f6686cbec440bf8b249689bd22a1eec98c6da8e2376526116bedd65766
MD5 151fbbcf6cc968bb6816bba548181472
BLAKE2b-256 6709d69e25080eb6148ee93136b756f0e855efd885559032b8a7e32655a86e2f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pylibmspack-0.3.0-cp313-cp313-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 44498930bbd4ac44c8ce3e22173bc09dbb23bf6262d0f2a0c77c598bcc468d3e
MD5 162dbf4efd849390800f4861bbe961c3
BLAKE2b-256 bbc2ce143681aad0553a770aa4cb2d7e6dfcb6b18ac91865ff4d48a2148d37c1

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pylibmspack-0.3.0-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 443.8 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.3.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 a59b4e40a16a08b4bde6877afdd36a88f511b7efdfe43fae6d3adadc493d346a
MD5 cd44fa0f1f02027317dcda37dbcf03de
BLAKE2b-256 f60e87c6ddba65f05a0d838c64c67e61f2a665e7b23808c070b439ef3861eb40

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pylibmspack-0.3.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 447.9 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.3.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ce3fdc8cf9a9300a258e556d1ee1900749c76ebb961868866e2b9b6ae40e7020
MD5 55651715e99e3fc1d7d3db516a4880da
BLAKE2b-256 c41b9e324caf0041a2c0cdb7e9c130befc152dcd724f002f78b96811182580b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.3.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.3.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.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d213c4796bc5af753b83e214af1d31718029455016b3a6529421b225ab0e73c1
MD5 f380dfe2f21689c8a66a83e000acc0a1
BLAKE2b-256 15afcc313e04f9748e1a93236ae8fbc824e720797bc58793a3ad25dd9c96f3d2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pylibmspack-0.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2b76c19f3b6b7a1c23438a2b3bbdae7bda2b9f3e452d84b1ccf2a31664655723
MD5 777a25c40164bc07734c046055067f37
BLAKE2b-256 2c2d0c765af3d129f305d225a7323bae056bbe543df5eb8f1495448d9e8e7a59

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pylibmspack-0.3.0-cp312-cp312-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 825b7efe4f099cced18bed1bff90f20c8a1cd6e781bd78b105e0b888edc3fa31
MD5 6b48f38f0cf3da16dc2c2d2cd8a00b2b
BLAKE2b-256 c7825cdfd0ad5afbc613405dc1ff7e686a2dd77d63312ef0ebce3ea960216596

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pylibmspack-0.3.0-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 443.6 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.3.0-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 a51a54338bf9e02e68ed10adebab00eb997fce9be243d9f4cb63c0f6149e0277
MD5 9ca24c725ec8bef1416a335ff0794e3b
BLAKE2b-256 346e297cbbaa1ef1c93382c5f0684fe06c5b1a0e33f1dd7779e77134f6ff334b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pylibmspack-0.3.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 447.7 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.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6b069458b8b3052377065c867895055262f7643b123a9b165df51a9f69841a32
MD5 83ecbdeb537bb4a9be4a326041eb725e
BLAKE2b-256 cf3f2b826ac95143900197e4482d3ade3ff02fa2ca39340351241215d26c0c80

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.3.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.3.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.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b00838eb7ed784c9f8691a3281440702130119b049357a23dc79d014f1c9fc4b
MD5 cade8156e52ac90bd8bdadcf3d29032b
BLAKE2b-256 3d7b226e92cab8650f6da80d3a918cb6dffede10d3548985638fbecfbde480d6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pylibmspack-0.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1cc9941ecdd1260a2403bb1501991058baea218ca79e6f5f6d0c1c98ace9277f
MD5 f7dba72d747fc8e6468eb3bedaa63e3f
BLAKE2b-256 49f67007c3faae88ceb70f252f41e2e755014005b0af06c9e73cbceac21531b3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pylibmspack-0.3.0-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 33311e8725969f664f961a2de6cd6e48d615f5dd8d3924dff0e1ac8146ec156e
MD5 fc7e1ebebfc86b280a85c4df941656d1
BLAKE2b-256 cb96840792005524d60dc7fa5690300e6d57e65a9d05bdb5ea8fa0a5fd8874f0

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pylibmspack-0.3.0-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 443.6 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.3.0-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 7ff78ddede97f2adbf1498ad482433c7fa163d1a7a105cd3e814263b36c2d55c
MD5 31e842b6a8a4eec19b429c15c69a9760
BLAKE2b-256 24dcd345ab4993fc6bfe9cb5d38f5448302434cdaf8ede125924772834ad685a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pylibmspack-0.3.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 447.7 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.3.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 467577603e4696d89d90d53611da3a6163e40cb2846d5d1ec41da311fd0eb7ea
MD5 865942a69ec1845590eaa7aabe2b59c9
BLAKE2b-256 d08ec46cb43c148e4f353101f3c0bc5497f916ef476bc27068fdba640d8760b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.3.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.3.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.3.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8b7200f23c4640969d06df50cfc31daacfc332fdfe161e41b276b4a222ff74b2
MD5 b85a5d8b463806207691add7af33363b
BLAKE2b-256 34dd05d09e034da4caead44f28f55c69dfecf395809a1246a9f0f2741e8e0f07

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pylibmspack-0.3.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3ec7e14a251e7bdee718e6a38155e5adda7981afe53dce842b8018bce26d3849
MD5 3a50ab780cc8c11057acac91a2b4dd94
BLAKE2b-256 6eef9bde12feb212ee5385c3d0eb2af079025398b131964da1c95fdd430395ec

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pylibmspack-0.3.0-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 f4c36f7d44cc00d64c07298a87132734f3e03b48175456744c905471544dbfd3
MD5 a173055499b92bcb3c87067d68cb33ac
BLAKE2b-256 46ea4babed704b3ee277a0b21ac5eb21ba332ac15baf3120cfb4d12f51d19828

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pylibmspack-0.3.0-cp39-cp39-win_arm64.whl
  • Upload date:
  • Size: 443.7 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.3.0-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 ac0a13f3ee27c99a31dfe367083f17a3a7a309b1533df1737de65b590e21f0ce
MD5 f2fc852e9c70bc9d604670f88faf42b0
BLAKE2b-256 fdfcb777a7e75c46a0925768467716465b44f7444ea6260eef1a95f95df0d3e1

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pylibmspack-0.3.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 447.7 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.3.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 61df3b0bd7d45b3e9466f72a5225f7e12c502250843ebbba0e3a553cd62a8251
MD5 d530cf6673413139a7c7a77d28e4e80d
BLAKE2b-256 b53ac320c62ac980b114b23460d1549ede3984c26f42a28f6e81ed6329782f52

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibmspack-0.3.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.3.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.3.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5ac6974df1acc599443913692f9e6bd63024f53b79d2bf3274dedc1756a5c564
MD5 bfb74a38604786a4c7695b4b585bb08e
BLAKE2b-256 0a3892d78e06c9da03f720f21514c7da40dfeee0b5e17aa7eae8a21ba6c2e5bd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pylibmspack-0.3.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9e675ce3215144ab7309f433f24b7a7ce661ce392d23e77efc024192a1da324f
MD5 5d5f12da553cb93a06d214f6c9ceb173
BLAKE2b-256 f0c627a61896df337e0670eb56e5dfe4fa31cd6736fa10a047dc7c210d207747

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pylibmspack-0.3.0-cp39-cp39-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 8e734cbe92d45ec8fc73dc97bd48bd0a330ef079918021b8039d10ecf5972ed1
MD5 d94aa25ba34010910a8caddf1a42526f
BLAKE2b-256 c3cb25f28c17f1b5fefbc470aa9ba3d1179cb194d7552faec6372eb1d418f5f1

See more details on using hashes here.

Provenance

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