Pure in-memory ZPAQ compression for Python (real pybind11 bindings, prebuilt wheels, no C++ toolchain needed to install).
Project description
zpaq
Pure in-memory ZPAQ compression for Python. I made this because every other zpaq package on PyPI is just a wrapper around the zpaq executable, they shell out to the CLI as a subprocess, which means temp files for every operation, fork overhead, and the user needing zpaq.exe on their PATH in the first place. None of them are actual bindings. I wanted real bytes->bytes zpaq from Python that just works.
import zpaq
blob = zpaq.compress(b"hello world " * 1_000, level=3)
assert zpaq.decompress(blob) == b"hello world " * 1_000
It also ended up alot faster than the official zpaq.exe itself, up to 6.6× faster on decompress and 6.3× faster on compress at 10 MB, with the same compression ratio. Multi-threaded both directions, JIT-compiled predictor on x86_64, libsais for the suffix-array pass, AVX2 auto-vec compile flag. Default threads=0 auto-scales across all CPU cores. Pass threads=1 if you want the absolute best ratio:
blob = zpaq.compress(big_data, level=5, threads=1) # max ratio, single block
For inputs with repeated content (logs, large text corpora, similar binaries, snapshots), pass dedup=True to get fragment-level deduplication, input gets split into ~64 KB content-defined chunks and identical chunks are stored once. Matches what the zpaq a CLI produces, so the output is fully zpaq x extractable:
blob = zpaq.compress(repetitive_data, level=5, dedup=True) # JIDAC archive
Prebuilt wheels for Windows / Linux / macOS (including Apple Silicon) across Python 3.9 through 3.13. Installing it never compiles anything. On Windows the wheel statically links the C and C++ runtimes so there's no "Visual C++ Redistributable" requirement, if Python runs, zpaq works.
Performance
Benchmarks vs the official zpaq.exe -m5 (Ryzen-class 12-core x86_64, level 5). The mem binding wins both compress and decompress at every size, and dedup=True matches or beats the CLI on compression ratio at every scale:
| workload | CLI comp | best mem comp | CLI decomp | best mem decomp | mem dedup ratio vs CLI |
|---|---|---|---|---|---|
| 1 MB text | 2.25 s | 0.56 s (4.0×) | 2.23 s | 0.64 s (3.5×) | +0.013 pp |
| 10 MB text | 24.67 s | 4.36 s (5.7×) | 24.74 s | 4.29 s (5.8×) | +0.001 pp |
| 100 MB text | 184.36 s | 55.73 s (3.3×) | 185.32 s | 56.02 s (3.3×) | +0.078 pp (dedup) / tie (t=1) |
Full breakdown by thread count below. CLI is the official zpaq.exe v7.15 invoked with -m5 (its speeds already include the -t0 default of two worker threads). mem(t=N) is zpaq.compress(data, level=5, threads=N). Times in seconds; ratio is bytes-reduced over original.
1 MB text:
| algo | compress | decompress | ratio % |
|---|---|---|---|
zpaq.exe -m5 |
2.25 s | 2.23 s | 79.963 % |
zpaq.compress(t=1) |
2.15 s | 2.21 s | 80.073 % |
zpaq.compress(dedup=True) |
2.18 s | 2.16 s | 79.976 % |
zpaq.compress(t=0) (12 cores) |
0.56 s | 0.64 s | 77.547 % |
10 MB text:
| algo | compress | decompress | ratio % |
|---|---|---|---|
zpaq.exe -m5 |
24.67 s | 24.74 s | 84.161 % |
zpaq.compress(t=1) |
24.76 s | 25.15 s | 84.206 % |
zpaq.compress(dedup=True) |
24.24 s | 26.67 s | 84.162 % |
zpaq.compress(t=0) (12 cores) |
4.36 s | 4.29 s | 81.213 % |
100 MB text:
| algo | compress | decompress | ratio % |
|---|---|---|---|
zpaq.exe -m5 |
184.36 s | 185.32 s | 86.74 % |
zpaq.compress(t=1) |
279.35 s | 173.33 s | 86.72 % |
zpaq.compress(dedup=True) |
180.19 s | 184.52 s | 86.666 % |
zpaq.compress(t=0) (12 cores) |
55.73 s | 56.02 s | 84.56 % |
Why this is faster than the official CLI
libzpaq's reference compiler ships an interpreter for the per-byte context-mixing predictor used at compression levels 3-5. The official zpaq.exe on x86_64 ships with that interpreter replaced by a JIT that translates the predictor bytecode into native machine code at archive-open time, that's where most of its speed comes from. This package's x86_64 wheels enable that same JIT path, plus a handful of additions the CLI doesn't have:
- multi-threaded block compression via
threads=N(the official CLI tops out at two cores by default) - multi-threaded block decompression, I scan the archive for ZPAQ locator-tag block boundaries up front, dispatch each block to a worker, and concatenate.
libzpaq's decompress API is sequential, so this layer sits above it. - skip-checksum-by-default (
verify=False); the SHA-1 per block thatzpaq.exealways computes isn't free, and most "compress these bytes please" workflows don't need it - AVX2-enabled compile flags so the optimizer auto-vectorizes where it can (x86_64 wheels assume AVX2; CPUs from 2013+ are covered, anything older falls back to the sdist build)
- libsais (Apache 2.0) for level-3 BWT suffix-array construction instead of the libdivsufsort-lite that libzpaq ships internally
- a faster decompress path for archives produced by
zpaq.compressthat skips the JIDAC-aware per-segment buffering
Compress scales nearly linearly with thread count up to ~12 cores. Compression ratio drops slightly as threads increase (more block boundaries = less context per block); the ratio at t=1 matches or beats the CLI on every workload. For inputs with actual repetition dedup=True closes the remaining gap.
ARM / Apple Silicon wheels disable the x86-only JIT and AVX2 flags but still benefit from threading, libsais, and the fast decompress path.
API
zpaq.compress(
data, # bytes-like
level=5, # 0..5 (0=store, 5=strongest)
threads=0, # 0 (default) = auto-detect host CPU count, clamped
# by input size (64KB minimum chunk per worker).
# 1 = single-thread, deterministic, best ratio.
# N>1 = pin to exactly N workers.
hints=False, # If True, scan input for text/exe signatures + order-1
# redundancy, pass them to libzpaq via the method string.
# Slight overhead, can help ratio on mixed/binary data.
verify=False, # If True, compute & embed SHA-1 per segment.
# zpaq.exe also writes these by default; turning them off
# makes both us and zpaq.exe skip verification on extract.
method=None, # Optional raw libzpaq method-string override (e.g.
# "x4,4,1"). Overrides level/hints when set.
dedup=False, # If True, emit a JIDAC-format archive with fragment
# dedup. Output is `zpaq x`-extractable. Currently
# single-threaded encode; matches CLI ratio on repetitive
# inputs.
) -> bytes
zpaq.decompress(
data, # bytes-like ZPAQ stream
verify=False, # If True, recompute SHA-1 of each segment and compare
# to the one in the archive. Raises zpaq.Error on
# mismatch.
threads=0, # 0 (default) = auto-detect, clamped by block count.
# 1 = single-thread.
) -> bytes
zpaq.Error # Raised on libzpaq failures (corrupt stream, bad header)
Both compress and decompress release the GIL while libzpaq runs, so this plays well with threaded workloads.
CLI interoperability
zpaq.compress() emits the same on-disk format libzpaq itself writes, and zpaq.decompress() understands archives produced by zpaq a (filters out the JIDAC index/hash/info segments, follows the file's fragment-ID list, etc.). Tested on ten varied real files (1 KB to 25 MB, text/image/csv/jar/png/jpg/svg/exe/binary, levels 1-5):
| Direction | Result |
|---|---|
zpaq.compress → zpaq.decompress |
10 / 10 byte-exact |
zpaq.compress → zpaq x (official CLI) |
10 / 10 byte-exact |
zpaq a (official CLI) → zpaq.decompress |
10 / 10 byte-exact |
import zpaq
# Pipe to the official CLI
with open("out.zpaq", "wb") as f:
f.write(zpaq.compress(my_bytes, level=5))
# ... later, from any machine with the zpaq executable installed:
# $ zpaq x out.zpaq
# Read an archive someone else produced with `zpaq a`
with open("their.zpaq", "rb") as f:
file_bytes = zpaq.decompress(f.read())
For multi-file zpaq a archives, zpaq.decompress currently returns the concatenated bytes of every file in storage order. A per-segment iterator API for addressing files by name is on the v0.3 list.
Future work
Plenty of levers I haven't pulled yet, PRs welcome:
- PGO (profile-guided optimization). Adding
/GENPROFILE+/USEPROFILEto the MSVC build (and the gcc/clang equivalent) usually adds another 5-15%. Skipped here because cibuildwheel doesn't expose a clean two-stage build hook yet. - AVX2 in the JIT predictor. AVX2 is on at the C++ compile-flag level. The JIT-emitted predictor already uses SSE2 SIMD (
pmaddwd/padddfor the MIX dot-product, lines 4126-4170 in vendored libzpaq.cpp). Upgrading the JIT codegen to AVX2 256-bit ymm registers would handle 16 mixer inputs per iteration instead of 8, but real gain depends heavily on the per-method MIXmparameter, and the work is byte-level instruction re-encoding which is fragile. Skipped for now. - Smaller-chunk dedup. The current 64KB content-defined chunk size matches the official CLI for full interop, but smaller chunks (16-32KB) would find more duplicates on similar-but-not-identical files (e.g. log streams, snapshot diffs) at the cost of more index overhead.
- Per-segment archive API. As mentioned above, let callers address individual files inside multi-file
zpaq aarchives by name.
License
Released under the same terms as the underlying libzpaq sources: public domain. See src/zpaq/vendor/COPYING.
The vendored libsais suffix-array library is Apache 2.0 (Ilya Grebnov). See src/zpaq/vendor/LICENSE-libsais.
Not affiliated with Matt Mahoney. libzpaq was released into the public domain by its original author; this Python package wraps those sources and is an independent community project.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zpaq-0.3.5.tar.gz.
File metadata
- Download URL: zpaq-0.3.5.tar.gz
- Upload date:
- Size: 156.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7bb366160b5d79f392061c7eddfa0069e814734c960247508b0191684bc2fb1b
|
|
| MD5 |
f1845b9aeb6a28de53c75bc106fc0ae2
|
|
| BLAKE2b-256 |
523478dc06c145b109b23918a9d1627c2983c3d2b3f95478529c354da0cd67d4
|
File details
Details for the file zpaq-0.3.5-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 420.8 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be04e2a4060511e9016ffc1c0d812be3f61b059ea361bb35b9af2734c6fe823f
|
|
| MD5 |
c034e8f47d2ecd0625baf2fa5e25c61c
|
|
| BLAKE2b-256 |
36be114670b637a0b715eaf08c512700bb5994719e1aa76117e2f7765c035bff
|
File details
Details for the file zpaq-0.3.5-cp313-cp313-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp313-cp313-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
492dcf80fa76e7145736b19788ae3d07a5636cb8465466fcc24652e4c1dabc48
|
|
| MD5 |
8398dc7f7d53d42b25ba5551c832b11d
|
|
| BLAKE2b-256 |
f29f3d09d22fcb5c989c6e66be259cbdd08c247e217e2837bfa0ff172055e140
|
File details
Details for the file zpaq-0.3.5-cp313-cp313-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp313-cp313-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 410.1 kB
- Tags: CPython 3.13, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
388caca27a3daa8b8730c0c6f5da588f5a08fff57df4095d622ad26ba1ac1ef1
|
|
| MD5 |
a6fbd224ad94ae768aa35b5d503fb1ac
|
|
| BLAKE2b-256 |
8176ae7e8b20644c167444448864f9ecf3fd80617e81317a5a69ad97d589e2f2
|
File details
Details for the file zpaq-0.3.5-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 347.1 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d69293a5140a26977e38a08c4f6f8c507d6aa4b3960f23b1ce8049ac678a16d
|
|
| MD5 |
6970c9ca8f75f685f2a965b3e6dedc1f
|
|
| BLAKE2b-256 |
de2fe767fae4680be312300d180721dbda2a6331f7538b1793851b1a89a1061d
|
File details
Details for the file zpaq-0.3.5-cp313-cp313-macosx_10_13_x86_64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp313-cp313-macosx_10_13_x86_64.whl
- Upload date:
- Size: 366.1 kB
- Tags: CPython 3.13, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
075dca93631a089dde276a672e050d6291f21de96731749ebf906f5e7b46a99a
|
|
| MD5 |
f6eec3806ab8b9f380d3cc1ff2e33953
|
|
| BLAKE2b-256 |
16628cabd4e8b54787bd8c7db68a4f305ad3602ddca6e5d296ee6ad6aa6e65bb
|
File details
Details for the file zpaq-0.3.5-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 420.8 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
602d800a18d810d34aaebb24fe2b7f75145e7ac7ed61184ca48c6a8174b38dbb
|
|
| MD5 |
a2098da0805a9a49ab0ee977fa7f80b2
|
|
| BLAKE2b-256 |
b7ee33b52c682cfe97c8ae3970c6e694af01b53bd5a55b4ef68c0c034ac8531f
|
File details
Details for the file zpaq-0.3.5-cp312-cp312-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp312-cp312-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
acd58d494d2d41e2a91ea177979bd28ea023edacb5cd7839e3074f6c5992f099
|
|
| MD5 |
512c7f2e1f732a405b2c552ba29c96a5
|
|
| BLAKE2b-256 |
7e7a8a1a9e783bcc5e3e69848dd40e33cbf59e91bf96129b933205385865c231
|
File details
Details for the file zpaq-0.3.5-cp312-cp312-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp312-cp312-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 410.0 kB
- Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14bea2a77d264508d828e90fcdc910a69715a15651b99097d33ef1376ed66fc4
|
|
| MD5 |
c18d27c5043bd75c2294805f55748a49
|
|
| BLAKE2b-256 |
85d082d786bec79e722cf9625c5c928b0a86a05b890f87d099f7d63fa1e66872
|
File details
Details for the file zpaq-0.3.5-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 347.0 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fde953a46133e8d99b6f4c25c357b203fde453e3e792114187548915dad914ff
|
|
| MD5 |
b93409d211e9b0377c148283c6636210
|
|
| BLAKE2b-256 |
4195881722cca64ec613ddecc238299d428a32b6fb63afe7fa3c4b827bc0110f
|
File details
Details for the file zpaq-0.3.5-cp312-cp312-macosx_10_13_x86_64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp312-cp312-macosx_10_13_x86_64.whl
- Upload date:
- Size: 366.0 kB
- Tags: CPython 3.12, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8406f2c5a2d90469becd75aa6349a176b4d26c86653bbc03793de50e807d4d3
|
|
| MD5 |
40c339d15c37f18e3a19eec5c2211aaf
|
|
| BLAKE2b-256 |
1e746c00be97c9fa657a5fbda1afdcaccbd7073827956ac6595d914960c1ddb9
|
File details
Details for the file zpaq-0.3.5-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 417.9 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06921e2203514f52ed87a8edbc959024036bd015e447c1e5a48b51b89239266d
|
|
| MD5 |
2be1ab22926b3f0e26836e46c0679a1b
|
|
| BLAKE2b-256 |
7f26526bcf74e599f0ab3d08c4526263649704b002f0fa3dbfefcb65ab2d0cb8
|
File details
Details for the file zpaq-0.3.5-cp311-cp311-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp311-cp311-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.11, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
805eee46ea9d04f23c10d36e4b5d309992320bbbf3b196a54756d6f29c8f9082
|
|
| MD5 |
9f94eeb1f54ae1e21cb1d8c67fb10e04
|
|
| BLAKE2b-256 |
74f1c6b533a0812f5cd7b6bb6c1ff3280480770fd8b3c8f37f8ab9cf5c6a9033
|
File details
Details for the file zpaq-0.3.5-cp311-cp311-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp311-cp311-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 407.6 kB
- Tags: CPython 3.11, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af7cee5fa432636fdce32a3c013a65cc701eb7a0c7debd82d2db575c27ca98f6
|
|
| MD5 |
e5cb9cfce00f94c130a17a1d9a4a358d
|
|
| BLAKE2b-256 |
9d5c7a8fc2652ae1c3fc8776e62dc0fbdf4241703b282106a968bf1e2ccccd99
|
File details
Details for the file zpaq-0.3.5-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 345.2 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d53d121f057972bef6ade385170e51f65486b159fa64098d95d9900aa09e3ea
|
|
| MD5 |
b43301c53725037fab8121db8173f361
|
|
| BLAKE2b-256 |
5b4415bf43ad22c2b74c6f154a913197e7ac768d62b9c5a102c29c04f58dfab9
|
File details
Details for the file zpaq-0.3.5-cp311-cp311-macosx_10_9_x86_64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp311-cp311-macosx_10_9_x86_64.whl
- Upload date:
- Size: 363.3 kB
- Tags: CPython 3.11, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b0a06b4d1f2e94afb23296912bfba46fa885ed8316d5f9055be4b147b92a200
|
|
| MD5 |
847209312da9ea881707e15425cc1c7c
|
|
| BLAKE2b-256 |
ca1fe454f79280ccf1a5a27be6a853e538115cd455635f324478682c1bb9978a
|
File details
Details for the file zpaq-0.3.5-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 418.1 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c634de500c46e46b479efad6ad0378995e66fd9514c7688d643232107ea092a
|
|
| MD5 |
fcd3186a296a1c6a7d1bc34d14604cd5
|
|
| BLAKE2b-256 |
e45ad5a3a5d9e22b40687646054f1e1a9f64c91d610dd89556992862340f1131
|
File details
Details for the file zpaq-0.3.5-cp310-cp310-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp310-cp310-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.10, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
644c8c3a8d486d2c9f9c2546d63d92876c917c18841306e3344b19edd2c3b033
|
|
| MD5 |
79d01f4d801818b639e2422b297900aa
|
|
| BLAKE2b-256 |
54522b42ab01eefc33a61fd137802133e3f3264f0a519e7c60dbc5f1ea45fe0a
|
File details
Details for the file zpaq-0.3.5-cp310-cp310-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp310-cp310-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 406.5 kB
- Tags: CPython 3.10, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc2da002074c498eecce03fada152a03346d14e432768294fd8166b8115bad65
|
|
| MD5 |
8879deae98ee697245e2bd7368383deb
|
|
| BLAKE2b-256 |
9dc8485373e4b785146375d96c4262f8bfe470a06a0ba65c924b1251534ba7e1
|
File details
Details for the file zpaq-0.3.5-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 344.0 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
442f3d1d73ff659a56ac6ab0f10d0c5d722b204dd1e40009a3df8081d8091e8e
|
|
| MD5 |
cbec4463f4951f595d88c5447d590f25
|
|
| BLAKE2b-256 |
99d176cf91a80a208c08a0413c6e082d9eea6c5faa117bf5ba3b9579e9d8b842
|
File details
Details for the file zpaq-0.3.5-cp310-cp310-macosx_10_9_x86_64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp310-cp310-macosx_10_9_x86_64.whl
- Upload date:
- Size: 361.6 kB
- Tags: CPython 3.10, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf361b611674435a9bce8399d55afd977ac15be6dc5fcf993b5cd73bdc17a82a
|
|
| MD5 |
21b3d1902fbd58eb23a81aa5990a3c3e
|
|
| BLAKE2b-256 |
622a11a91f62f5f577361baa7b8d0bc668ed888f114548f95616a715632d9268
|
File details
Details for the file zpaq-0.3.5-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 418.2 kB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c67814a2e241af94ca5d0d1e39f83bc9771b30ca2d266148a4e62253c3b75a9
|
|
| MD5 |
3055656f650a7e2e7ddc0af7675914c2
|
|
| BLAKE2b-256 |
27d33f9d9fc64646ea891e36ccbdd2943c349f3b54896545b375ff1356776ee6
|
File details
Details for the file zpaq-0.3.5-cp39-cp39-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp39-cp39-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.9, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f7d1c4d88e5570fd5fcc3fec01f9e6a290a1b86c41ef4bd04086222d8fcdfe6
|
|
| MD5 |
7aba6833ffc2558dff78296fa915cf5a
|
|
| BLAKE2b-256 |
89032ad3975bf1de9a0d1453ccf3f3ef67baf98e71edb129cbe3be2699647ce8
|
File details
Details for the file zpaq-0.3.5-cp39-cp39-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp39-cp39-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 406.9 kB
- Tags: CPython 3.9, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36894d9bd59db957f64ed7b0174f59ebb3a4d7eeb0889d6f3976b9cbadc30294
|
|
| MD5 |
32f86a6c8fb762518ac71ba06650702f
|
|
| BLAKE2b-256 |
50e36803ff19810d8ff838bf87325add1dec3f398c2f3de7ab2681a60628b44c
|
File details
Details for the file zpaq-0.3.5-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 344.2 kB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83bf1d5be4712602ca0c9aaf4865cb6c3e66c68444daffd299e45fa78d7cba11
|
|
| MD5 |
5eb8c581c22d61cffbdf1ae7e0d4f20f
|
|
| BLAKE2b-256 |
eebf403fdee8f8822503d47aba3fd9f6000e06abd7f9a3c621d68cd114808ac1
|
File details
Details for the file zpaq-0.3.5-cp39-cp39-macosx_10_9_x86_64.whl.
File metadata
- Download URL: zpaq-0.3.5-cp39-cp39-macosx_10_9_x86_64.whl
- Upload date:
- Size: 361.8 kB
- Tags: CPython 3.9, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a49954992530fce899c87e469cd7f3956bea0621e7d9d7bf1bb8ceccb5b39aea
|
|
| MD5 |
abcf317633b674d85704aff46586b31b
|
|
| BLAKE2b-256 |
d10966bbb2bb845bec60415f6301844e51c464cc2728b1699f06f565e6031676
|